VBScriptで任意のフォルダコレクションを取得する方法

このQ&Aのポイント
  • VBScriptを使用して、任意のフォルダコレクションを取得する方法について質問します。
  • FileSystemObjectを使って、指定されたフォルダ(MyFolder)を取得することはできましたが、その下のサブフォルダのコレクションを取得し、サブフォルダ名を取得する方法がわかりません。
  • VBScriptでサブフォルダのコレクションを取得し、個々のサブフォルダ名を取得する方法を教えてください。
回答を見る
  • ベストアンサー

VBScriptで、任意のフォルダコレクションを取得するには?

VBScriptについて質問します(マイナーですみません) 任意のフォルダコレクションを取得して、 そのフォルダ名を1つ1つ得たいんですが、 うまくいきません。 FileSystemObjectを作成して、 任意のフォルダ(MyFolder)を取得することはできました。 Set fso=CreateObject("Scripting.FileSystemObject") Set f=fso.GetFolder("C:/....../デスクトップ/MyFolder") いま、MyFolder の下に、複数のサブフォルダがあるとき、 サブフォルダのコレクションを取得して、 サブフォルダ名を1つ1つ得るには、 どうしたらいいのでしょうか? よろしくおねがいします。

noname#13666
noname#13666

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

for each subFolder in f.SubFolders WScript.Echo subFolder.Name next

noname#13666
質問者

お礼

ご回答ありがとうございました。

関連するQ&A

  • FileSystemObjectでのパス名の取得

    お世話になります。 VBScriptでフォルダ内のファイルコピーのスクリプトを作っているのですが、FileSystemObjectを使用してネットワーク共有してある日本語のフォルダ名(Getfolder)を取得すると文字化けして取得できません。 Dim fso,fo set fso = CreateObject("Scripting.FileSystemObject") set fo = fso.getfolder(フォルダパス) WScript.Echo fo.path <---フォルダのパスを表示 なにか解決する方法はありますでしょうか? ちなみに、ローカルドライブの日本語フォルダは正常に取得できました。

  • VBScriptの繰り返し文について

    こんにちは。下のスクリプトでクリックボタンをクリックすると、サブフォルダ名が表示されるようにしたいのですが、どこのクリックボタンをクリックしても、一番下のサブフォルダの名前が表示されてしまいます。何かいい方法はあるでしょうか。よろしくお願いいたします。 <html><head> <title>test</title> </head> <body> <h3>サブフォルダ一覧</h3> <table border> <tr><td>サブフォルダ名</td><tr> <script language=VBScript> <!-- Option Explicit Dim FSO Dim TestFolder Dim F Dim X set FSO = CreateObject("Scripting.FileSystemObject") Set TestFolder = FSO.GetFolder(".").ParentFolder For Each f IN TestFolder.SubFolders X = f.name Document.Write "<tr><td> " & X & " </td></tr><td><input type=button onclick=setnum value=クリック></td></tr>" Next Sub setnum msgbox X End Sub Set FSO = Nothing Set TestFolder = Nothing --> </script> </table> </body></html>

  • vbaでフォルダ属性がうまく取れません

    vbaでフォルダ属性が隠しフォルダかどうかを調べるコードを書いています。 C:\ProgramData\ は隠しフォルダなのに、なぜか16が返って来ます。 試しにvbs(wsh)だと18が返って来ます。 環境は Win10 + Excel2013(32ビット) です。 vbaで返値18を求めるにはどうすれば良いのでしょうか。 Sub test() Dim mPath Dim fso, f mPath = "C:\ProgramData\" Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFolder(mPath) MsgBox f.Attributes End Sub

  • VBA 一つのフォルダの中のフォルダ名とファイル名

    一つのフォルダの中のフォルダ名とファイル名を取得したい場合は ************************************** Sub test() Dim MyFileName As String Dim MyFolderName As String Dim myFSO As Object Dim MyFolder As Scripting.Folder MyFolderName = "C:\" 'フォルダを取得 MyFileName = Dir(MyFolderName & "*.*") Do While MyFileName <> "" Debug.Print MyFileName MyFileName = Dir() Loop 'ファイルを取得 Set myFSO = CreateObject("Scripting.FileSystemObject") With myFSO With .GetFolder(MyFolderName) For Each MyFolder In .SubFolders Debug.Print MyFolder.Name Next End With End With Set myFSO = Nothing End Sub ************************************** の様に ファイル名・フォルダ名をそれぞれループして取得しないとダメでしょうか? もうちょっとスマートなコードはありますか?

  • FSOを使いサブフォルダのファイル操作

    同じ階層のサブフォルダにxlsm入るが入っており、VBAによりモジュールを解放しようと試みています。 まずは、FSOを使ってサブフォルダにアクセスしようとしましたが、下から6行目でエラー(424 オブジェクトが必要です)が出てしまい、解決できませんので、ご教示いただけないでしょうか? よろしくお願いします Sub DeleteMain() With Application.FileDialog(msoFileDialogFolderPicker) If Not .Show Then Exit Sub Call DeleteSub(folderPath:=.SelectedItems(1)) End With End Sub Sub DeleteSub(folderPath As String, Optional mycount As Long = 0) Dim fso As Object, myFolders As Object, myfile As Object Set fso = CreateObject("Scripting.FileSystemObject") Set myFolders = fso.GetFolder(folderPath).SubFolders For Each myfile In fso.GetFolder(folderPath).Files mycount = mycount + 1 ' Cells(mycount, 1) = myfile.Path Debug.Print myfile.Path Next For Each myFolders In fso.GetFolder(folder.Path).SubFolders Call DeleteSub(myFolder.Path, mycount) Next Set fso = Nothing Set myFolders = Nothing End Sub

  • [vbScript]ファイルの日付

    任意のファイルの作成日付を取得するまでは下記の記述でできたのですが、「YYYY/MM/DD hh:mm:ss」で取得します。 --------------------------- Set fso = CreateObject("Scripting.FileSystemObject") Set src = fso.Getfile(ckFile) WScript.Echo src.DateCreated --------------------------- YYYYMMDD形式で取得したい場合は、どうすればよいでしょうか?

  • VBSで指定したフォルダー内のファイルを書き出さないようにする

    あるフォルダ以下のファイル名を出力ファイル、f.name.txtに書き出すのですが "新しいフォルダ"というフォルダのなかにあるファイルは書き出さないようにしたいのですが、意に反してフォルダー内の全てのファイル名を書き出してしまいます。どこがおかしいのでしょう? ********************************************** Set FSO = CreateObject("Scripting.FileSystemObject") Set fl = WScript.CreateObject("Scripting.FileSystemObject") Set abc = fl.CreateTextFile("f.name.txt") ShowSubfolders FSO.GetFolder(".") Sub ShowSubFolders(Folder) For Each File in Folder.Files 'Folder内のファイルを列挙する Fname = File.name FolderCheck=Folder & "\" & "新しいフォルダ" If Folder <> FolderCheck Then abc.Write Folder & "\" & Fname & vbCrLf End If Next For Each Subfolder in Folder.SubFolders 'Foler内のフォルダを列挙する ShowSubFolders Subfolder '再帰呼び出し Next End Sub abc.Close

  • VBScriptでファイル検索

    こんにちは。 Dドライブのどこかにある「あいうえお.xls」ファイルのパス をメッセージ表示するようなスクリプトを作りましたが、上手 く表示されません。どこに不具合があるのか、ご教授ください。 お願いいたします。 Option Explicit Dim FSO,File,SubFolder Set FSO = CreateObject("Scripting.FileSystemObject") ShowSubfolders FSO.GetFolder("D:\") Sub ShowSubFolders(Folder) For Each File in Folder.Files If File.Name = "あいうえお.xls" then      Wscript.Echo File.path End If Next For Each Subfolder in Folder.SubFolders ShowSubFolders Subfolder Next Set FSO = Nothing End Sub

  • VBScript でサブフォルダも含めて、フォルダごとコピーを実行するには?

    バックアップの自動化をもくろんでいます。 VBScriptを用意し定刻に実行するようにしようと考えています。 VBScript でサブフォルダも含めて、フォルダごとコピーを実行するには、どうプログラムをかけばよいでのしょうか? Set objFS = CreateObject ("Scripting.FileSystemObject") objFS.CopyFolder "c:\test1", "c:\test2", false だとtest1の中のサブフォルダはコピーしてくれませんでした。 ここでオプションか何かで、サブフォルダーごとコピーしたいのです。 参考までにコマンドプロンプトの xcopy c:\test1 c:\test2 /x と同じ働きをさせたいのです。 よろしくお願い致します。

  • フォルダをリネームしたい

    いつもお世話になっております。 フォルダの名前を変更しようとしていますが、うまくいきません。 ASP(VBS)にて行ってます。 以下のように書いてみましたが、フォルダ名が変更されません。 以下ソース。 「12345」というフォルダ名を「67890」に変更したいのです。 <% Dim fso, f, s Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFolde("./uploads/12345") f.Name = "67890" %> どなたかご存知の方がいらしゃいましたら、ご教授お願いします。

専門家に質問してみよう