パソコン(ソフト)

【Access】エクスポートするフォルダを選択指定してCSVファイルをエクスポートする方法

前回は、マイクロソフトアクセス(Accessデータベース)で、テーブルをCSVファイルでエクスポートする時に、その都度フォルダーを選択指定できる方法でエクスポートしました。

【Access】日付付きCSVファイルを都度指定したフォルダに出力する方法

 

今回は、最初にエクスポートするフォルダーを指定してしまい、

ココがポイント

その都度フォルダー指定をしないでエクスポートする方法

を解説したいと思います。

 

テーブルとフォームを準備

その都度ダイヤログを表示させてフォルダー選択をしなくても済むように、指定したフォルダをテーブルのレコードとして保存しておく必要があります。

●テーブル作成

export_folder」とういテーブルを作成して、フィールドには、IDとfolderというものを準備しました。

●フォーム作成

フォームの方は、最初にエクスポートするフォルダを指定する為のフォームになります。

Access csv export

フォルダしてのテキストボックスには、「view_folder」とう名前にしました。

フォルダ選択ボタンには、「select_folder」という名前にしました。

 

FunctionコードとVBAコードを設定

まずは何も考えずに、標準モジュールに下記のFunctionコードを設置しました。

 

'--------------------------------------------------------------------
'フォルダ選択ダイアログ
'---------------------------------------------------------------------
 
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 = "C:\"
        End If
    End With
 
End Function

 

次に、フォルダ選択ボタン「select_folder」のクリック時のアクションにVBAコードを設置しました。

Private Sub select_folder_Click()

Me.view_folder = getFolderName("c:\")

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim SQL As String
 
On Error GoTo ErrRtn

SQL = "SELECT * FROM export_folder WHERE ID = 1"
 
Set cn = CurrentProject.Connection
rs.Open SQL, cn, adOpenKeyset, adLockOptimistic
 
        cn.BeginTrans
         
        While Not rs.EOF
 
            rs!folder = view_folder
 
        rs.Update
        rs.MoveNext
        Wend
 
        cn.CommitTrans

ExitErrRtn:
    DoCmd.ShowAllRecords
    rs.Close: Set rs = Nothing
    cn.Close: Set cn = Nothing
    Exit Sub
 
ErrRtn:
    MsgBox "エラー: " & Err.description
    cn.RollbackTrans
    rs.Close: Set rs = Nothing
    cn.Close: Set cn = Nothing

End Sub

 

Me.view_folder = getFolderName("c:\")

このコードで、フォルダーをダイヤログで選択して、テキストボックス「view_folder」にフォルダーの場所を表示させます。

表示させたら、その下のコードで、「export_folder」テーブルのID=1のフィールドの、folderフィールドに、テキストボックス「view_folder」にフォルダーの場所を書き込みします。

本当はレコードセットやエラー処理などは必要ないのかもしれませんが、いちおう対応しておきました。

 

フォームが開くタイミングでテーブルから読込

フォルダー選択フォーム画面を起動したときに、「export_folder」テーブルのID=1のフィールドの、folderフィールドからフォルダーの場所を表示させる為に、下記の様なVBAを設置しました。

 

 

Private Sub Form_Open(Cancel As Integer)
    Me.view_folder = DLookup("folder", "export_folder", "ID=1")
End Sub

 

 

エクスポートボタンにVBAを設置

あとは、適当はフォームにエクスポートボタンを設置して、下記のコードを設置すれば、指定されたフォルダーにいつもエクスポートされたファイルが蓄積されることになります。

 

Private Sub export_btn_Click()

 Dim FolderName As String
 
 On Error GoTo ErrRtn
  
    FolderName = DLookup("folder", "export_folder", "ID=1")
    
    DoCmd.TransferText acExportDelim, , "エクスポートテーブル", FolderName & "\テスト_" & Format(Now(), "yyyymmdd") & ".csv", True

ExitErrRtn:
    MsgBox "指定されたフォルダにエクスポートしました。"
    Exit Sub
 
ErrRtn:
    MsgBox "エラー: " & Err.description

End Sub

 

 

 

-パソコン(ソフト)
-, , , , , , , ,

Translate »

© 2021 PCTips