我打算通过宏将数据从一个工作簿复制到另一个工作簿。但是,我正在使用我公司创建的加载项,该加载项禁止一次打开多个工作簿。
Application.ScreenUpdating = False
CurrentYear = Year(Date)
CurrentMonth = Month(Date)
StartDate = DateAdd("m", MonthOffset, Date)
MonthNo = Month(StartDate)
YearNo = Year(StartDate)
path2 = IIf(MonthNo >= 10, Dir("C:\path\filename " & YearNo & "-" & MonthNo & ".xlsx"), Dir("C:\path\filename " & YearNo & "-0" & MonthNo & ".xlsx"))
p2file = "C:\path"
Varrr = IIf(MonthNo >= 10, p2file & path2 & "[filename.xlsx " & YearNo & "-" & MonthNo & ".xlsx]Sheetname!", p2file & path2 & "[filename.xlsx " & YearNo & "-" & MonthNo & ".xlsx]Sheetname!")
i = 0
Do While Len(path2) > 0
Varrrcell = Cells(3,4+i).Address(RowAbsolute:=False, ColumnAbsolute:=False)
Varrr = Varrr & Varrrcell
currentWb.Sheets("Blad1").Cells(27, 2 + i + 12 * (YearNo Mod 2015)).Formula= "=Varrr"
i = IIf(i > 12, 1, i + 1)
YearNo = IIf(i > 12, YearNo + 1, YearNo)
path2 = IIf(i >= 10, Dir("C:\path\filename " & YearNo & "-" & i & ".xlsx"), Dir("C:\path\filename" & YearNo & "-0" & i & ".xlsx"))
Varrr = IIf(i >= 10, p2file & path2 & "[filename.xlsx " & YearNo & "-" & MonthNo & ".xlsx]Sheetname!", p2file & path2 & "[filename.xlsx " & YearNo & "-" & MonthNo & ".xlsx]Sheetname!")
Loop
Application.ScreenUpdating = True
编辑:我已经重新编写了我的工作,直接使用公式来引用工作簿。此解决方案实际上返回了我想要复制的正确路径,文件和单元格,以便按预期工作。但是,它会在每个单元格中返回“Varrr”。如何让它返回值而不是变量名?
EDIT2:我还在path2&之前加上了“='” p2file& “..”创建和更新Varrr时,只需说出
currentWb.Sheets("Blad1").Cells(27, 2 + i + 12 * (YearNo Mod 2015)).Formula= Varrr
但这会导致错误1004
EDIT3:我还在工作表名称前添加了“结束”。它没有帮助。
EDIT4:我也试图省略等号,并且满足Varrr = Varrr& Varrcell
并顺序提出:
currentWb.Sheets("Blad1").Cells(27, 2 + i + 12 * (YearNo Mod 2015)).Formula = "=" & varrr
但它在相同的代码段中提供了代码1004。 “应用程序定义或对象定义的错误”
编辑5: 尝试合并ExecuteExcel4Macro我尝试了以下解决方案,其中Dim ReturnedValue为String:
Varrr = "'" & p2file & "[filename.xlsx " & YearNo & "-" & MonthNo & ".xlsx]Sheetname!'"
ReturnedValue = Varrr & Range("D3").Adress(True,True,-4150)
MsgBox ExecuteExcel4Macro(ReturnedValue)
其中MsgBox给出了函数错误1004.这里我把它修剪了一下以省略“IIf”语句和Do循环,因为我相信这些在上下文中是多余的。