• ベストアンサー

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

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1606/2443)
回答No.1

カタログの容量と合わないという事でしょうか。 コンピューターの管理でディスクの管理を見た時のCの容量と一致していませんか。 質問に書かれているコードをこちらで実行したところ一致していましたので、コードに問題はないと思われます。

ywfwyyzov
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • バイトをGBにするには?

    Sub FSO() Dim myFSO As Scripting.FileSystemObject Set myFSO = New Scripting.FileSystemObject Debug.Print myFSO.Drives.Item("C").TotalSize & "バイト" End Sub でバイトで容量を取得できるのですが、 単位をGBにするにはどうすればいいですか? Debug.Print myFSO.Drives.Item("C").TotalSize / 1024000000 & "GB" これであってるのでしょうか?

  • 「New」はつけた方がいいのでしょうか?

    vbaなのですが、 FileSystemObjectでドライブの情報を取得したりファイル操作をしているのですが FileSystemObjectを宣言する時は、 Dim myFSO As New FileSystemObject にしたほうがいいのか、 Dim myFSO As FileSystemObject でいいのか教えてください. Sub Sample() Dim myFSO As New FileSystemObject Dim Drv As Variant Dim buf As String Set myFSO = CreateObject("Scripting.FileSystemObject") For Each Drv In myFSO.Drives Debug.Print Drv.DriveLetter Next Drv Set myFSO = Nothing End Sub 上記のコードは、newを付けても付けなくても結果は変わりませんでした。 よろしくお願いします。

  • 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 書き込みできません。 です。 何故でしょうか?

  • 実行時エラー 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くらいありますが、フォルダが重すぎるのが原因でしょうか?

  • 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

    vbaです。よろしくお願いします。 Sub Sample() Dim myFSO As Object Dim MyPath As String MyPath = "C:\Users\ああああ\Desktop\" Set myFSO = CreateObject("Scripting.FileSystemObject") myFSO.CopyFolder MyPath & "コピーしたフォルダーを入れるフォルダー", MyPath & "コピーするフォルダ" Set myFSO = Nothing End Sub こんな感じで、デスクトップにある、"コピーするフォルダ"をコピーして、 デスクトップにある、"コピーしたフォルダーを入れるフォルダー"の中に入れたいのですが 上記のコードを実行しても何も起きません。 コピーしたフォルダーを入れるフォルダーの中身を見ても、空です。 ”コピーしたフォルダーを入れるフォルダー”の中に、"コピーするフォルダ" を入れる方法を教えてください。

  • vbaで参照設定する方法

    sub フォルダをコピーする() Dim myFSO As New FileSystemObject myFSO.CopyFolder "D:\TEST", "D:\TEST2" End Sub を実行したいのですが、 Visual Basic Editor の [ツール]-[参照設定] で、 "Microsoft Scripting Runtime" にチェックせずに、 vbaで参照設定する方法を教えてください。 バージョンは2007です。 ご回答よろしくお願いします。

  • ファイル容量が多いと時間がかかる

    Sub フォルダのサイズを取得する() MsgBox CreateObject("scripting.filesystemobject").GetFolder("D:\フォルダ名").Size End Sub このコードでフォルダのサイズを取得していますが サイズが18GB位あると、ものすごくVBA事態も遅くなるのですがただ値を引っ張るコードじゃないのでしょうか? ファイルの容量が多いほどコードも遅くなってしまうのでしょうか?

  • エクセルならうまく行くのですがアクセスだとエラーに

    エクセルならうまく行くのですがアクセスだとエラーになるのですがなぜでしょうか? フォルダに入ってるフォルダ名を全て取得して一つにつなげたいのですが Sub フォルダ名を取得() 参照設定:Microsoft Scripting Runtime Dim MyFSO As Object Dim MyGetFolder As String Dim MyFolderName As String Dim MyFolder As Folder Dim i As Long MyGetFolder = "D:\My Documents" Set MyFSO = CreateObject("Scripting.FileSystemObject") With MyFSO With .GetFolder(MyGetFolder) For Each MyFolder In .SubFolders MyFolderName = MyFolderName & "," & MyFolder.Name Next End With End With MsgBox MyFolderName Set MyFSO = Nothing End Sub これを実行するとアクセスだと For Each MyFolder In .SubFolders で、実行時エラー13 型が一致しません。 になります。 エクセルもアクセスも参照設定:Microsoft Scripting Runtimeにチェックを入れています。 コードはネットで拾ってきたコードです。 オフィスの種類は2003・OSはXPです。

  • エクセルマクロでフォルダのコピーがしたい

    こんにちわ 色々調べてフォルダのコピーはできたのですが、色々いじっていて分からないことが出てきたので質問に来ました。 やりたいことはフォルダをコピーしたいのですが、それぞれ名前を自動で変えようと思い下記(1)を元に下記(2)を作ってみましたが、動きませんでした。 (1)いくつかのサイトを見て動いたマクロ sub test() Dim myFSO As New FileSystemObject myFSO.CopyFolder "C:\test", "C:\test2" End Sub (2)ちょっといじって動かないマクロ sub test() Dim myFSO As New FileSystemObject Dim name As String Dim name2 As String name = "C:\test" name2 = "C:\test2" myFSO.CopyFolder "name", "name2" End Sub 「パスが見つかりません」と出てきたので、読み込んでいないのだとは思うのですが、どうしたら動くかアドバイスをいただきたいです。 よろしくお願いします。

このQ&Aのポイント
  • FMV富士通FMVの更新ドライバーの入手方法を教えてください。Windows10バージョン1903および21H2の更新を行いたいため、最新版のドライバーが必要です。
  • FMV富士通FMVの最新版ドライバーを入手する方法を教えてください。Windows10のバージョン1903および21H2をアップデートするために必要なドライバーを手に入れたいです。
  • FMV富士通FMVの最新版更新ドライバーを手に入れる方法を教えてください。Windows10のバージョン1903と21H2をアップグレードするために、最新のドライバーが必要です。
回答を見る

専門家に質問してみよう