- ベストアンサー
ACCESS-VBAでEXCEL出力
ACCESS-VBAで外部accdb内のテーブルデータをEXCEL出力するにはどうしたらできるのでしょうか? 現在、以下の方法で内部のテーブルデータをEXCEL内の名前に紐づけてエクスポートしています。 DoCmd.TransferSpreadsheet acExport, , "データ", "test.xlsx", True
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
DAOのOpenDatabaseを使用した一例です。 DAOやADOは他の処理にも色々と役に立つので、覚えておいて損はないかと。 但しこの方法ではフィールド行が自動で出力されない為、VBA内で手動で設定しています。 (少々難しくなりますがもちろん自動で出力する方法もありますので、もし興味があれば調べてみて下さい。。) Dim db As DAO.Database Dim rs As DAO.Recordset Dim xlapp As Object Set db = OpenDatabase("開きたいaccdbのフルパス") Set rs = db.OpenRecordset("データ") Set xlapp = CreateObject("Excel.Application") xlapp.UserControl = True xlapp.Visible = True xlapp.workbooks.Add With xlapp.activeworkbook.sheets(1) .range("A2").copyfromrecordset rs .range("A1") = "項目1タイトル" '例 .range("B1") = "項目2タイトル" '例 '~以下項目の数だけ設定 End With xlapp.activeworkbook.saveas "保存したいファイル名をフルパスで指定" rs.Close: Set rs = Nothing db.Close: Set db = Nothing Set xlapp = Nothing
その他の回答 (4)
- nicotinism
- ベストアンサー率70% (1019/1452)
YU-TANG さんの 外部 Jet データベースとの接続方法 http://www.f3.dion.ne.jp/~element/msaccess/AcTipsGnrlHowToAttachExternalMdb.html を読んでみてください。 よりどりみどりお好きなのを。 OpenCurrentDatabase が今回のに適当かと思います。 appAcc.DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "テーブル名", "e:\tmp\_mmm.xlsx" みたいに。 注意しなくてはならないのは、中途半端に失敗すると見えないプロセスが残ってしまうこと。 エラー処理は必須です。 また、変だなと思ったらタスクマネージャのプロセスタブで確認を。
- masatsan
- ベストアンサー率15% (179/1159)
追伸; テーブルのリンクはVBAじゃなくて、テーブルの設定で行う。 もちろんVBAでもできるけど。
- masatsan
- ベストアンサー率15% (179/1159)
外部DB(アクセスの)をテーブルリンクすればよいのでは。内部テーブルと同じく扱える。
- masatsan
- ベストアンサー率15% (179/1159)
?それがVBAですけど。
補足
回答ありがとうございます。 少し質問の意図が伝わっていなかったようです。 以下のコーディングはプログラムを書いているaccdbファイル内のテーブルをEXCELにエクスポートできる文です。 DoCmd.TransferSpreadsheet acExport, , "データ", "test.xlsx", True やりたいのは、外部のaccdbファイル内に存在しているテーブルのデータをEXCELにエクスポートしたいのです。 TransferSpreadsheet ではできないのでしょうか? 少しあきらめモードで一旦、自accdbファイルにインポートしてからEXCELにエクスポートしなければ無理かな?と思っています。