ExcelVBAについて教えてください。


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をつけていますが、これは正しい処理でしょうか?

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/04/01 05:24:08
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:Mook No.1

回答回数1314ベストアンサー獲得回数393

ポイント60pt

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

のようにやるのも手です。

(ループにする必要がなければ、都度出力してもよいかと思います。)

id:akaired

ご回答ありがとうございます!

2009/04/01 05:23:59
  • id:SALINGER
    >パスが見つかりませんと表示されてしまいます。
    ということは単にケアレスミスだと思うのでコメントで失礼します。
    可能性としては、
    1 「Path ="C:\"」が正しいかどうか。全角のCを使ってたりしないか。
    2 FullPathなどの変数のスペルの間違い。最初行にOption Explicitを書くことで変数のスペルミスを発見できます。
    3 既にあるabc.txtが読み取り専用になっている。この場合も同じエラーがでます。
  • id:airplant
    SALINGERさんの1か2と思います。
    3は、類似エラーですが、実行時エラー 75ですね。

    ※ C:\\abc.txtがオープンできるのは、仕様が若干不思議ですね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません