Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1920to1924
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

USB/Disk Infos mit VB auslesen

USB/Disk Infos mit VB auslesen
27.02.2023 22:42:01
Piet
Hallo Kollegen
heute habe ich mal einige technische Fragen, wo ich nicht weiter komme.
Ich möchte gerne alle Infos von USB oder externen Laufwerken auslesen, und auflisten
Einen String mit allen angeschlossenen Laufwerks Buchstaben. Und diese Infos:
Hersteller Name, Disk Label, Diskformat (FAT usw), Art des Laufwerk/USB, Komprimierung, Schreibsperre
TotalByts, FreeByts, Summe aller Dateien, Summe aller Ordner, Summe versteckter Ordner
Mir reicht die Syntacs zum weiterkommen, ggf. mit Deklaration Funktion, falls erforderlich.
Ich bedanke mich für eure Hilfe.. Zur Zeit arbeite ich leider mit Excel 2003 und CP Laptop!
mfg Piet

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: USB/Disk Infos mit VB auslesen
27.02.2023 22:51:35
Firmus
Hi Piet,
einen kleinen Beitrag kann ich dir geben.

Option Explicit
Sub VI__0100_Laufwerke()
'
'benötigt Verweis auf "Microsoft Scripting Runtime"
'Global DiskIndex As Variant
Dim fso As New FileSystemObject
Dim LW As Drive
Dim LW_Text As String
Dim Zeile As Long, SPoff As Long
Dim icol As Long, iRow As Long
Dim xSheetDISK As String
Dim xfilename As String
Dim Rechnername As String
Dim wks As Worksheet
Rechnername = Environ("COMPUTERNAME")
xfilename = Rechnername & "_IDX_" & Format((Now), "YYYYMMDD-hhmmss")
xSheetDISK = "VideoIndex_" & Format((Now), "YYYYMMDD-hhmmss")
icol = 1
iRow = 1
    Workbooks.Add
    Worksheets(1).Name = xSheetDISK
    
On Error Resume Next
SPoff = 1
Zeile = 2
'======================================================================================================
'  Überschriften setzen, Spalten formatieren, anschließend speichern
'======================================================================================================'
Worksheets(xSheetDISK).Activate
Range(Cells(1, SPoff + 1), Cells(99, SPoff + 15)).ClearContents
Range(Cells(1, SPoff + 1), Cells(1, SPoff + 15)) = Array( _
    "AvailableSpace", _
    "FreeSpace", _
    "Available Space", _
    "DriveLetter", _
    "DriveType", _
    "FileSystem", _
    "IsReady", _
    "Path", _
    "RootFolder", _
    "SerialNumber", _
    "ShareName", _
    "VolumeName", _
    "RootFolderType", _
    "DriveType", _
    "Select:")
    ActiveWorkbook.SaveAs Filename:=xfilename                 'save file-backup mit timestamp
'  Set wks = Worksheets(xSheetDISK)
'    With wks
'    End With
For Each LW In fso.Drives
  If LW.DriveType = 1 Then    'Diskette
    Cells(Zeile, SPoff + 1) = Format(LW.AvailableSpace / 1000000, "0.00") & " MB"
    Cells(Zeile, SPoff + 2) = Format(LW.FreeSpace / 1000000, "0.00") & " MB"
    Cells(Zeile, SPoff + 3) = Format(LW.TotalSize / 1000000, "0.00") & " MB"
  Else
    Cells(Zeile, SPoff + 1) = Format(LW.AvailableSpace / 1000000000, "0.00") & " GB"
    Cells(Zeile, SPoff + 2) = Format(LW.FreeSpace / 1000000000, "0.00") & " GB"
    Cells(Zeile, SPoff + 3) = Format(LW.TotalSize / 1000000000, "0.00") & " GB"
  End If
  Cells(Zeile, SPoff + 4) = LW.DriveLetter
  Cells(Zeile, SPoff + 5) = LW.DriveType
  Cells(Zeile, SPoff + 6) = LW.FileSystem
  Cells(Zeile, SPoff + 7) = LW.IsReady
  Cells(Zeile, SPoff + 8) = LW.Path
  Cells(Zeile, SPoff + 9) = LW.RootFolder
  Cells(Zeile, SPoff + 10) = LW.SerialNumber
  Cells(Zeile, SPoff + 11) = LW.ShareName
  Cells(Zeile, SPoff + 12) = LW.VolumeName
  Cells(Zeile, SPoff + 13) = LW.RootFolder.Type
  
  LW_Text = "unknown"
  If LW.DriveType = 1 Then LW_Text = "Removable"    'Diskette
  If LW.DriveType = 2 Then LW_Text = "Fixed"
  If LW.DriveType = 3 Then LW_Text = "Remote-Access"
  If LW.DriveType = 4 Then LW_Text = "CD-ROM"
  Cells(Zeile, SPoff + 14) = LW_Text
  
  
  Zeile = Zeile + 1
Next
Zeile = Zeile
'======================================================================================================
'  Formate setzen
'======================================================================================================'
    Cells.Select
    Cells.EntireColumn.AutoFit
    Range("C2").Select
    ActiveWindow.FreezePanes = True
    Columns(SPoff + 0).ColumnWidth = 8 'Spalte "A"
    
    Range(Cells(1, SPoff + 1), Cells(99, SPoff + 15)).HorizontalAlignment = xlLeft
    Range(Cells(1, SPoff + 1), Cells(99, SPoff + 15)).HorizontalAlignment = xlRight
    Range(Cells(1, SPoff + 1), Cells(1, SPoff + 15)).Interior.ColorIndex = 35
    Range(Cells(1, SPoff + 1), Cells(1, SPoff + 15)).Font.Bold = True
    Range(Columns(1, SPoff + 15)).Columns.AutoFit
    Columns("M:M").Select           'VolumeName
    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Columns("E:E").Select           'Drive Letter
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Zeile = Zeile
    ActiveWorkbook.Save  'As Filename:=xFilename                 'save file-backup mit timestamp
End Sub
Läuft bei mir auf win7 mit xls2013
Gruß,
Firmus
Anzeige
AW: USB/Disk Infos mit VB auslesen
28.02.2023 12:35:17
Piet
Hallo Firmus
vielen vielen Dank, mit so einem umfangreichen Code habe ich nicht gerechnet. Vielen Dank dafr.
Werde ihn heute Abend ausprobieren ... Bin gespannt auf das Ergebnis.
mfg Piet
AW: Anzahl Dateien + Ordner auflisten
28.02.2023 23:49:56
Piet
Hallo Firmus
mit einer kleinen Aenderung lief dein Programm problemlos: Vielen Dank dafür.
Dım FSO und Drive musste ich auf As Object setzen, weil 2003 es so nicht akzeptierte.
Mit Set fso = CreateObject("scripting.FileSystemObject") vor For Next lief es sofort.
Vielleicht hat ein Kollege noch eine Idee wie man alle Dateien und Ordner als Summe erfassen kann, ohne das ganze Directory rekursiv durchzuforsten. Falls ja, wie kann man versteckte Ordner erkennen?
mfg Piet
Anzeige
AW: Anzahl Dateien + Ordner auflisten
02.03.2023 10:57:48
Yal
Hallo Piet,
die Version VarName As Object + Set VarName = CreateObject(.. ist der sogenannte "Late Binding", weil während dem Lauf die passende Funktionalität in der Bibliothek abgerufen werden. Es ist ein Verfahren, das damals als jede Bit und Bytes teuer waren wichtig, weil es wenig Platz auf dem Festplatte beansprucht. Darüber kann man heute lächeln.
Es gibt auch den "Early Binding". Es geht über "Extras", "Verweise..." dann Haken bei "Microsoft Scripting Runtime". Es hat aus meiner Sicht mehrere Vorteile:
_ Du kannst deine Variable typisiert deklarieren, sogar instanziert:
Dim FSO As New FileSystemObject
_ Du bekommst den Intellisense: tippe "FSO." und Strg+Leertaste, dann sind alle Methoden und Eigenschaften eines FileSystemObject-Objekts sofort auswählbar.
_ Du siehst diese Objekt in dem Objekt-Katalog (F2 oder "Ansicht", "Objekt-Katalog"), unter Auswahl "Scripting" (da wo "<Alle Bibliotheken>" steht) oder über die Suche (Feld drunter)
Intellisense und Objekt-Katalog sind 2 wesentliche Hilfsmittel, um das Objekt-Modell von Excel zu verstehen und effektiv einsetzen.
_ nicht zuletzt: der Kompiler (Alt+g, k oder "Debuggen", "Kompilieren von VBAProjekt") kann viel besser im Voraus Unstimmigkeit entdecken.
Im Objekt-Katalog würdest Du sehr schnell sehen, dass im Scripting-Bibliothek das Objekt "Folder" die Eigenschaft "Size" besitzt. Das ist was Du suchst.
Ich dachte zuerst, der Code von Firmus ist an einer Stelle ungenau:
Format(LW.AvailableSpace / 1000000000, "0.00") & " GB"
weil es meiner Meinung nach eigentlich so heissen sollte:
Format(LW.AvailableSpace / (1024 ^ 3), "0.00") & " GB"
Aber https://de.wikipedia.org/wiki/Byte#Bedeutungen_von_Dezimal-_und_Bin%C3%A4rpr%C3%A4fixen_f%C3%BCr_gro%C3%9Fe_Anzahlen_von_Bytes sagt, dass es so seit 1996 laut SI so richtig ist. Man lernt ja nie aus.
Also meine Version wäre mit "GiB" zu bezeichnen:
Format(LW.AvailableSpace / (1024 ^ 3), "0.00") & " GiB"
VG
Yal
Anzeige
AW: Anzahl Dateien + Ordner auflisten
02.03.2023 11:55:37
Piet
Hallo Yal
Danke für deine umfangreiche Info, davon ist mir vieles neu, unbekannt. Ich habe mit FSO Codes aus dem Internet einfach solange herumgespielt bis sie geklappt haben. Was dabei genau passiert wusste ich meistens nicht. Man kann damit leben ....

mfg Piet

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige