AW: Dynamische Pfadangabe
20.06.2008 13:32:00
Ramses
Hallo Rudi
EXCEL Schlüsselwörter für Funktionen dürfen/sollen nicht als Variablen verwendet werden !!
Name "C:\DeineDatei.xls" "C:\NeuerName.xls"
und schon ist das Chaos passiert.
Grundsätzlich würde ich das aber dann so lösen:
Option Explicit
Private Declare Function GUN Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Public Function ShowUsername() As String
'Verz = "C:\Documents and Settings\Name\Beispiel.xls"
'Das ist kein Verzeichnis, sondern ein Dateiname
'und macht insofern keinen Sinn
'Ausserdem erlischt die Variable wenn das Makro fertig ist
'und ist demzufolge sinnlos
'Also müsste das zumindest so lauten, für die Dauer
'der Anwendung damit tarVerz als Variable erhalten bleibt
'und später weiterverwendet werden kann
Static tarVerz As String
Dim myFSO As Object, objShell As Object
Set myFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Shell.Application")
'frmInfo.Label4 = ActiveUserName
If ActiveUserName "" Then
tarVerz = "C:\Documents and Settings\" & ActiveUserName
If Not myFSO.folderexists(tarVerz) Then
MsgBox "Der Ordner :"" " & tarVerz & " "" existiert nicht.", vbCritical + vbOKOnly, " _
Fehler"
Exit Function
End If
Exit Function
End If
'Wenn kein Windows_NT und höher OS verwendet wird.
MsgBox "Das Zielverzeichnis kann nicht definiert werden", vbOKOnly, "Fehler: User unbekannt"
End Function
Public Function ActiveUserName() As String
'Benutzernamen auslesen
Dim AUN As String * 100
Dim AunLen As Byte
AunLen = 100
If GUN(AUN, Len(AUN)) Then
ActiveUserName = Left(AUN, AunLen)
Else
ActiveUserName = ""
End If
End Function
Nun kann die Variable später für "ChDrive" o.ä. verwendet werden
Gruss Rainer