質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

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

Access

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

Q&A

解決済

1回答

1087閲覧

Excel VBAを用いてACCESSクエリを実行したい

gymgym

総合スコア97

VBA

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

Access

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

0グッド

0クリップ

投稿2022/09/01 06:35

前提

ACCESS上でクエリを実行する際に、添付画像のような画面でドライバに接続してから実行結果を取得しています。
このクエリの実行結果をExcel VBAで処理したいため、VBAでACCESSに接続し、クエリを実行したいと考えています。

イメージ説明

実現したいこと

Excel VBAを用いて、Oracle ODBCの接続込でACCESSクエリを実行したいです。
同じACCESSファイル内には、Oracle ODBCの接続なしで実行できるクエリもありますが、そのクエリは下記の該当のソースコードで実行できます。今回のクエリも同様にVBAで実行して、結果をExcelファイルに貼り付けたいです。

該当のソースコード

VBA

1Private Sub Sample() 2 3 Dim cnn As ADODB.Connection 4 Dim rst As ADODB.Recordset 5 Dim cmd As ADODB.Command 6 7 Dim count As Integer 8 9 ' コネクションをセットし、Accessを開く 10 Set cnn = New ADODB.Connection 11 cnn.Provider = "Microsoft.Ace.OLEDB.12.0;" 12 ' Accessファイルを設定する 13 cnn.Open "C:\sample.accdb" 14 15 ' コマンドをセット 16 Set cmd = New ADODB.Command 17 Set cmd.ActiveConnection = cnn 18 19 cmd.CommandText = "クエリ1" ' クエリを設定 20 21 'レコードセットをセットし、パラメータを指定して実行 22 Set rst = New ADODB.Recordset 23 Set rst = cmd.Execute() 24 25 'レコードを貼り付ける 26 Sheets("新規登録アイテム").Range("A" & count + 1).CopyFromRecordset rst 27 28End Sub

試したこと

ACCESSファイルの接続の際に、パスワードを指定してみましたがうまくいきませんでした。

cnn.Provider = "Microsoft.Ace.OLEDB.12.0;" & "Jet OLEDB:Database Password=Pass;"

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

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

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

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

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

sazi

2022/09/01 08:11

具体的にどのように上手くいっていないのですか? 「Oracle ODBCの接続」ウインドウすら表示されない状況でしょうか?
gymgym

2022/09/01 13:59

VBAは実行でき、エラー画面などは特に出ません。しかし、クエリの実行結果がエクセルに貼り付けられず、処理が終了してしまいます。「Oracle ODBCの接続」ウインドウすら表示されないです。 Access上では正常にクエリは実行できます。
sazi

2022/09/01 14:47

仮に「Oracle ODBCの接続」ダイアログウインドウが表示されたとして、そのウインドウにパスワードを自動で入力するような動きをしないと出来ませんので、Accessが今の作りのまま経由するというのは無理でしょうね。
guest

回答1

0

ベストアンサー

ACCESSのクエリーの内容をVBAに展開して実行する事をお薦めします。
以下参考
Excel VBAからODBCを使ってデータを簡単に取得する

投稿2022/09/01 14:51

sazi

総合スコア25195

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

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

gymgym

2022/09/02 01:19

ありがとうございます。想定通り実行できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問