VBA-打开工作簿并为其他宏记住它

时间:2018-09-18 13:13:54

标签: excel vba

我想创建一个宏,该宏将:

  1. 打开浏览器窗口以选择一个保存的工作簿(我们称其为WB1)

  2. 在同一宏中为WB1分配某种形式的引用,使其可以被其他宏引用

我可以通过以下代码实现第1步:

Sub Add_New_Survey()
Dim pathString As String
Dim resultWorkbook As Workbook
Dim found As Boolean
pathString = Application.GetOpenFilename(fileFilter:="All Files (* . xl*) , *.xl* ")

' check if it's already opened
For Each wb In Workbooks
    If InStr(pathString, wb.Name) > 0 Then
        Set resultWorkbook = wb
        found = True
        Exit For
    End If
Next wb

If Not found Then
    Set resultWorkbook = Workbooks.Open(pathString)
End If
End Sub

这将打开工作簿。然后,我需要在WB1上执行一些我想自动化的数据准备活动。当我从浏览器中打开WB1时,是否可以引用它,以便以下宏知道专门在WB1上查找?

非常感谢

1 个答案:

答案 0 :(得分:1)

欢迎来到SO。您的对象resultWorkbook已链接到Workbooks.Open(pathString),因此,只要您不将其与Set resultWorkbook = Nothing取消链接,就可以始终在任何子项上引用该工作簿(但在以下位置将变量声明为Public:该模块,位于所有子模块之外)。

要将变量声明为公共变量,请阅读:

  

How do I declare a global variable in VBA?