PDA

Vollständige Version anzeigen : Import einer Datei vom Desktop


Wolfgang Biedermann
13.10.2011, 13:52
Hallo zusammen,

ich importiere eine csv-Datei in die DB mittels

DoCmd.TransferText acImportDelim, "Anlage zur Datei Prov Importspezifikation", "prov", "C:\Documents and Settings\Wolfgang Biedermann\Desktop\anlage zur prov.csv", True, ""

Wenn nun die DB auf einem anderen Rechner installiert ist, die zu importierende csv-Datei aber immer auf dem Desktop liegt --> wie kann ich im o.a. code den aktuellen Benutzer eingeben?

Danke

:) Wolfgang

Andre.Heisig
13.10.2011, 13:57
die %USERNAME% Variable des Systems auswerten wäre eine Möglichkeit.

kama
13.10.2011, 14:05
Du benötigst diese Function und Declaration. in ein Modul z.B. Global kopieren
Declare Function GetUserName Lib "advapi32.dll" Alias _

"GetUserNameA" (ByVal lpBuffer As String, _

ByRef nSize As Integer) As Integer



Public Function GetUserName() As String

Dim iReturn As Integer

Dim userName As String

userName = New String(CChar(" "), 50)

iReturn = GetUserName(userName, 50)

GetUserName = userName.Substring(0, userName.IndexOf(Chr(0)))

End Function
Dein Code kann dann so ausehen


Dim Benutzer as String
Benutzer=Getusername()
DoCmd.TransferText acImportDelim, "Anlage zur Datei Prov Importspezifikation", "prov", "C:\Documents and Settings\" & Benutzer & "\Desktop\anlage zur prov.csv", True, ""

Wolfgang Biedermann
13.10.2011, 17:17
Ja, das klappt.

Danke Euch!


Gruß
:) Wolfgang

FW
13.10.2011, 17:34
... das klappt aber auch nur auf englischen Systemen!
Ansonsten musst Du Dir den Pfad auf andere Art und Weise holen, z. B. mit den Api-Funktionen SHGetSpecialFolderLocation und SHGetPathFromIDList oder Environ$("USERPROFILE")...

kama
13.10.2011, 18:23
... das klappt aber auch nur auf englischen Systemen!
Why?
Environ ist seit 2007 böser Code und soll nicht mehr verwendet werden.

Thomas Möller
13.10.2011, 18:30
Hallo!

... das klappt aber auch nur auf englischen Systemen!

Ich persönlich würde auch die Funktion SHGetFolderPath bevorzugen.

Warum bist Du der Meinung, das der Code auf einem deutschsprachigen System nicht läuft?

CU

Wolfgang Biedermann
14.10.2011, 09:17
Ich habe ein deutsches System, und das

Option Compare Database

Declare Function getusername Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, _
nSize As Long) As Long

Function getbenutzer() As String

Dim retval As Long
Dim Puffer As String * 256

retval = getusername(Puffer, Len(Puffer))

' Bei vbNullChar "abtrennen" und anzeigen
If retval <> 0 Then
getbenutzer = Left$(Puffer, InStr(1, Puffer, vbNullChar) - 1)
End If

End Function

in Verbindung mit dem Aufruf

Dim Benutzer As String
Benutzer = getbenutzer()
DoCmd.TransferText acImportDelim, "Anlage zur Provision Importspezifikation", "prov", "C:\Documents and Settings\" & Benutzer & "\Desktop\anlage zur provision.csv", True, ""

funktioniert.

:) Wolfgang

FW
14.10.2011, 10:07
Warum bist Du der Meinung, das der Code auf einem deutschsprachigen System nicht läuft?... weil der Pfad "Dokumente und Einstellungen" heißen würde...

Atrus2711
14.10.2011, 10:23
Das Englische wird auch auf deutschen Systemen akzeptiert. Das gilt für quasi alle lokalisierten Bezeichnungen wie Benutzer/User und Dokumente/Documents etc.