簡體   English   中英

VBA Macro workbook.open或workbook.activate通過變量引用

[英]VBA Macro workbook.open or workbook.activate through variable reference

如何參考通過此子過程打開的主要工作簿和第二個工作簿? 我嘗試做workbooks.("client_path").activate因為我的宏目標是打開一個單獨的工作簿,該工作簿分配給變量client_path並將A:A列中的每個(1到200)值與所有值進行協調我的主要工作簿的K:K列。 如果在client_path工作簿(同樣是A:A列)上找到了一個值,但是在我的主要工作簿上(又是K:K列)上找不到了一個值-我想將唯一值添加到我的主要工作簿的M:M列中。 相反,我希望在主工作簿上找到但在client_path工作簿上找不到的任何值都出現在主工作簿的N:N列中。

我正在開發此代碼的主要工作簿的名稱為標題“ Client 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

您能早些引用工作簿嗎?

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

set wb= Workbooks.Open (Client_path).activate

這將打開並在一行中將其全部激活,並設置一個變量供以后使用(wb)。

請注意,稍后引用wb不會再次打開它,也不會再次激活它,它只是指向wb! (除非你告訴他)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM