Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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.
Antworten 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
Antworten 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)
Antworten 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
Antworten 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)
Antworten Top


Gehe zu:


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