ここから本文です

excelのVBAで、お伺いしたいことがあります。 VBAでexcelからAccessに接続し、Acc...

rbi********さん

2019/5/2602:01:16

excelのVBAで、お伺いしたいことがあります。
VBAでexcelからAccessに接続し、Accessにある複数のテーブルを結合させてデータを抽出し、excelに貼り付けたいと考えています。

インターネッ

トで調べて、excelのVBAにSQLのselect文を書き、その中でLEFT JOINを書けば出来ると分かったのですが、実際うまくいきません。

SQLで読み込み、レコードセットに入れるところで、「JOIN操作の構文エラーです。」とエラーが出ます。

何か分かるでしょうか。
OSはWindows10、excel、Accessは共に2019です。

閲覧数:
35
回答数:
3

違反報告

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

プロフィール画像

カテゴリマスター

nor********さん

2019/5/2609:59:18

Microsoftはもうサポートやめたいと思っているかもしれませんがADO経由でRecordsetを取得できると思います。
注意点としては抽出条件をSQLのテキストとして組み立ててRecordsetをOpenしないと更新可能なRecordsetとして扱えない点とSQLインジェクションのリスク、処理パフォーマンスでしょうか。
読み取り専用のRecordsetでよければCommandオブジェクトからParameter設定して実行するというのはあります。
JOINなどはACCESS側のクエリとしないとうまく動作しないことがあります。

取得したRecordsetをcopyFromRecordsetでシートに貼り付ける(事前に該当シートはクリアしておく)というのが高速ではあります。

クリップボード経由でデータを持ってくるやり方は処理時間がかかる場合、その間他のアプリケーションでコピー&ペーストを実行できない、貼り付け処理結果がおかしくなるので自分はできるだけ避けるようにしています。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

ame********さん

2019/5/2611:32:02

adoのレコードセットですね。
私も苦労しました。
何か文が間違ってるんだと思います。
頑張ってください。

tac********さん

2019/5/2607:32:43

アクセスでクエリを作り、動作を確認し、そのSQL文を使うのが一番簡単で正確だと思います。

検索条件等の変数にしたい部分を修正します。

エクセル上でSQLを実行するにはエクセル側にテーブルが必要になると思います、それよりもエクセル側からアクセスのモジュールを呼び出すような方法の方が簡単だと思いますが・・・

表のデータはクリップボード経由でエクセルに持ってくるとか、
CSVで一旦書き出すとか・・・


<ExcelからAccessのモジュールを呼んでみました>
http://www.ken3.org/vba/backno/vba016.html

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

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

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

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

閉じる

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

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

閉じる