Excel VBA – 在名称中包含datevariables的工作簿

这是我发布的第一个问题,所以忍受着我。 我正在写一些VBA代码来将多个文件中的select工作表复制到一个主文件中。 我遇到的问题是工作簿名称包含基于用户input的datevariables。 当我尝试引用源工作簿之一,我打开它我得到一个编译错误:预期:列表分隔符或) – 这是给我的错误线 –

Public Sub Run_Process() Dim Y As String Dim M As String Y = "2016" M = "01" 'Opens the workbooks Workbooks.Open Filename:="\\(Path)\" & Y & "\" & Y & M & "CD_1993 Source.xlsx" Workbooks.Open Filename:="\\(Path)\" & Y & "\" & Y & M & "CD_1997 Source.xlsx" Workbooks.Open Filename:="\\(Path)\" & Y & "\" & Y & M & "CD_2002 Source.xlsx" Workbooks.Open Filename:="\\(path)\" & Y & "\" & Y & M & "CD_1993 Soource2.xlsx" Workbooks.Open Filename:="\\(Path)\" & Y & "\" & Y & M & "CD_1997 Soource2.xlsx" Workbooks.Open Filename:="\\(Path)\" & Y & "\" & Y & M & "CD_2002 Source2.xlsx" 'Adding New Workbook Workbooks.Add 'Saving the Workbook ActiveWorkbook.SaveAs Filename:="\\(Path)\" & Y & "\" & Y & M & "Master.xlsx" Workbooks(""Y & M & "CD_1993 Source.xlsx").Sheets("Custom").Copy Before:=Workbooks("Master.xlsx").Sheets(1) End Sub 

我已经添加了额外的“,这并没有伎俩….

YMvariables? 我假设Y =年,M =几​​个月?
应该是文件名是201603CD_1993Source.xlsx

这一切都取决于Y和M的原始价值。 还有Vegard提到的额外报价的问题。
尝试下面的代码,并注意Format$命令 – 这将采取数字和格式,根据需要返回一个string。

 Sub test() Dim M As Long Dim Y As Long M = 3 Y = 2016 MsgBox Y & M & "CD_1993Source.xlsx" & vbCr & _ Format$(Y, "0000") & Format$(M, "00") & "CD_1993Source.xlsx" End Sub 

尝试像这样改变你的代码(使用文本部分和对象的variables):

 Public Sub Run_Process() Dim Y As String Dim M As String Dim NamePart as String Dim WB as Workbook Dim NewWB as Workbook Y = "2016" M = "01" NamePart = "\\(Path)\" & Y & "\" & Y & M 'Adding New Workbook set NewWB = Workbooks.Add 'Opens the workbooks, copies the sheet and closes set WB = Workbooks.Open Filename:=NamePart & "CD_1993 Source.xlsx" WB.sheets("custom").copy before:= NewWB.sheets(1) wb.close false set WB = Workbooks.Open Filename:=NamePart & "CD_1997 Source.xlsx" WB.sheets("custom").copy before:= NewWB.sheets(1) wb.close false set WB = Workbooks.Open Filename:=NamePart & "CD_2002 Source.xlsx" WB.sheets("custom").copy before:= NewWB.sheets(1) wb.close false set WB = Workbooks.Open Filename:=NamePart & "CD_1993 Soource2.xlsx" WB.sheets("custom").copy before:= NewWB.sheets(1) wb.close false set WB = Workbooks.Open Filename:=NamePart & "CD_1997 Soource2.xlsx" WB.sheets("custom").copy before:= NewWB.sheets(1) wb.close false set WB = Workbooks.Open Filename:=NamePart & "CD_2002 Source2.xlsx" WB.sheets("custom").copy before:= NewWB.sheets(1) wb.close false 'Saving the Workbook ActiveWorkbook.SaveAs Filename:=NamePart & "Master.xlsx" End Sub