Für 32Bit und 64Bit Office Versionen
Problemstellung:
Wie kann man unter Windows mittels API ein virtuelles Laufwerk erstellen?
#If VBA7 Then 'Code für 32 bit und 64 bit Office VBA 7 #If Win64 Then 'Code für 64-bit Office VBA 7 Declare PtrSafe Function DefineDosDevice Lib "kernel32" Alias _ "DefineDosDeviceA" (ByVal dwFlags As Long, ByVal lpDeviceName As String, _ ByVal lpTargetPath As String) As Long #Else 'Code für 32-bit Office VBA 7 Public Declare Function DefineDosDevice Lib "kernel32.dll" Alias _ "DefineDosDeviceA" (ByVal dwFlags As Long, ByVal lpDeviceName As String, _ Optional ByVal lpTargetPath As String = vbNullString) As Long #End If #Else 'Code für VBA 6 (32 bit) Public Declare Function DefineDosDevice Lib "kernel32.dll" Alias _ "DefineDosDeviceA" (ByVal dwFlags As Long, ByVal lpDeviceName As String, _ Optional ByVal lpTargetPath As String = vbNullString) As Long #End If Public Enum DefintionTyp Create_LW = &H0 Remove_LW = &H2 End Enum Public Function Virtuelles_LW(lngLW_Typ As DefintionTyp, sNewLW As String, _ Optional sTargetPath As String = vbNullString) As Integer '--------------------------------------------------------------------------------------- ' Procedure : Virtuelles_LW ' DateTime : 29.01.2007 15:14 ' Author : TommyK '--------------------------------------------------------------------------------------- Dim iResult As Integer On Error GoTo Virtuelles_LW_Error If Right(sTargetPath, 1) <> "" Then sTargetPath = sTargetPath & "" iResult = DefineDosDevice(lngLW_Typ, sNewLW, sTargetPath) Virtuelles_LW = iResult On Error GoTo 0 Exit Function Virtuelles_LW_Error: Dim strErrString As String strErrString = "Error Information..." & vbCrLf strErrString = strErrString & "Error#: " & Err.Number & vbCrLf strErrString = strErrString & "Description: " & Err.Description MsgBox strErrString, vbCritical + vbOKOnly, "Error in Function Virtuelles_LW" End Function
Die Funktion hat 3 Parameter
1. lngLW_Typ
Durch die Enum-Auflistung definiert
Create_LW=LW erstellen
Remove_LW=LW löschen
2. sNewLW
Der LW-Buchstabe der erstellt bzw. gelöscht werden soll
3. sTargetPath
optionaler Parameter
Bei der Erstellung wird der Pfad angegeben der den neuen LW-Buchstaben darstellen soll.
Bei Löschung eines LW bleibt der Parameter leer.
Eine Löschung ist nicht unbedingt erforderlich, da das LW nach einem Neustart
automatisch gelöscht sind.
Die Funktion gibt einen Wert zurück der aussagt ob die Operation gelungen ist oder nicht.
0=LW konnte nicht erstellt werden
1=LW ohne Fehler erstellt
1. lngLW_Typ
Durch die Enum-Auflistung definiert
Create_LW=LW erstellen
Remove_LW=LW löschen
2. sNewLW
Der LW-Buchstabe der erstellt bzw. gelöscht werden soll
3. sTargetPath
optionaler Parameter
Bei der Erstellung wird der Pfad angegeben der den neuen LW-Buchstaben darstellen soll.
Bei Löschung eines LW bleibt der Parameter leer.
Eine Löschung ist nicht unbedingt erforderlich, da das LW nach einem Neustart
automatisch gelöscht sind.
Die Funktion gibt einen Wert zurück der aussagt ob die Operation gelungen ist oder nicht.
0=LW konnte nicht erstellt werden
1=LW ohne Fehler erstellt
Aufruf:
Für das Verzeichnis "D:\users\h3wnjtyv\Test" soll das neue LW "G:" erstellt werden.
Für das Verzeichnis "D:\users\h3wnjtyv\Test" soll das neue LW "G:" erstellt werden.
If Virtuelles_LW(Create_LW, "G:", "D:\users\h3wnjtyv\Test") = 1 Then MsgBox "LW wurde erstellt!", vbInformation + vbOKOnly, "Erfolg" Else MsgBox "LW konnte nicht erstellt werden!", vbCritical + vbOKOnly, "Fehler!" End If
Um das LW zu löschen:
If Virtuelles_LW(Remove_LW, "G:") = 1 Then MsgBox "LW wurde gelöscht!", vbInformation + vbOKOnly, "Erfolg" Else MsgBox "LW konnte nicht gelöscht werden!", vbCritical + vbOKOnly, "Fehler!" End If
Ähnliche Artikel
Weiterlesen...