SerialNumber- Scripting.FilesSystemObject-Verständnisfrage
#1
Hallo liebe Leute,

ich bräuchte zwecks besserem Verständnis zur Objekterstellung bzw. den Zugriff auf dessen Eigenschaften mal dringend eure Hilfe.

Gegeben ist folgender Code:

Code:
Dim fs as Object
Set fs = CreateObject("scripting.FileSystemObject")
Debug.Print fs.Drives.Count
Mit der Einzelschrittanweisung F8 durchlaufe ich den Code nun zeilenweise. Sobald ich an Set fs  vorbei bin, kann ich im Lokalfenster beobachten, wie das Objekt fs durch den Compiler erstellt wurde. Es erscheint dort im Lokalfenster für das soeben erstellte Objekt fs ein ganzer verzweigter Baum, der die verschiedensten Angaben und Informationen enthält. Mit  " Debug.Print fs.Drives.Count" , kann ich nun z.B. die Anzahl der vorhandenen Laufwerke auf meinem Rechner ausgeben.  Aber der Baum verzweigt sich bei mir unterhalb des "Count" natürlich noch viel weiter. Direkt darunter steht dann Item 1
mit weiterten Verzweigungen. Hierunter erscheint z.B. auch die SerialNumber. Meine Frage zwecks besseren Verständnisses ist nun, wie kann ich diese Nummer mit Debug.Print abfragen?
Der Code



Code:
Debug.Print fs.Drives.Count.Item_1.SerialNumber


führt leider nicht zum Erfolg. Wie lautet der korrekte Code? Danke für eure Hilfe im voraus.
Top
#2
Hallo,

ich habe mal gegoogelt und folgendes gefunden.

Code:
http://xlvba.fr.yuku.com/topic/275/Drives-Get-Harddrive-serial-number#.Ve2-sZd-19w

Nachtrag: So

Code:
Debug.Print fs.getdrive("C:\").serialnumber

würde es gehen.
Gruß Stefan
Win 10 / Office 2016
Top
#3
Hallo!
Ergänzend:
Man kann das FSO auch direkt initialisieren und braucht nicht den Umweg über Object und CreateObject("scripting.FileSystemObject") zu gehen.
Code:
Sub FSO()
Dim fs As New FileSystemObject
Debug.Print fs.Drives.Count
End Sub

Dieses Verfahren hat den Vorteil, dass die Intellisense nach Eingabe von fs. zur Verfügung steht!

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#4
Hallo Ralf,

ich wollte deinen Code bei mir testen aber ich bekomme nur eine Fehlermeldung.

'Benutzerdefinierter Typ nicht definiert' und markiert ist die Deklerationszeile. Was mache ich falsch?
Gruß Stefan
Win 10 / Office 2016
Top
#5
Hi Stefan!
Ja, Du hast Recht!
Ich habe Early Binding in meiner Mappe (Verweis auf Microsoft Scripting Runtime).
Sorry! Hier ist tatsächlich Late Binding besser, weil leichter nachzuvollziehen.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste