1 1 1 1 1 1 1 1 1 1 Rating 5.00 (1 Vote)

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
Aufruf:
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