2014-10-16 111 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! (除非你告訴他)

相關問題