2017-04-24 5 views
1

Ich versuche, eine Word-Datei aus Excel mit VBA zu öffnen. Im Moment habe ich diesen Code:So öffnen Sie eine Datei aus Excel nach dem Benutzernamen

Sub OpenWordFile_Odrebekræftelse() 

    Set wordapp = CreateObject("word.Application") 

    Dim s As String 
    On Error Resume Next 
    s = Application.InputBox(Prompt:="Indtaste brugernavn (initialer)", Type:=2) 

    wordapp.documents.Open "C:\Users\" & s & "\Standarddokumenter\C02 Aftale\C02.5 Kontrakt\Ordrebekræftelse_version 1.1.dotx", ReadOnly:=True 

    wordapp.Visible = True 

Diese erlauben Sie mir, die Word-Datei zu öffnen, indem die Benutzer-Initialen eingeben, wenn Sie die Taste drücken. Der Pfad der Datei ist unterschiedlich, je nachdem, wer der Benutzer ist und das ist mein Problem hier ...

Diese Methode funktioniert gut, aber ich möchte loswerden der "geben Sie Ihre Initialen" Teil und haben ein Makro, das den Benutzernamen direkt erhält in den Pfad der Datei, je nachdem, welche Sitzung verwendet wird ... wenn Sie sehen, was ich meine.

Kann mir jemand dabei helfen? Ich schaute auf die Getusername Things, aber konnte es nicht richtig funktionieren ...

Vielen Dank!

Edit: Ich möchte nicht den Benutzernamen in einer Zelle anzeigen, ich möchte es in die Datei des Weges in den VBA-Code einfügen (wo "& s &" steht jetzt) ​​... wenn das macht Sinn! :)

+0

Randnotiz: Vermeiden Sie 'On Error Resume Next', das ist eine schlechte Übung. Bitte lesen Sie [VBA Best Practices - Fehlerbehandlung] (http://stackoverflow.com/documentation/excel-vba/1107/vba-best-practices/5411/error-handling#t=201704210621116765052), um zu sehen, wie. –

Antwort

1

Sie sollten Verwendung der Umgebungsvariablen %USERPROFILE%, die in %SystemDrive%\Users\{username}

In Ihrem Fall

wordapp.documents.Open "%USERPROFILE%\Standarddokumenter\C02 Aftale\C02.5 Kontrakt\Ordrebekræftelse_version 1.1.dotx", ReadOnly:=True 

oder

wordapp.documents.Open Environ("USERPROFILE") & "\Standarddokumenter\C02 Aftale\C02.5 Kontrakt\Ordrebekræftelse_version 1.1.dotx", ReadOnly:=True 

sollte funktionieren relsults machen.

Für weitere Informationen siehe: Wikipedia Environment Variables.

+0

Der zweite funktioniert gut! Vielen Dank! –

0

s = Application.UserName sollte den Trick tun.

s = Environ("USERPROFILE") könnte sogar noch besser sein.

+0

Nur eine Anmerkung: Diese zwei Zeilen sind nicht gleich! Die erste ergibt etwas wie "Vorname I. Nachname" (was in diesem Fall überhaupt nicht hilfreich ist, weil es den echten Namen und nicht den Windows-Benutzernamen zurückgibt) und das zweite ergibt etwas wie "C: \ Benutzer \ Benutzername" . –

Verwandte Themen