Access(マイクロソフトアクセス)からテーブルのデータをCSVファイルとして出力したい時があります。それがいつも同じファイル名や決まったフォームならいいのですが、
ココがポイント
エクスポートする度にダイヤログを表示させてファイル名を設定してエクスポート
したいという時の方法になります。
やりたいことの前準備
やりたいことの前準備として、サンプルで
テーブル「商品_tbl」 と フォームに処理するためのボタン「CSV出力」を設置しました。
テーブル内のデータは、下記の様になります。
ダイヤログを表示させるための参照設定
いきなり、VBAを実行させてもエラーになります。
ダイヤログを表示させるために、参照設定が必要になります。
VBAのエディター画面のメニューから、ツール>>参照設定>>と進んで
ココに注意
Microsoft Office 16.0 Object Library
にチェックを入れることが必要です。
VBAコードをボタンに設定
いろいろとネットを探し回って下記のサイトを参考にさせていただきました。
というより丸パクリですね。ありがとうございます!!
DoCmd.TransferText acExportDelim, , "Q_出力リスト", varFile, True
ちょっと参考サイトのコードに、私は勘違いをして、Accessのエクスポート定義をいれていましたが、「Q_出力リスト」となっている部分には、エクスポートしたいテーブル名を入れればOKです。
Private Sub csv_output_btn_Click() Dim dlgSA As FileDialog Dim varFile As Variant Set dlgSA = Application.FileDialog(msoFileDialogSaveAs) 'ダイアログ表示 dlgSA.Show '出力 For Each varFile In dlgSA.SelectedItems If Right(varFile, 4) = ".xls" Then DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "商品_tbl", varFile, True ElseIf Right(varFile, 4) = ".csv" Then DoCmd.TransferText acExportDelim, , "商品_tbl", varFile, True Else MsgBox "Excel形式か、CSV形式にしか出力できません。", vbOKOnly, cSysName Set dlgSA = Nothing Exit Sub End If Next Set dlgSA = Nothing End Sub
CSVファイルに名前を付けて保存
CSV出力ボタンをクリックするとダイヤログが開き、「test.csv」とやって保存を押したら、ちゃんと出力されました。
VBAのコードをみると、
Right(varFile, 4)
この部分で、
ポイント
拡張子を.csvにすれば、CSVファイルとして出力されるし、.xlsとすればエクセルファイルとして出力
される。
ファイル名を指定してCSVファイルに出力する場合には便利ですね。