通过变量引用VBA宏workbook.open或workbook.activate

phi*_*psK 1 excel vba excel-vba excel-formula

如何引用我的主要工作簿和我通过此子过程打开的第二个工作簿?我尝试这样做,workbooks.("client_path").activate因为我的目标是使用此宏来打开一个单独的工作簿,该工作簿被分配给变量client_path并协调A列中的每个(1到200)值:A与我的主工作簿的K列:K的所有值.如果在client_path工作簿上找到一个值(再次列A:A),但不在我的主工作簿上(再次列K:K) - 我想将唯一值添加到我的主工作簿的M:M列.相反的逻辑,我希望在我的主工作簿上找到但在我的client_path工作簿上找不到的任何值出现在我的主要工作簿的N:N列中.

我正在开发此代码的主要工作簿的名称是标题"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
Run Code Online (Sandbox Code Playgroud)

MMe*_*rry 7

你能早点参考你的工作簿吗?

Dim wb as workbook
Dim wbDirty as workbook

set wb = thisWorkbook
set wbDirty = workbooks.open Client_Path
Run Code Online (Sandbox Code Playgroud)

然后,当您定义范围时,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")
Run Code Online (Sandbox Code Playgroud)

然后继续循环代码