- 締切済み
エクスポートの質問です
access2007でテーブルをエクスポートを行いたいのですが、なかなかできす苦労しています。 VBAでの構文にて、変換後のファイルは、 (1)TSVファイル形式 (2)区切り記号は " ^ " (3)フィールド名を先頭行に作成し、2行目からデータの変換を行う。 (4)できればソートしてから変換 上記の作業です。 どなたか、VBA構文でわかる方がいらっしゃいましたら助けて下さい。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- MARU4812
- ベストアンサー率43% (196/452)
> ちなみに、accessフォーラムで拾った例文があり、入れてみたのですが、 > これではフィールド名が先頭行にできず・・でした。 .Execute(strSQL) の結果として Recordset が返って その GetString でデータだけを取得するコードですので フィールド名を先頭行に出力しないプログラムだという だけです。 Recordset のフィールド名は、Fields(index).Name で取れます。 http://www.moug.net/tech/exvba/0030002.html フィールド名を出力するコードを追加すればいいと思います。
- imogasi
- ベストアンサー率27% (4737/17069)
(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", ーーーーーーーー このカンマをタブ記号に置き換えるとかできれば、速いよね。
お礼
ありがとうございました。 なんとかできました。 Appendモードで開き、ひと手間はかかりますが、 1行目にフィールド名を作成し、2行目からGetStringでデータを追加して 思い通りのファイルができあがりました。 imogasiさんの、お言葉が参考になりました。 ありがとうございました。
補足
ありがとうございます。 そうですね。 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