みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel VBA Accessでデータ取り込み

Excel VBA、Access VBAについてお教え下さい。

「My_Excel.xlsm」というファイルがあります。このファイルにはボタンが1つあります。
このボタンを押すことにより、「Imp_Excel.xlsx」というファイルを取り込みたいと思います。

取り込み先ですが、「My_Excel.xlsm」に取込むのではなく、Accessの「My_Access.accdb」の「T_MyTable」というテーブルに取り込みたいと思っています。

Accessから直に「Imp_Excel.xlsx」をインポートするには、TransferSpreadsheetを用いれば比較的簡単にデータをAccessに取り込むことができるのですが、「My_Excel.xlsm」をまたいでAccessに取り込みたいので、TransferSpreadsheetは使えません。

やり方としては、
My_Excel.xlsxを開く。
レコードセット取得。
レコードセットがEOFになるまでまわして、SQLのINSERT、またはAddNewメソッドを使用して1件1件挿入していくしか方法はないでしょうか?

今のところ、私が思い浮かぶのは上記の方法なのですが、何かもっと簡単にやれるような方法はあるでしょうか?よろしくお願いします。

投稿日時 - 2014-11-14 18:46:44

QNo.8825029

困ってます

質問者が選んだベストアンサー

Access上でTransferSpreadsheetを使用して出来ているのなら
オートメーションでExcelからAccessを操作。
参照設定で、Microsoft Access 14.0 Object Library にチェックを入れて
(14.0はそちらの環境によって変わります)
My_Excel.xlsm で
Sub test1()
Dim Acc As Access.Application
Set Acc = CreateObject("Access.Application")
Acc.OpenCurrentDatabase ("D:\My_Access.accdb")
Acc.DoCmd.TransferSpreadsheet , ・・・中略
Acc.CloseCurrentDatabase
Acc.Quit
Set Acc = Nothing
End Sub

あるいはAccessでマクロ(VBAじゃなく)を作成しておいて
My_Excel.xlsm では Shell関数で
Shell("C:\Program ・・・・\MsAccess.exe D:\My_Access.accdb /x マクロ名")
http://office.microsoft.com/ja-jp/access-help/HA010166605.aspx
とか。

投稿日時 - 2014-11-15 09:18:59

お礼

なるほど、勉強になりました!ありがとうございます。

投稿日時 - 2014-12-02 15:12:32

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問