VBA宏工作簿.open或工作簿.activate通过变量引用

VBA宏工作簿.open或工作簿.activate通过变量引用,vba,excel,excel-formula,Vba,Excel,Excel Formula,如何引用通过此子过程打开的主要工作簿和第二个工作簿?我尝试执行workbooks.client_path.activate,因为我使用此宏的目标是打开一个单独的工作簿,该工作簿分配给变量client_path,并将a:a列中的每1到200个值与主工作簿中K:K列的所有值进行协调。如果在客户端路径工作簿的a:a列中再次找到值,但在我的主工作簿的K:K列中未找到值-我希望将唯一值添加到我的主工作簿的M:M列中。与此相反,我希望在我的主工作簿上找到但在客户端路径工作簿上找不到的任何值都显示在我的主工作

如何引用通过此子过程打开的主要工作簿和第二个工作簿?我尝试执行workbooks.client_path.activate,因为我使用此宏的目标是打开一个单独的工作簿,该工作簿分配给变量client_path,并将a:a列中的每1到200个值与主工作簿中K:K列的所有值进行协调。如果在客户端路径工作簿的a:a列中再次找到值,但在我的主工作簿的K:K列中未找到值-我希望将唯一值添加到我的主工作簿的M:M列中。与此相反,我希望在我的主工作簿上找到但在客户端路径工作簿上找不到的任何值都显示在我的主工作簿的N:N列中

我正在开发这段代码的主要工作簿的名称是title Client DIRTY watchlist工作簿Client_path的内容每天更新,随着时间的推移,这些内容都是无用的

我是否需要创建函数来完成此变量工作簿引用

Sub Client_Dirty_Recon()

Dim Client_path As String
Dim Client_watchlist As Workbook
Dim Client_client_email As Workbook
Set Client_watchlist = ActiveWorkbook
Dim email_range As Range
Dim watchlist_range As Range

Application.ScreenUpdatClient = False  
Client_path = Range("Path")
Workbooks.Open Client_path
Dim recon_list As Range

'For Each n In recon_list:
Dim i As Variant
    For i = 1 To 200

        Set email_range = ActiveWorkbook.ActiveSheet.Range("A" & i)
        Dim b As Variant

            For Each b In email_range

                Set watchlist_range = Sheets("Client DIRTY watchlist").Range("B:B")


                'if b
            Next b

    Next i

End Sub

你能不能先参考一下你的工作簿

Dim wb as workbook
Dim wbDirty as workbook

set wb = thisWorkbook
set wbDirty = workbooks.open Client_Path
然后,当您定义范围时,Excel知道它们属于哪个工作簿

Dim rngReconcile as range
Dim rngWatch as range

set rngReconcile = wb.Sheets(1).Range("K:K")
set rngWatch = wbDirty.Sheets("Client DIRTY watchlist").Range("B:B")

然后继续你的循环代码

你能在前面引用你的工作簿吗

Dim wb as workbook
Dim wbDirty as workbook

set wb = thisWorkbook
set wbDirty = workbooks.open Client_Path
dim Wb as workbook

set wb= Workbooks.Open (Client_path).activate
然后,当您定义范围时,Excel知道它们属于哪个工作簿

Dim rngReconcile as range
Dim rngWatch as range

set rngReconcile = wb.Sheets(1).Range("K:K")
set rngWatch = wbDirty.Sheets("Client DIRTY watchlist").Range("B:B")
然后继续循环代码

dim Wb as workbook

set wb= Workbooks.Open (Client_path).activate
这将在一行中打开并激活所有内容,并设置一个变量供以后使用wb

请注意,以后引用wb将不会再次打开它,也不会再次激活它,它只是引用wb!除非你告诉他

这将在一行中打开并激活所有内容,并设置一个变量供以后使用wb

请注意,以后引用wb将不会再次打开它,也不会再次激活它,它只是引用wb!除非你告诉他