从两个具有变量名称的打开工作簿导入数据

时间:2017-03-26 20:19:10

标签: excel vba excel-vba

我正在尝试激活,处理数据并从两个不同的打开工作簿(BCH mm-yy.xlsx和Portafolio mm-yy.xlsx)导入信息,其中mm-yy每月都会更改。

作为如何激活两个工作簿的示例,我执行了以下操作:

Sub ActivateWorkbook()

    FName1 = Dir("c:\BCH" & "??-??" & ".xlsx")
    Range("A5").Select
    ActiveCell.FormulaR1C1 = "OK"

    FName2 = Dir("c:\Portafolio" & "??-??" & ".xlsx")
    Range("A3").Select
    ActiveCell.FormulaR1C1 = "OK"

End Sub

问题在于,当我运行宏时,它无法识别我所引用的工作簿,并且只在其中一个工作簿中执行任务(以OK为例)。也就是说,它在BCH工作簿中的单元格A3和A5中写入“OK”,它应该在BCH中从BCH和A3中写入“OK”。关于如何解决它的任何建议?

1 个答案:

答案 0 :(得分:3)

  

关于如何解决它的任何建议?

当然。由于使用了不合格的范围和工作表对象,这种随机模式是明知的。当你引用一个不合格的范围时,它会自动引用ActiveSheet在运行时发生的任何事情。

解决方案是使用对象的完全限定。您可以通过对所打开的任何工作簿进行显式引用,并指定包含范围的工作表来实现此目的。

FName1 = Dir("c:\BCH" & "??-??" & ".xlsx")
Dim wb1 as workbook, ws1 as worksheet
Set wb1 = Workbooks.open(FName1)
Set ws1 = wb1.Worksheets("Sheet1")    ' <-- This is a fully qualified Worksheet
ws1.Range("A5").FormulaR1C1 = "whatever" ' <-- This is a fully qualified range

' And similarly with FName2...