从一个工作簿的工作表复制到另一个工作簿时出错

时间:2017-04-28 18:09:34

标签: vba copy

我将工作簿(已关闭)中的工作表复制到包含代码的工作簿。

当我尝试运行宏时,它在设置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

1 个答案:

答案 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]