- ベストアンサー
ファイル容量が多いと時間がかかる
Sub フォルダのサイズを取得する() MsgBox CreateObject("scripting.filesystemobject").GetFolder("D:\フォルダ名").Size End Sub このコードでフォルダのサイズを取得していますが サイズが18GB位あると、ものすごくVBA事態も遅くなるのですがただ値を引っ張るコードじゃないのでしょうか? ファイルの容量が多いほどコードも遅くなってしまうのでしょうか?
- TTWGAICPBIGD
- お礼率98% (51/52)
- オフィス系ソフト
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こちらで試した限りでは Windows7 + Excel2010 WindowsXP + Excel2002 のイミディエイトウィンドウでの確認です。 Windows7 では瞬時、XPでも1秒とはかかりませんでした。 フォルダA フォルダサイズ 267GB サブフォルダ数3 ファイル数311 フォルダB フォルダサイズ 28GB サブフォルダ数912 ファイル数7515 エクスプローラでフォルダを右クリックするとプロパティで確認できますが こちらでの反応はどうですか? こちらも時間が掛かるとなると問題は別の所に潜んでいるかも? セキュリティ対策ソフトが足を引っ張っている ディスクに異常が発生している など。
関連するQ&A
- VBA SFO C:\Windows
Cドライブには、 IntelもWindowsのどちらのフォルダも存在するのに Sub Sample() Dim myFSO As Object Debug.Print CreateObject("scripting.filesystemobject").GetFolder("C:\Intel").Size Debug.Print CreateObject("scripting.filesystemobject").GetFolder("C:\Windows").Size Set myFSO = Nothing End Sub をVBAで実行すると \Windows の方だけエラーになります。 エラー内容は 実行時エラー 70 書き込みできません。 です。 何故でしょうか?
- ベストアンサー
- Visual Basic
- 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
- ベストアンサー
- Visual Basic
- Cドライブの全体の容量を取得する
Cドライブの全体の容量を取得するVBAコードを実行したいのですが その結果をGBで取得したいのですが これだと実際の容量と一致しません。 何処が変ですか? Sub Sample() Dim myFSO As Scripting.FileSystemObject Set myFSO = New Scripting.FileSystemObject Debug.Print myFSO.Drives.Item("C").TotalSize / 1024 / 1024 / 1024 & "GB" End Sub
- ベストアンサー
- その他MS Office製品
- EXCEL VBAでフォルダ容量の測定
お世話になります. EXCELでフォルダの容量を自動で測量するツールを作成中です. 大まかな概要としては,1枚目のシートのセルにあらかじめ測定対象となるフォルダのパスを記述しておき, そのパスをもとに2枚目のシートに測定した容量を出力したいと考えています. 作成中のソースから抜粋させて頂きますが,以下の部分が上手くいきません. <<作成中のソース>> Sub FolderSize_Count() Dim FSO As Variant Set FSO = CreateObject("Scripting.FileSystemObject") Dim Path As String With Sheets("Sheet2") Path = Application.Worksheets("sheet1").Range("A1").Value .Cells(1, 1) = FSO.GetFolder("Path").Size End With End Sub <<不明点>> FSO.GetFolder("Path").Size の"Path"の部分には対象フォルダのパスを記述する必要があるが, 別シートから取得した値を" "に反映させる記述が分かりません. ちなみに Application.Worksheets("sheet1").Range("A1").Valueにて,対象フォルダのパスを取得出来ていることと, FSO.GetFolder("C:\test").Sizeにて,Cドライブ直下のtestフォルダの容量を取得できることは確認済みです. お手数お掛けいたしますが,有識者の方,ご教授頂ければ幸いです. 以上,よろしくお願いいたします.
- ベストアンサー
- Visual Basic
- サブフォルダ内のフォルダ名取得
連続処理のため、特定フォルダ以下のフォルダ名全てを取得する必要があります。 そこで本に書いてあったコードを試してみたのですが、フォルダ以下のサブフォルダまでしか取得できませんでした。 サブフォルダ以下にもフォルダがあるのですが、どのようにして取得すればいいのでしょうか? ↓以下が試してみてコードになります With CreateObject("Scripting.FileSystemObject") With .getfolder(Start_Path) For Each Obj_Folder In .subfolders WorkSheets.Cells(i, 2).Value = Obj_Folder.name i = i + 1 Next Obj_Folder End With End With
- 締切済み
- Visual Basic
- エクセル以外のファイルサイズを取得するには?
例えば画像ファイルのサイズを取得しようとしているのですが Sub ファイルサイズ取得() Dim MyFileName As String MyFileName = "D:\My Documents\My Pictures\画像.bmp" Debug.Print FileLen(MyFileName) End Sub これではダメでした。 Sub ファイルサイズ取得() Dim MyFileName As String MyFileName = "D:\My Documents\My Pictures\画像.bmp" Debug.Print CreateObject("scripting.filesystemobject").GetFolder(MyFileName).Size End Sub これもダメでした。フォルダならいけるのですが。 テキストや画像ファイルなどエクセルファイル以外のサイズを取得する方法を教えてくださいませ。 オフィス2003です。
- ベストアンサー
- オフィス系ソフト
- ドライブの中のファイル一覧(&サイズ等)を作成するVBAを教えてください!!
ドライブの中フォルダーに関する情報を一覧表にして、どのフォルダーがドライブ容量を圧迫しているか調べたく、下記のVBAを書いてみたのですが、うまく走りません。 取得したい内容は、例えば、My Documentの中に入っている、Folder Name, Size, DateLastModifiedです。サブフォルダーがある場合は、さらにそのフォルダーの上記の情報も取得したいです。 *************************************************************** Sub FolderList() Dim fs As Object, fd As Object, f As Object Dim i As Integer Set fs = CreateObject("Scripting.FileSystemObject") Set fd = fs.GetFolder("C:\Documents and Settings\Ontario91") If f.Type Like "Folder*" Then i = i + 1 Cells(i, 1).Value = f.Name Cells(i, 2).Value = f.DatelastModified Cells(i, 3).Value = f.Size End If Range("A1").CurrentRegion.EntireColumn.AutoFit End Sub *************************************************************** VBA初心者なので、精通されている方たちには、かなり初歩的なコードだと思い、恥ずかしいのですが、質問させていただきます。お力添えよろしくお願い致します。
- ベストアンサー
- Windows XP
- 返ってくる値が違う
VBAでフォルダの中のファイルの個数を取得するコードなのですが Sub test1() Dim i As Long, buf, Path As String Path = ActiveWorkbook.Path & "\" buf = Dir(Path & "*.*") Do While buf <> "" i = i + 1 buf = Dir() Loop MsgBox "「" & ActiveWorkbook.Path & "」には、全部で" & i & "個のファイルがあります。" End Sub Sub test2() Dim Path As String Dim i As Long, FSO As Object, f As Object Path = ActiveWorkbook.Path & "\" Set FSO = CreateObject("Scripting.FileSystemObject") MsgBox "「" & ActiveWorkbook.Path & "」には、全部で" & FSO.GetFolder(Path).Files.Count & "個のファイルがあります。" Set FSO = Nothing End Sub Test1とtest2では返ってくる値が違うのですが なぜでしょうか? Test2はフォルダの個数も取得されてるのですか?
- 締切済み
- Visual Basic
- VBScriptで、任意のフォルダコレクションを取得するには?
VBScriptについて質問します(マイナーですみません) 任意のフォルダコレクションを取得して、 そのフォルダ名を1つ1つ得たいんですが、 うまくいきません。 FileSystemObjectを作成して、 任意のフォルダ(MyFolder)を取得することはできました。 Set fso=CreateObject("Scripting.FileSystemObject") Set f=fso.GetFolder("C:/....../デスクトップ/MyFolder") いま、MyFolder の下に、複数のサブフォルダがあるとき、 サブフォルダのコレクションを取得して、 サブフォルダ名を1つ1つ得るには、 どうしたらいいのでしょうか? よろしくおねがいします。
- ベストアンサー
- その他(プログラミング・開発)
- 実行時エラー 76 パスが見つかりません。
VBAのFileSystemObjectでフォルダをコピーしているのですが フォルダ1は問題なくコピーできるのですが 毎回フォルダ2だけは、 実行時エラー 76 パスが見つかりません。 と言うエラーになってしまいます。 Sub Sample() Dim myFSO As Object Dim MyPath As String MyPath = "C:\" Set myFSO = CreateObject("Scripting.FileSystemObject") myFSO.CopyFolder MyPath & "フォルダ2", MyPath & "新フォルダ2" Set myFSO = Nothing End Sub このようなコードなのですが、フォルダ1もフォルダ2も同じコードを使っています。 フォルダ2に関しては容量が10GBくらいありますが、フォルダが重すぎるのが原因でしょうか?
- ベストアンサー
- オフィス系ソフト
お礼
検証頂きありがとうございます。 説明不足でしたが当方の環境はWINXP+2003です。 右クリックは問題なくすぐに表示できるのです。 他の要因ありがとうございます。 確認してみます。