• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBSでファイル作成後、書き込みできない)

VBSでファイル作成後、書き込みできない

このQ&Aのポイント
  • ファイルが存在している場合は、ファイルをオープンして書き込み、ファイルが存在していない場合は、ファイルを作成後、オープンして書き込みを行わせたいと考えています。
  • しかし、ファイルが存在していないとき、ファイルは作成されるのですが、『エラー:800A0046 書き込みできません。VBScript実行時エラー』が出て、書き込みができません。モードをWritingにしても同じでした。
  • お手数をおかけしますが、ご教示いただけますようお願いいたします。

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

  • ベストアンサー
回答No.2

Option Explicit '■ オブジェクトの宣言 Dim objFSO Dim objFile '■ 定数の宣言 Const strFileName = "C:\VBS\TEST.TXT" '■ 定数の宣言 '// ファイル入出力モード(8:追加書き込み) Const ForAppending = 8 Set objFSO = CreateObject("Scripting.FileSystemObject") If objFSO.FileExists(strFileName) Then WScript.Echo "ファイルが見つかりました" '// ファイルのオープン Set objFile = objFSO.OpenTextFile(strFileName, ForAppending) ' ★ ここ ← Else WScript.Echo "ファイルが見つかりませんでした" Set objFile = objFSO.CreateTextFile(strFileName) If IsObject(objFile) Then WScript.Echo "ファイルを作成しました" Else WScript.Echo "ファイルを作成できませんでした" WScript.Quit (1) End If End If ' ' ★ ここではなくて  ↑ ↑ objFile.WriteLine "2012/12/21,100,ブレーキパッド,35000"

noname#242248
質問者

お礼

ありがとうございます。 ご教示頂きました箇所の修正を行い、ファイルがある場合、追加書き込みを行い、ファイルがない場合は、作成して書き込めることを確認できました。 ログファイルでの使用を考えており、ファイルがある場合は、ログメッセージを追加書き込み、ファイルがない場合はファイルを作成して、ログメッセージを書き込む目的で考えていました。

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

ファイルを作成後、再度開くならば、 If IsObject(objFile) Then WScript.Echo "ファイルを作成しました" objFile.Close  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< この一文を追加 Else WScript.Echo "ファイルを作成できませんでした" WScript.Quit(1) End If End If '// ファイルのオープン Set objFile = objFSO.OpenTextFile(strFileName,2,1) <<<<< 引数はこんな感じ                           (引数は目的に応じ変更)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

CreateTextFileは、単に作成じゃなくて、作成して書き込みオープンなので、そのまま使うか、いったんクローズするかしてください。

関連するQ&A