• 締切済み

エクセルVBAでアクセスの更新クエリを実行

エクセルVBAでアクセスの更新クエリを実行する方法はありますか? アクセスもエクセルも常に起動している状態です。 エクセルからアクセスの更新クエリを実行するコードを教えてください。 アクセスで実行するとしたら Sub test1() DoCmd.OpenQuery "更新クエリ" End Sub というコードになります。 できれば、ADODBを使ったやり方がいいのですが、 エクセルからアクセスのプロシージャーのtest1を呼ぶしかないのでしょうか?

みんなの回答

回答No.1

そちらの環境が不明なので、Office2010だとこんな風? Sub test() Dim cN As Object 'ADODB.Connection '←参照設定してある場合はこっち Dim sSql As String Dim rS As ADODB.Recordset On Error GoTo errH Set cN = CreateObject("adodb.connection") With cN .Provider = "Microsoft.ACE.OLEDB.12.0" .Properties("Data Source").Value = "E:tmp\祝日DB.accdb" .Properties("Jet OLEDB:Database Password").Value = "" End With cN.Open sSql = "UPDATE 祝日 SET 名称='おとなの日' WHERE 名称 Like 'こども%' ;" cN.BeginTrans cN.Execute sSql cN.CommitTrans errH: If Err.Number <> 0 Then cN.RollbackTrans Debug.Print Err.Number & " " & Err.Description MsgBox Err.Number & vbNewLine & Err.Description Else MsgBox "終了しました" End If cN.Close: Set cN = Nothing End Sub 余計?な解説 ADOで接続してAccessのクエリをそのまんま流用は出来ないかと。 上記のようにワイルドカード * ⇔ % の問題もありますし。 クエリのSQL文を少し手直しする必要も出て来るかと。 たまたまAccess側でデータ編集中・・を考えてエラー処理を入れてはいますが、 トランザクション処理に関しては自信がありません。。。