フィールド名も書き出す
Sub テキストファイルに書き込む2()
'フィールド名も書き出す
Dim myCon As New ADODB.Connection, myRS As New ADODB.Recordset
Dim myExcelFile As String, myTbl As String, myTxtFile As String
Dim tmpFldArray() As String, i As Integer
'データのあるExcelファイル
myExcelFile = ThisWorkbook.Path & "\xls\DataBook.xls"
'書き出すデータ
myTbl = "select * from [伝票一覧$] where 担当者 = '増田';"
'テキストファイル名
myTxtFile = ThisWorkbook.Path & "\txt\増田担当一覧フィールド名付.csv"
'エクセルに接続
With myCon
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties") = "Excel 8.0"
.Open myExcelFile
End With
'レコードセットオブジェクトにテキストファイルの内容を格納
myRS.Open myTbl, myCon
ReDim tmpFldArray(myRS.Fields.Count - 1)
For i = 0 To UBound(tmpFldArray)
tmpFldArray(i) = myRS.Fields(i).Name
Next
'テキストファイルに書き出し
Open myTxtFile For Output As #1
Print #1, Join(tmpFldArray, ",")
Print #1, myRS.GetString(adClipString, , ",", vbCrLf)
Close #1
myRS.Close: Set myRS = Nothing
myCon.Close: Set myCon = Nothing
End Sub
フィールド名はいったん配列に格納し、Join関数を使用して1つの文字列に変換してから出力している。
Join 関数
Join(sourcearray [, delimiter])
| 指定項目 | 説明 |
|---|---|
| sourcearray | 必ず指定します。結合する文字列を含む 1次元配列を指定します。 |
| delimiter | 省略可能です。戻り値となる文字列を区切るのに使用する文字を指定します。省略すると、スペース(" ") が使用されます。引数 delimiterが長さ 0 の文字列 ("")である場合は、リスト内のすべての項目が区切り文字なしで連結されます。 |
元となるエクセルのデータ
実行結果

