U onom tvom kodu argument treba ti da zadaš. Mislio sam da si poslao samo deo tvog programa. Međutim funkcija koju si skinuo sa tog linka traži da ga zadaš. Satviš u globalni modul:
Global drvpath As String
drvpath = "C:"
No sve jedno. Daću ti funkciju koja stvarno vraća serijski broj diska ali opet moraš negde da zadaš argumente. Recimo ovako: Na događaj On Click nekog dugmeta napišeš
Dim disk As String
disk = Fsi_Uzmi_SnDisk("C:", "HEX")
Funkciju stavi u VBA modul i ona izgleda ovako:
Code:
Public Function Fsi_Uzmi_SnDisk(Drajv, TipOdg As String) As String
'Funkcija za uzimanje broja diska.
'Drajv = Putanja diska za disk ciji broj nam treba. npr.: "C:\Windows" ili samo "C:\"
'TipOdg = Tip odgovora "DEC" za decimalni ili "HEX" za Heksadecimalni
Dim FS, d
Set FS = CreateObject("Scripting.FileSystemObject")
Set d = FS.GetDrive(FS.GetDriveName(FS.GetAbsolutePathName(Drajv)))
Select Case TipOdg
Case "Dec": Fsi_Uzmi_SnDisk = CStr(Abs(d.SerialNumber))
Case "Hex": Fsi_Uzmi_SnDisk = CStr(Hex(Abs(d.SerialNumber)))
Case Else: Err.Raise 65535, "Fsi_Uzmi_SnDisk", "Nepoznat ulazni parametar TipOdg=[" & TipOdg & "]"
End Select
End Function
Kad pogledaš promenljivu disk ona bi trebalo da ima vrednost. To uradiš koristeći MsgBox.
Sad bi trebalo da ti je jasnije, pa ćeš odlučiti koju ćeš funkciju da koristiš. U svakom slučaju ništa bez argumenta.