2016-10-21 19 views
1

私は簡単な質問をしています。レコードセットから読み込み、ループの最後にtiファイルを書き込んだ後、次のように最初の行(行数)コードに書きます:ループの最後の最初の行にファイルに書き込み

私は「C:\ filename.csv」ファイルの1行目にヘッダを追加する方法を
sFileName = "C:\filename.csv" 

RowCount = 0 
Open sFileNameFor Output As #1 
Do While Not rst.EOF 
    'Print #1, rst!Name 
    Print #1, rst.Fields(0).Value & "|" & rst.Fields(1) ... rst.Fields(n).Value 
    RowCount = RowCount + 1 
    rst.MoveNext 
Loop 
    '--header and rowcount 
     Print #1, "Header Line" & RowCount 

を見つけるわけではない事前

+0

あなたは戻って、最初のレコードセットの末尾に移動できませんでしたfront( 'rst.MoveLast'の後ろに' rst.MoveFirst'が続きます)、 'rst.RecordCount'を取得してください。ヘッダを最初に追加することができます。 –

答えて

0

私は仕事をしていません。このコードは見つから - ちょうどループ命令の下にそれを追加する:

Dim sFileContents As String 

Close #1 
Open sFileNameFor For Binary As 1 
sFileContents = Space$(LOF(1)) 
Get #1, 1, sFileContents 
Put #1, 1, "Header Line " & RowCount & vbCrLf 
Put #1, , sFileContents 
Close #1 

出典: http://www.pcreview.co.uk/threads/how-write-into-text-file-at-first-and-last-line-with-excel-vba.4046562/

+0

こんにちはDarren、上記のコードは完璧に動作します。それはちょうどそれを削除する方法を、任意のアイデア、最初の行を請うにいくつかの特別な文字を作成する!ありがとう –

+0

申し訳ありません - 私はメモ帳、メモ帳++、ワードパッドでテストファイルを開こうとしましたが、最初の行に特殊文字は見当たりませんでした。 –

0

私の知る限りで

おかげで、レコードセット内のすべてのField.Nameのないコレクションはありません。代わりに、コレクションFieldsをループに持っているので、などの各項目.Name -propertyを得る:

For i = 1 To rst.Fields.Count 
    Debug.Print rst.Fields(i - 1).Name 
Next i 

は持つことのうち、文字列を生成する、のは言わせて、このような何か:

Dim strHeader as String 
strHeader = rst.Fields(0).Name 
For i = 1 To rst.Fields.Count - 1 
    strHeader = strHeader & "|" & rst.Fields(i).Name 
Next i 

カウンティングiは明らかにちょっと変わっていますが、ご存知のように、VBAの配列は0-basedです。

希望に役立ちます。

+0

私は完全にあなたの質問を誤解している可能性があります... –

関連する問題