• ベストアンサー

VBスクリプト:ファイル名をファイルに書く

VBスクリプトで以下のようなコードを書いているのですが、上手く動いてくれません。あるディレクトリのファイル名をテキストファイルに書き込むという処理を行いたいのですが。。 配列は、ある順番(ファイル名順)のみ書き込むという処理を付け加えたいため必須です。アドバイスを頂けないでしょうか?宜しくお願い致します。 Set objFS = CreateObject("Scripting.FileSystemObject") Set fl = objFS.GetFolder("D:\") i = 0 For Each objFile In fl.Files str(i) = objFile.Name i = i + 1 Next Set objText = objFS.OpenTextFile("D:\filename.txt") For i = 0 To UBound(fl) objText.WriteLine fl(i) Next objText.Close

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

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

' こんにちは。コメントを参照して下さい。 Set objFS = CreateObject("Scripting.FileSystemObject") Set fl = objFS.GetFolder("D:\") ' 配列は使う前に領域確保が必要です ' また str は Str 関数と同名なので変数名を変更 Dim aryF() i = 0 For Each objFile In fl.Files ReDim Preserve aryF(i) aryF(i) = objFile.Name i = i + 1 Next ' 第一引数:ForWriting = 2 ForAppending = 8 ' 第二引数:True ファイルがなければ作成 ' 引数はできるだけ明示します Set objText = objFS.OpenTextFile("D:\filename.txt", 2, True) ' Ubound(fl) では無理。fl は配列ではなくオブジェクトです。 ' fl.Files.Count - 1 とします。 ' でもそれこそ配列を使った意味が無くなるので配列の内容を使用 For i = 0 To UBound(aryF) objText.WriteLine aryF(i) Next objText.Close ' 後始末はしましょう Set objText = Nothing Set objFS = Nothing

fabu
質問者

お礼

皆様ありがとうございます。 うまく動作しました!! こちらでお礼にかえさせて下さい。

その他の回答 (1)

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

>For i = 0 To UBound(fl) >objText.WriteLine fl(i) じゃなくて For i = 0 To UBound(str) objText.WriteLine str(i) の間違いでは?

関連するQ&A