2022年8月19日金曜日

accessのテーブルを固定長テキストファイルにエクスポートするのにDocmd.transfertextではなく、print(vba)を使ったというお話。

DoCmd.TransferTextでacExportFixedを指定してのテキスト出力すると、「specification name/定義名が必要です」とか言われて、面倒くさいので、テーブルの内容をprintするvbaを書いてみた。
adoでもdaoでもどちらでも良いので、参照設定で、ライブラリを設定し、テーブルの内容を1個ずつ、printで吐き出せば良い。これだけだ。
specificationNameに悩まされることもなく、テキストファイルが得られる。accessのtblAがフィールドが1つのテーブルであったと仮定し、DAOで書くと

Sub ExportText()
  Dim dbs as Database '参照設定でDAOを設定せよ
  Dim rs  as RecordSet
  Dim IngFileNum as Long
  Dim strOutPut as String
  Dim path1 as String
  Dim file1 as String
  path1 = CurrentProject.path & "¥OUTPUT¥"
  file1 = "tblA.txt"
  IngFileNum = FreeFile()
  Open path1 & file1 For OutPut As #IngFileNum
  Set dbs = CurrentDb
  Set rst = dbs.OpenRecordset("tblA") 
  With rst
    do Until .EOF
      print #IngFileNum,rst(0) &  vbCrLf; 'tblAにはフィールドが1つ
      .MoveNext
    Loop
    .Close
  End With
  Close #IngFileNum
End Sub

0 件のコメント:

コメントを投稿