2017-04-24 111 views
1

我試圖使用VBA從Excel打開Word文件。現在我有這樣的代碼:如何根據用戶名從Excel打開文件

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 

這使我可以通過按下按鈕時輸入用戶的首字母來打開Word文件。該文件的路徑是不同的根據誰是用戶,這是我的問題在這裏...

這種方法工作正常,但我想擺脫「輸入您的姓名縮寫」部分,並有一個宏直接獲取用戶名根據誰正在使用的會話將文件導入到文件的路徑中......如果您明白我的意思。

任何人都可以幫助我嗎?我看着Getusername的東西,但無法讓它正常工作...

謝謝!

編輯:我不想在單元格中顯示的用戶名,我要在路徑的文件中的VBA代碼(其中「&小號&」現在站)「插入」它......如果可以有道理! :)

+0

注意:你應該避免'在錯誤恢復下一個'這是不好的做法。請閱讀[VBA最佳實踐 - 錯誤處理](http://stackoverflow.com/documentation/excel-vba/1107/vba-best-practices/5411/error-handling#t=201704210621116765052),看看如何。 –

回答

1

你應該充分利用環境變量%USERPROFILE%這relsults在%SystemDrive%\Users\{username}

的在你的情況

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

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

應該工作。

欲瞭解更多信息,請參閱:Wikipedia Environment Variables

+0

第二個很好用!謝謝! –

0

s = Application.UserName應該做的伎倆。

s = Environ("USERPROFILE")可能會更好。

+0

只需注意:這兩行不相等!第一個結果是'Prename I. Surname'(在這種情況下根本沒有任何幫助,因爲它返回真實姓名而不是Windows用戶名),第二個結果類似於'C:\ Users \ username' 。 –