AccessのVBAでフォームAからサブフォームBに遷移し、サブフォームBのデータをCSVファイルとして出力するコード

AccessのVBAでフォームAからサブフォームBに遷移し、サブフォームBのデータをCSVファイルとして出力するコードを考えてみます。加えて、必要なものとチェックリストも提示します。


### 1. VBAコード例


```vba

' フォームAのボタンAを押したときに、サブフォームBに移動する処理

Private Sub ボタンA_Click()

    ' フォームAからサブフォームBを表示する

    DoCmd.OpenForm "サブフォームB"

End Sub


' サブフォームBで出力結果をCSVで保存する処理

Private Sub 出力ボタン_Click()


    Dim db As DAO.Database

    Dim rs As DAO.Recordset

    Dim strFilePath As String

    Dim intFileNumber As Integer

    Dim strSQL As String

    Dim i As Integer


    ' 保存するファイルパス(適宜変更してください)

    strFilePath = "C:\Output\SubFormData.csv"


    ' SQLクエリでサブフォームBのデータを取得(クエリ内容は要調整)

    strSQL = "SELECT * FROM サブフォームBの元テーブル"


    ' データベースとレコードセットの設定

    Set db = CurrentDb()

    Set rs = db.OpenRecordset(strSQL)


    ' ファイル番号を取得して、ファイルを開く

    intFileNumber = FreeFile

    Open strFilePath For Output As #intFileNumber


    ' フィールド名をCSVに書き込む

    For i = 0 To rs.Fields.Count - 1

        Print #intFileNumber , rs.Fields(i).Name & IIf(i < rs.Fields.Count - 1, ",", "")

    Next i


    ' レコードをCSVに書き込む

    Do While Not rs.EOF

        For i = 0 To rs.Fields.Count - 1

            Print #intFileNumber , rs.Fields(i).Value & IIf(i < rs.Fields.Count - 1, ",", "")

        Next i

        rs.MoveNext

    Loop


    ' ファイルとレコードセットを閉じる

    Close #intFileNumber

    rs.Close

    Set rs = Nothing

    Set db = Nothing


    MsgBox "CSVファイルを出力しました。"


End Sub

```

ここから先は

679字

¥ 500

この記事が気に入ったらサポートをしてみませんか?