2017-04-24 15 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コード(「& s &」が現れます)に挿入する必要があります。何か意味があります! :)

+0

サイドノート:On Error Resume Nextを避けるべきです。これは悪い習慣です。方法については、[VBAベストプラクティス - エラー処理](http://stackoverflow.com/documentation/excel-vba/1107/vba-best-practices/5411/error-handling#t=201704210621116765052)を参照してください。 –

答えて

1

あなたはあなたのケースでは%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 

をrelsults環境変数%USERPROFILE%の使用は動作するはず行う必要があります。

詳細については、Wikipedia Environment Variablesを参照してください。

+0

2つ目はうまくいきます!ありがとうございました! –

0

s = Application.UserNameトリックを行う必要があります。

s = Environ("USERPROFILE")がさらに優れている可能性があります。

+0

ちょうどメモ:これらの2つの行は等しくありません!最初の結果は、 'Prename I. Surname'(この場合は実際の名前でWindowsユーザー名ではないので何も役に立たない)と、' C:\ Users \ username'のような2番目の結果になります。 –

関連する問題