2017-10-21 114 views
0

我有三個不同的變量x,y & Z存儲不同的名稱。我不得不打開一個文件基於格式x_y_z.xls基於excel中的變量文件名VBA打開文件

dim x,y,z as string 
x= abc 
y= def 
z= ece 
Const strfolder As String = "C:\Users\source\" 
Const samepattern As String = "x_y_Z.xls" 
samefiletype = Dir(strfolder & samepattern, vbNormal) 
workbooks.open(samefiletye) 

由於某種原因,我必須在一個臨時變量X保存的文件名,Y & z和傳遞給打開基於文件變量名稱。我無法打開基於變量名稱的文件。

回答

1

不應該總是恆定的?你正試圖將變量分配給常量。也許聲明它也是變量。

dim x,y,z, strfolder, samepattern as string 
x= abc 
y= def 
z= ece 
strfolder = "C:\Users\source\" 
samepattern = x & "_" & y &"_" & Z & ".xls" 
samefiletype = Dir(strfolder & samepattern, vbNormal) 
workbooks.open(samefiletye) 
+1

你可以通過使用'Dim x As String,y As String,z As String,strfolder As String,samepattern As String'來改進這個答案 - 不會聲明變量的類型可能經常被認爲是次優的做法。 –

+1

因此,所有通過逗號分隔的變量(變量1,變量2,.....,變量n作爲字符串)是指末尾提到的類型,但是良好的實踐表示我們應該聲明每一個單獨的單詞? – RafMil

+2

嗨,不,如果你有'Dim x,y,z As String'那麼只有'z'是'String'和'x','y'將是'Variant'類型。如果你只是用String而不是變量類型的東西,這可能不是一個問題,它通常可能是一個矛盾的根源。 –

-1

更改下面的代碼。

dim x,y,z as string 
x= "abc" 
y= "def" 
z= "ece" 
Const strfolder As String = "C:\Users\source\" 
Const samepattern As String = x & "_" & y &"_" & Z & ".xls" 
samefiletype = Dir(strfolder & samepattern, vbNormal) 
workbooks.open(samefiletye) 
+0

謝謝,但我得到錯誤所需的常量表達式。我該如何擺脫它。 –

+0

已經改變了一點,對那個錯過感到抱歉。 – Shrikant