dポイントプレゼントキャンペーン実施中!

ACCESS-VBAで外部accdb内のテーブルデータをEXCEL出力するにはどうしたらできるのでしょうか?

現在、以下の方法で内部のテーブルデータをEXCEL内の名前に紐づけてエクスポートしています。

DoCmd.TransferSpreadsheet acExport, , "データ", "test.xlsx", True

A 回答 (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
    • good
    • 0

YU-TANG さんの


外部 Jet データベースとの接続方法
http://www.f3.dion.ne.jp/~element/msaccess/AcTip …
を読んでみてください。
よりどりみどりお好きなのを。

OpenCurrentDatabase が今回のに適当かと思います。
appAcc.DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "テーブル名", "e:\tmp\_mmm.xlsx" みたいに。
注意しなくてはならないのは、中途半端に失敗すると見えないプロセスが残ってしまうこと。
エラー処理は必須です。
また、変だなと思ったらタスクマネージャのプロセスタブで確認を。
    • good
    • 0

追伸;


テーブルのリンクはVBAじゃなくて、テーブルの設定で行う。
もちろんVBAでもできるけど。
    • good
    • 0

外部DB(アクセスの)をテーブルリンクすればよいのでは。

内部テーブルと同じく扱える。
    • good
    • 0

?それがVBAですけど。

この回答への補足

回答ありがとうございます。
少し質問の意図が伝わっていなかったようです。
以下のコーディングはプログラムを書いているaccdbファイル内のテーブルをEXCELにエクスポートできる文です。

DoCmd.TransferSpreadsheet acExport, , "データ", "test.xlsx", True

やりたいのは、外部のaccdbファイル内に存在しているテーブルのデータをEXCELにエクスポートしたいのです。
TransferSpreadsheet
ではできないのでしょうか?
少しあきらめモードで一旦、自accdbファイルにインポートしてからEXCELにエクスポートしなければ無理かな?と思っています。

補足日時:2013/11/14 16:42
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!