使用Excel VBA在不打开工作簿的情况下复制数据

时间:2015-04-21 15:53:05

标签: excel vba excel-vba

我打算通过宏将数据从一个工作簿复制到另一个工作簿。但是,我正在使用我公司创建的加载项,该加载项禁止一次打开多个工作簿。

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循环,因为我相信这些在上下文中是多余的。

0 个答案:

没有答案