🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

1回答

3569閲覧

[Excel VBA]Access 定義済みアクションクエリをExcelマクロから実行する

woria

総合スコア36

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

1クリップ

投稿2019/11/19 05:48

編集2019/11/19 08:28

やりたいこと

Accessアプリケーションを開かずに定義済みのUpdateクエリとDeleteクエリを実行後、
本命のテーブルからデータを取得したい

SQLクエリ

Q_Update

SQL

1UPDATE T_Pass_RPA RIGHT JOIN T_Pass ON (T_Pass_RPA.System_Name = T_Pass.System_Name) AND (T_Pass_RPA.Syain_ID= T_Pass.Syain_ID) SET T_Pass_RPA.Syain_ID = T_Pass.Syain_ID, T_Pass_RPA.System_Name = T_Pass.System_Name, T_Pass_RPA.[Password] = T_Pass.[Password];

Q_Delete

SQL

1DELETE T_Pass.* 2FROM T_Pass;

試したこと

ADODB.Commandによるコマンド実行の場合、「SQL ステートメントが不正です」エラー

vba

1 Dim strDB As String: strDB = "C:hoge.accdb" 2 Dim cn As ADODB.Connection: Set cn = New ADODB.Connection 3 cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""" & strDB & """" 4 5 Dim cm As ADODB.Command: Set cm = New ADODB.Command 6 With cm 7 .ActiveConnection = cn 8 .CommandText = "Q_Update" 9 .Execute 'ここでエラー 10 End With 11

Accessアプリケーションを起動してDoCmd.OpenQueryを行うこともできるが、アプリを開く分遅くなる

vba

1 Dim oApp As Access.Application: Set oApp = New Access.Application 2 With oApp 3 .OpenCurrentDatabase "C:hoge.accdb" 4 .DoCmd.OpenQuery "Q_Update", acViewNormal, acEdit 5 .DoCmd.OpenQuery "Q_Delete", acViewNormal, acEdit 6 .CloseCurrentDatabase 7 .Quit 8 End With

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatena19

2019/11/19 08:02

そのコードで普通に実行できると思いますけど。(念のために、サンプル作成して確認済み) 「SQL ステートメントが不正です」→ SQL ステートメントが間違っているのでは?
woria

2019/11/19 08:30

後日SQLクエリを変更して実行してみます。
guest

回答1

0

コード自体に問題はないです。当方でサンプルを作成して実行してみましたが、エラーなく実行できました。

まずは参照先のAccessファイルを開いて、更新クエリがエラーなく実行できるか確認してみてください。

もし、更新クエリに抽出条件が設定してあるなら、下記のアップデートによるバグが関係しているかもしれません。

2019年11月アップデート(KB4484113、KB4484119、KB4484127ʌ - マイクロソフト コミュニティ


追記されたSQLを見ると、抽出条件は設定されてないので、上記のバグは関係なさそうです。
また、Executeでエラーになり、OpenQueryだとエラーにならない場合、クエリがパラメータクエリということが考えられますが、それでもないですね。

症状を再現できるテーブル構成、データ例を提示してもらえると、いろいろ検証できるのですが。

投稿2019/11/19 08:31

編集2019/11/20 00:33
hatena19

総合スコア34073

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問