2017-03-06 258 views
3

我在VBA中並不是很出色,我想知道是否有人可以幫助我。有我的問題。VBA SaveCopyAs帶有來自變量的文件路徑

我不想將工作簿另存爲文件夾,但取決於用戶,路徑會發生變化。所以,爲了解決這個問題,我創建了這個代碼:

Public Function MyDocsPathS() As String 
    MyDocsPathS = Environ$("USERPROFILE") & "\" & "OneDrive\Soumission" 
End Function 

這很好。但是我不知道如何在SaveCopyAs函數中編寫它。我已經試過這個和其他方式沒有任何成功:(見**之間的部分)

Sub Soumission() 
    Sheets("Modèle Soumission").Visible = True 
    **ActiveWorkbook.SaveCopyAs "MyDocsPathS & \S0000x.xlsm"** 
    Sheets("Modèle Soumission").Visible = False 
    Workbooks.Open (MyDocsPathS & ("S0000x") & ".xlsm") 
End Sub 

感謝您的任何幫助!

回答

3

您的代碼應該是這樣的:

Public Function MyDocsPathS() As String 
    MyDocsPathS = Environ$("USERPROFILE") & "\" & "OneDrive\Soumission" 
End Function 

Sub Soumission() 
    Sheets("Modèle Soumission").Visible = True 
    ActiveWorkbook.SaveCopyAs MyDocsPathS() & "\S0000x.xlsm" 
    Sheets("Modèle Soumission").Visible = False 
    Workbooks.Open MyDocsPathS() & "\S0000x.xlsm" 
End Sub 

理論上,你可以使用MyDocsPathS() & "\S0000x.xlsm"或只是MyDocsPathS & "\S0000x.xlsm"(即沒有0​​),但我認爲這是很好的做法,有括號存在,使其更清晰它是一個被調用的函數,而不僅僅是一個變量。

+0

非常感謝!有用! –

+0

@ YowE3K'Function MyDocsPathS'有什麼意義?它沒有變化,也沒有做任何特別的計算。你可以聲明一個名爲'MyDocsPathS'的變量,它獲得'Environ $(「USERPROFILE」)&「\」和「OneDrive \ Soumission」的值' –

+1

@ShaiRado個人而言,我會在自己的代碼中使用一個全局變量並在我的主代碼開始時初始化它。但是有一個優點(代碼可重用性方面)具有一個功能,這是OP選擇去的方式。解釋如何以我喜歡做的方式來做到這一點超出了OP當前問題的範圍。 – YowE3K