Dim path As String
Dim FullPath As String
Dim FN As String
Dim intFF As Integer
Dim str As String
Path ="C:\"
FN ="abc.txt"
intFF = FreeFile
FullPath = Path & "\" & FN
変数処理。
str = "私は" & Hold1 & vbCrLf
str = str & "彼は" & Hold2 & vbCrLf
......
Open FullPath For Output As #intFF
Print #intFF, str
Close #intFF
とやると、Open FullPathのところで、実行時エラー 76、パスが見つかりませんと表示されてしまいます。
処理の流れはA1~A10まで値がはいっています。この値を変数に入れて、ループで処理。文章を作り出したいと思っています。
例えば、Dim Hold1 As String,Hold2 As String....とあります。Hold1にはA1の値、Hold2にはA2の値...とはいっています。
やりたいことは、Excel VBAでテキストファイルを新規につくり、そこへ書き出し、保存したいです。ファイル名はFullPathで指定したファイル名を新規で作り出し、それに対して書き出し、保存をしたいです。
何が間違っているのでこのようなエラーが表示されてしまうのでしょうか?回避方法がありましたらご教授お願いいたします。またテキストに書き出した時に改行されるようにvbCrLfをつけていますが、これは正しい処理でしょうか?
Path の末尾に ¥ がありますから、 FullPath を生成するときに ¥ を入れると
2重になっています(ただしそれでも動作するとは思いますが)。
Open のまえに
MsgBox FullPath & "を開きます。"
のようなチェックを入れてみてはどうでしょうか。
こちらでは上記コードで正常に新規ファイルが作成されました。
改行に関しては Print 毎に改行が入りますが、一度の Print で複数行出力したい場合は
今回のような書き方で OK です。
str = "私は" & Hold1 & vbCrLf str = str & "彼は" & Hold2 & vbCrLf str = str & "彼女は" & Hold3 Print #intFF, str
(最後は改行なし)と
Print #intFF, "私は" & Hold1 Print #intFF, "彼は" & Hold2 Print #intFF, "彼女は" & Hold3
は同じ結果になります。
なのでセルに対して処理をするのであれば、ファイルを開いた後に
Dim Hold(10) As String Hold(1) = "...." : Hold(10) = "...." Open FullPath For Output As #intFF For i=1 To 10 Print #intFF, Hold(i) & Cells(i,"A").Value Next Close #intFF
のようにやるのも手です。
(ループにする必要がなければ、都度出力してもよいかと思います。)
ご回答ありがとうございます!