我正在尝试激活,处理数据并从两个不同的打开工作簿(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”。关于如何解决它的任何建议?
答案 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...