• 締切済み

エクスポートの質問です

access2007でテーブルをエクスポートを行いたいのですが、なかなかできす苦労しています。 VBAでの構文にて、変換後のファイルは、 (1)TSVファイル形式 (2)区切り記号は " ^ " (3)フィールド名を先頭行に作成し、2行目からデータの変換を行う。 (4)できればソートしてから変換 上記の作業です。 どなたか、VBA構文でわかる方がいらっしゃいましたら助けて下さい。

みんなの回答

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.2

> ちなみに、accessフォーラムで拾った例文があり、入れてみたのですが、 > これではフィールド名が先頭行にできず・・でした。 .Execute(strSQL) の結果として Recordset が返って その GetString でデータだけを取得するコードですので フィールド名を先頭行に出力しないプログラムだという だけです。 Recordset のフィールド名は、Fields(index).Name で取れます。 http://www.moug.net/tech/exvba/0030002.html フィールド名を出力するコードを追加すればいいと思います。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

(1)ADOなどで1レコードずつ読んで、テキストファイルの文字列を作れば仕舞い。 コードは書かないからWEBで調べて。 (2)質問と違うが、CSVだか Sub test03() DoCmd.TransferText acExportDelim, , "社員3", "C:\Documents and Settings\XXXX\My Documents\テスト.csv", True End Sub と1行で出来上がるのも在る。これで辛抱できないか。フィールドも出しも 実行例 "ID","社員番号","氏名","住所","電話","地区","国語点数","登録日付","職場","氏名2","数学点数","英語点数","フリガナ" 1,1,"山田 三郎","東京都大田区","03-2345-6543","関東",12,"2007/12/3",1,"山田 三朗",45,"34","ヤマダ サブロウ" 2,2,"大島 義男","東京都品川区","042-2345-2345","関東",23,"2007/12/3",3,"大島 義男",84,"45", 4,4,"小出 健二","名古屋市緑区","042-345-2345","中部",21,"2007/12/3",2,"小出 健二",56,"56", ーーーーーーーー このカンマをタブ記号に置き換えるとかできれば、速いよね。

ozamegu777
質問者

お礼

ありがとうございました。 なんとかできました。 Appendモードで開き、ひと手間はかかりますが、 1行目にフィールド名を作成し、2行目からGetStringでデータを追加して 思い通りのファイルができあがりました。 imogasiさんの、お言葉が参考になりました。 ありがとうございました。

ozamegu777
質問者

補足

ありがとうございます。 そうですね。 1レコードづつ読んで、文字列にする事もありですね。 ちなみに、accessフォーラムで拾った例文があり、入れてみたのですが、 これではフィールド名が先頭行にできず・・でした。・・ Public Sub Sample()   Const TBLNAME As String = "テーブル名"   Dim lngFileNumber As Long   Dim strFileName As String   Dim strSQL As String   With CurrentProject.Connection     strSQL = "SELECT Count(*) FROM " & TBLNAME & ";"     If .Execute(strSQL).Collect(0) = 0 Then Exit Sub     strFileName = CreateObject("WScript.Shell") _              .SpecialFolders("Desktop") _           & "\ExportTest.tsv"     With CreateObject("Scripting.FileSystemObject")       If Not .FileExists(strFileName) Then         .CreateTextFile strFileName       End If     End With     lngFileNumber = FreeFile()     Open strFileName For Output As #lngFileNumber     strSQL = "SELECT * FROM " & TBLNAME & " ORDER BY 1 ;"     With .Execute(strSQL)       Print #lngFileNumber _         , .GetString( _                StringFormat:=adClipString _               , ColumnDelimeter:= "^" _               , RowDelimeter:=vbNewLine _          );       .Close     End With     Close #lngFileNumber   End With End Sub

関連するQ&A