ここから本文です

INSERT文の構文エラーが解決できず困っています。 これまでVBAでSELECT文は...

tsu********さん

2012/3/1112:52:54

INSERT文の構文エラーが解決できず困っています。

これまでVBAでSELECT文は使っていましたが、初めてテーブルの更新を
試しています。
更新対象がAccessでなくExcelというのも初めてです。

あるExcelの名前定義をした領域をデータベースとして、別のブックからVBAで
INSERT文によってデータを追加しようとしました。ADOで接続しいてます。

「INSERT INTO ステートメントの構文エラーです」のエラーになります。
SQL文は
『strSQL = "insert into DataArea (NO,NAME,AREA) values ( '12345678902','abc','koko' )"』
と書きました。
テーブル名や項目名が間違ているのかと、INSERTをSELECTに変えてみると
エラーは表示されません。
『strSQL = "select NO,NAME,AREA from DataArea"』

ADOの接続も含めたコードを下記に示します。
ご教示いただければ助かります。

Set dbCon = New ADODB.Connection
With dbCon
.Provider = cnsProvider
.Properties(cnsExtProp) = cnsExcel
.Open ThisWorkbook.Path & cnsYen & cnsDBName
End With
' SQL文作成
strSQL = "insert into DataArea (NO,NAME,AREA) values ( '12345678902','abc','koko' )"
' strSQL = "select NO,NAME,AREA from DataArea"

dbCon.Execute (strSQL)

dbCon.Close
Set dbCon = Nothing

補足【補足】なぜExeclに対してVBAでINSERTを実行しようとしているか補足します。

DBはできればAccessを使用したいのですが、予算的に無理かもしれません。
であればMySQLと思ったのですが、「そんな知らないソフトは使ってはだめ」
となりそうです。が、どちらも希望はまだあります。
なので、まずはExcelで名前を付けた領域をDBとして、VBAを作成して
デモを行い、のちのちExcelから移行したいと思っています。

Set dbCon,strSQL,'koko',select NO,With dbCon,VB.NET2010,Excel VBA

閲覧数:
7,120
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

myn********さん

編集あり2012/3/1115:59:01

EXCELの抽出にSQLを用いるのはわかるけど 挿入つまり追加するのに
わざわざ SQLで行う理由がわかりまっせんが?・・・・

ただ単にVBAで bookを開いて 最後尾の行に追加するだけでいいのでは?
もし。並べ替えしたいならそのままEXELのソート機能を使えばできますし。

++++++++++++++++++ <2012/03/11 追記 15:51 >++++++++++++++++++++++

>>DBはできればAccessを使用したいのですが、予算的に無理かもしれません。
>> であればMySQLと思ったのですが、「そんな知らないソフトは使ってはだめ」

無料DBは Mysql のほかにも Microsoft SQL Server 2008 express

ダウンロード => http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=58ce...

もあります。

Excel VBA でないと決め込んでいますが 無料のVB.NET 2010 などもあります。

だからACCESSがないからというのは理由にはならないと思うのですけど。


★Visual Studio 2010 Express のサイト(無料のVB.NET 2010)

http://www.microsoft.com/japan/msdn/vstudio/express/

まずは 勉強が必要かと思いますので 以下サイトなどを参考にしてください。

(1) SQL Server 2008 自習書シリーズ
http://msdn.microsoft.com/ja-jp/sqlserver/cc720685

(2) web上のmdbをDAOで開く
http://okwave.jp/qa/q2922400.html

(3) VB2005でDB接続
http://okwave.jp/qa/q3566660.html

(4) ADOでExcelワークシートに接続
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_130_090.html

(5) Excelと外部データベースとを連携させる
http://www.atmarkit.co.jp/fwin2k/win2ktips/296exceldb/exceldb.html

質問した人からのコメント

2012/3/11 16:20:54

降参 Microsoftからも無料のDBが出ているとは知りませんでした。

ちなみに、今回のExcelへのInsertは
「strSQL = "INSERT INTO [Sheet1$] VALUES('12345678902','abc','koko')"」
と、項目名を省略したらできました。
『(4) ADOでExcelワークシートに接続』を
参考にしていたのですがわからず、試行錯誤でやっているうち
できてしまった感じです。

これから勉強していきます。参考資料をたくさんありがとうございました。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる