過去の記事に、Access(マイクロソフトアクセス=データベース)で、テーブルをCSVとエクセルにエクスポートする方法を書いたことがあります。その時には、ファイルの保存先とファイル名を都度指定してエクスポートさせました。
https://pctips.jp/pc-soft/access-export-csv20200320/
今回のエクスポート方法は、
ココがポイント
ファイルの出力フォルダだけを指定して日付付加したCSVファイル名でエクスポートする方法
になります。
参考サイト様に感謝
自分の記事自体参考サイト様の丸写しのようになっていますが下記のサイト様を参考にさせて頂きました。
標準モジュールにコードを追加
参考サイト様のコードを何も考えずに標準モジュールに追加しました。
'-------------------------------------------------------------------- 'フォルダ選択ダイアログ '--------------------------------------------------------------------- Public Function getFolderName(tmpFilePath As String) As String Dim intret As Integer With Application.FileDialog(msoFileDialogFolderPicker) 'ダイアログのタイトルを設定 .Title = "フォルダ選択ダイアログ" 'デフォルトのフォルダパス .InitialFileName = tmpFilePath 'ダイアログを表示 intret = .Show If intret <> 0 Then 'フォルダが選択されたとき戻り値に設定 getFolderName = Trim(.SelectedItems.Item(1)) Else 'フォルダが選択されなければ長さゼロの文字列を返す getFolderName = "" End If End With End Function
エクスポートボタンにVBA
フォームのエクスポートボタンに下記のVBAコードを埋込ます。
Private Sub export_btn_Click() Dim FolderName As String FolderName = getFolderName("") '引数に初期値のフォルダーパスを設定、""にするとドキュメントフォルダー If FolderName = "" Then MsgBox "キャンセルされました。" Else DoCmd.TransferText acExportDelim, , "OUTPUT_TABLE", FolderName & "\テスト_" & Format(Now(), "yyyymmdd_hhnnss") & ".csv", True End If
- 「FolderName」に開いたダイヤログ画面で指定したフォルダ名が入ります。
- 「"\テスト_"」の部分は、”\”となっていますが、"¥"なので注意してください。
- 「Format(Now(), "yyyymmdd_hhnnss")」の部分が日付と時間をファイル名に
付加した部分になります。
実際にエクスポートを試す
フォーム画面のエクスポートボタンをクリックするとフォルダーを指定する
ダイヤログが表示されました。
試しに、Disktopを選択してOKをしました。
ちゃんと思ったような動きをしてくれて、アクセスのテーブル内容を
成功ポイント
日付付のCSVファイルに出力
してくれました。
※エクセルアイコンになっているのは、CSVファイルオープン設定が
エクセルになっているからです。
最初からフォルダ固定にしてしまうなら今回のようなFunctionコードも必要ないのですが、
人それぞれに保存したいフォルダが違う場合などは便利な方法ですね。