2017-10-21 254 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