電子書籍の厳選無料作品が豊富!

下記のように外部ファイルを読み込んで、編集してまた別ファイルに書き込むという作業を行っております。

*************
ファイルオブジェクト略
*************

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"的な改行コードをいれるにはどうすればよろしいでしょうか?

よろしくお願いいたします。

A 回答 (3件)

writeで出力すると、自分で改行コードを付ける必要があります。


writeの代わりにwritelineで出力すると出力毎に改行されるはずです。
試してみてください。
    • good
    • 0

こんにちは。



> 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
    • good
    • 0

こんにちは。



出力の形が良く見えてこないのですが、

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)

ということになるかと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!