• ベストアンサー

VBAで外部ファイル(HTMLソース)を読み込んで書き込む時の問題

下記のように外部ファイルを読み込んで、編集してまた別ファイルに書き込むという作業を行っております。 ************* ファイルオブジェクト略 ************* 1:Open "test.html" For Input Shared As #1 'テキストファイルを開く 2:Do While Not EOF(1) 'ファイルの終端まで繰り返す 3:Line Input #1, strBuf 'テキストファイルより1行を読み込む 4:tf.write strBuf '読み込んだ1行のデータ行を追加する 5:Loop 6:Close #1 'テキストファイルを閉じる 4行目で実際読み込んだデータを書き込んでいるのですが、 書き込んだ後のHTMLファイルソースをみると改行されずに データが入っています。 <例> <HTML><HEAD><TITLE>***</TITLE></HEAD><BODY> "\n"的な改行コードをいれるにはどうすればよろしいでしょうか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Yeti21
  • ベストアンサー率47% (396/830)
回答No.1

writeで出力すると、自分で改行コードを付ける必要があります。 writeの代わりにwritelineで出力すると出力毎に改行されるはずです。 試してみてください。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

こんにちは。 > 4:tf.write strBuf '読み込んだ1行のデータ行を追加する この tf というのが、File System Object の Text Stream なら #1 ご回答のとおりです。 余計なお世話かもしれませんが、折角 File System Object を使っている なら、テキストを開く部分でも従来の Open ステートメントではなく、 Text Stream をもう一つ用意すれば良いのでは? File System Object か Open ステートメントか、どちらかに統一した方が 良いと思います。 また、長くなるので下記ソースではやってませんが、ファイル入出力処理 はエラー発生時でもちゃんとファイルを閉じる処理を書いた方が良いです。 Sub Sample()   Dim Fso  As Object ' FileSystemObject   Dim TS_Src As Object ' TextStream   Dim TS_Dst As Object ' TextStream   Dim strBuf As String   Dim i   As Long   Dim strSrcFilename As String   Dim strDstFilename As String       Const ForReading = 1  ' 参照設定してあるなら不要   Const ForWriting = 2  ' 参照設定してあるなら不要   Const ForAppending = 8 ' 参照設定してあるなら不要      strSrcFilename = "C:\Sample.txt"   strDstFilename = "C:\Output.txt"        Set Fso = CreateObject("Scripting.FileSystemObject")   ' 読み取りモードでソースファイルを開く   Set TS_Src = Fso.OpenTextFile(strSrcFilename, ForReading)   ' 書き込みモードで出力ファイルを開く(ファイルがなければ自動で作成する)   Set TS_Dst = Fso.OpenTextFile(strDstFilename, ForWriting, True)   While Not TS_Src.AtEndOfStream     strBuf = TS_Src.ReadLine     ' 編集(サンプル用に試しに行番号を追加してみる)     i = i + 1     strBuf = Format$(i, "0000: ") & strBuf     ' 一行書き出し     TS_Dst.WriteLine strBuf   Wend      TS_Src.Close: Set TS_Src = Nothing   TS_Dst.Close: Set TS_Dst = Nothing   Set Fso = Nothing End Sub

すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 出力の形が良く見えてこないのですが、 Open [ファイル名] For Output As #2 はお使いにならないようですね。 tf は、FilesystemObject のようですね。 >"\n"的な改行コードをいれるにはどうすればよろしいでしょうか? "\n"「的」というのは、Unix ライクやMac ライクを意味するのでしょうか? Winだったら、& vbCrLf または、& Chr(13) & Chr(10) Mac なら、& vbCr または、& Chr(13) Unix なら、& vbLf または、& Chr(10) ということになるかと思います。

すると、全ての回答が全文表示されます。

関連するQ&A