2014-10-16 192 views
1

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

我正在开发此代码的主要工作簿的名称是标题“客户端DIRTY监视列表”工作簿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 

回答

6

您能否提前参考您的工作簿?

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") 

然后继续你的循环代码

2
dim Wb as workbook 

set wb= Workbooks.Open (Client_path).activate 

这打开,并激活这一切在一条线,一个集供以后使用(WB)的变量。

请注意,稍后引用wb将不会再次打开它,并且不会再次激活它,它只是引用wb! (除非你告诉他)

相关问题