我将工作簿(已关闭)中的工作表复制到包含代码的工作簿。
当我尝试运行宏时,它在设置wbsecond 行(第21和22行)上给出了语法错误
知道如何解决这个问题吗?
Sub Macro6()
'
' Macro6 Macro
Dim wbfirst As Workbook
Dim wbsecond As Workbook
Dim staticFolder As String
Dim dateFormat As String
'location of the parent folder
staticFolder = "C:\Users\WibblyWobblyy\Downloads\Test"
'provided previous month YYYYMM
dateFormat = Format(DateAdd("M", -1, Date), "yyyymm", 1)
'workbook with the code
Set wbfirst = ThisWorkbook
'workbook that needs to be copied over from
Set wbsecond = Application.Workbooks.Open(staticFolder & "\" & dateFormat & "\" & "Source files" & "\" & "NTMR" & " - " & dateFormat & ".xlsx",
UpdateLinks:=0)
wbsecond.Activate
Sheets("NTMR EC investments list").Select
Range("A1:AD1105").Select
Selection.Copy
Stop
答案 0 :(得分:1)
VBA中的可执行语句可以通过两种方式终止:
:
)分隔同一行指令; [NEWLINE]
)。这意味着当您按 ENTER 时逻辑代码行结束。
逻辑代码行可以使用行继续令牌(_
)跨越多个物理代码行:
Set wbsecond = Application.Workbooks.Open( _
staticFolder & "\" & dateFormat & "\" & "Source files" & "\" & "NTMR" & " - " & dateFormat & ".xlsx", _
UpdateLinks:=0)
那个[WS][UNDERSCORE]
- 需要空格。
所以,这里发生了什么:
Set wbsecond = Application.Workbooks.Open(staticFolder & "\" & dateFormat & "\" & "Source files" & "\" & "NTMR" & " - " & dateFormat & ".xlsx",
这是否被解析为整个逻辑行,因为它以[NEWLINE]
终止。但是赋值的右侧不能被解析为有效的表达式,因为.Open
成员调用没有完成 - 它以逗号结束,而每个VBA语法它应该结束用右括号。
这就是为您提供语法错误的原因。
如果您的指令跨越多个物理代码行,则需要终止每个"部分逻辑代码行"使用行继续 [WS][UNDERSCORE]
。