2017-08-25 8 views
1

私はコンピュータ上のファイルから情報を引き出すVBAが書かれたExcelファイルを持っています。 Excelファイルはネットワークフォルダにあり、ネットワーク上の他のユーザーもExcelファイルを使用したいと考えています。しかし、私はVBA上のファイルパスをハードコーディングしています。したがって、別のユーザーがファイルを開くたびに、利用できないファイルを探します。VBA内のファイルパスをユーザー名で置き換えます。

これは私が変更したいパスです:

C:\Users\User1\Documents\The Market in\DATA FOR REPORTS.xlsx 

パス上の唯一の違いは、ユーザーの名前を次のようになります。ユーザー1、ユーザー2、など

は、どのように私はVBAコードを書くことができますそれを開くにはWindowsのユーザー名とファイルパスのユーザー名を置き換えるためには?

私はワイルドカードを使用しようとしましたが、ENVIRON( "username")も使用しようとしましたが、成功しませんでした。

私は交換したい以下のコードは、何です:

Private Sub Workbook_Open() 

Dim username As String 

username = Environ("username") 

Application.Visible = False 
WelcomeForm.Show 
Workbooks.Open ("C:\Users\&username&\Documents\The Market in\DATA FOR REPORTS.xlsx") 

End Sub 

はこのような何かを

+1

'ENVIRON( "ユーザー名" ) 'はうまくいくはずです。どのように使用したのか、問題/エラーは何ですか? –

+0

私はちょうど質問にそれを追加しました。ありがとうございました。 – franciscofcosta

+0

これは正しい連結構文ではありません - "C:\ Users \&username&\ Documents' - 以下の答えを慎重に見てください – braX

答えて

6

を試してみて本当にありがとうございます::

Private Sub Workbook_Open() 

Application.Visible = False 
WelcomeForm.Show 
Workbooks.Open ("C:\Users\User1\Documents\The Market in\DATA FOR REPORTS.xlsx") 

End Sub 

これは私が使用してENVIRONをやったことある

Private Sub Workbook_Open() 
    Application.Visible = False 
    WelcomeForm.Show 
    Workbooks.Open ("C:\Users\" & Environ("UserName") & "\Documents\The Market in\DATA FOR REPORTS.xlsx") 
End Sub 
+0

ありがとう! – franciscofcosta

2

Environ("userprofile")は、パス&のユーザー名を返します。私のPC上で
それはC:\Users\darren.bartrup-cook

別の方法があるが返されます。私のPC上で
CreateObject("WScript.Shell").SpecialFolders("MyDocuments")
これは、あなたがこのようにそれを使用することができC:\Users\darren.bartrup-cook\Documents

返します

Private Sub Workbook_Open() 

    Dim wrkBK As Workbook 
    Dim DocFldr As String 

    DocFldr = CreateObject("WScript.Shell").SpecialFolders("MyDocuments") 

    Set wrkBK = Workbooks.Open(DocFldr & "\The Market in\DATA FOR REPORTS.xlsx") 

    MsgBox wrkBK.Name & " is open", vbOKOnly + vbInformation 

End Sub 
関連する問題