パソコン情報

【Access】ダイヤログからファイル名設定しCSVファイルをエクスポートする方法

 

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ファイルに出力する場合には便利ですね。