- 締切済み
EXCELVBAでADOにてデータ更新(削除)がうまくいかない。
EXCELファイル(DB.XLS)とEXCELファイル(入力.XLS)を用意し、入力.XLSからデータベース.XLSへ更新処理を行いたいのですが削除処理がうまくいきません。 現状はADOにて表示、追加、修正、削除をしようと考えており下記記述(1)で削除処理を書いているのですが「クエリーが複雑すぎます。」エラーが発生しています。 又、別削除処理としてDim MYCMD As ADODB.CommandからMYCMD.CommandText = "DELETE FROM [データベース$] WHERE 日付 = " & Range("D4")でMYCMD.Executeしても行削除ができません。 これはhttp://support.microsoft.com/default.aspx?scid=kb;ja;257819にも記載があるように仕様なのかもしれませんが・・・ ただ、Worksheets("データベース").Rows(2).Deleteのように同一のブック内にデータベースがあれば削除可能でした。 別ファイル(DB.xls)の行削除はできないのでしょうか?特にADOでなくてもかまいませんが、できるだけOS側の設定は手動設定させたくないです。 OS:WindwsXP SP2 ソフト:Microsoft Excel2003 ※表示(select)、追加(.AddNew)は下記記述(1)と少し異なりますが可能でした。 ''入力.XLSの記述(1) ''**********削除処理2 ADO[Microsoft.Jet.OLEDB.4.0] クエリーが複雑すぎますのエラー Dim strCn As String Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim test_sql As String strCn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & ThisWorkbook.Path & "\DB.xls;" & _ "Extended Properties=Excel 8.0" Set cn = New ADODB.Connection cn.Open strCn Set rs = New ADODB.RecordsetEXCEL With rs .CursorLocation = adUseClient .Open "Select * from [データベース$]", cn, adOpenStatic, adLockOptimistic Do test_sql = "日付 = " & Range("D4") rs.Find test_sql If rs.EOF = True Then Exit Do rs.Delete 'ここでエラー Loop .Update .Close End With Set rs = Nothing cn.Close Set cn = Nothing ''***********
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- onlyrom
- ベストアンサー率59% (228/384)