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

我试图激活,处理数据并从两个不同的公开工作簿(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 

问题是,当我运行macros时,它不能识别哪个工作簿被引用,它只是在其中一个工作簿中执行任务(作为示例写入OK)。 也就是说,在BCH工作簿中的单元格A3和A5中写入“OK”时,应该从A5的BCH和A3中写入“OK”。 任何build议如何解决?

任何build议如何解决?

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

解决方法是使用对象的完整限定。 您可以通过显式引用您打开的任何工作簿并指定保存范围的工作表来完成此操作。

 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...