当其他工作簿打开时如何自动更新Vlookup链接?

问题描述 投票:0回答:1

我有两个工作簿,“ Test1”“ Test2”,每个内部都有一张工作表。该代码位于“ Test1”工作簿内部,以及“ ThisWorkbook”模块内部。

我在“ Test1”工作簿中的工作表“ Mytest1”中有一个Vlookup,简单地在工作表“ Mytest2”中的工作簿“ Test2”中进行了Vlookup 。这两个工作簿均受密码保护,当我在另一台计算机上打开工作簿“ Test2”时,我遇到一个问题,当我打开我的计算机时,系统提示我输入“ Test2”的“输入密码” “ Test1”工作簿。我需要使Vlookups自动更新,而没有任何提示输入密码或打开第二个工作簿的提示。

我在下面同时贴了工作簿和代码的屏幕截图,以及代码本身。请编辑或询问我任何问题以澄清任何内容。

Private Sub Workbook_Open()

          Workbooks.Open Filename:="\\FILEPATH\Databases\Test 2.xlsm", Password:="Swarf", Updatelinks:=3
          ActiveWorkbook.Close SaveChanges:=True

End Sub

Code inside the "Test1" workbook

"Test1" workbook"Test2" workbook

excel vba vlookup auto-update
1个回答
0
投票

我没有时间测试,但是稍后。我会尝试将VLOOKUP重写为VLOOKUP的包装器,例如这样

Function VLOOKUP_BYPASS(LookFor As Variant, Rng As Excel.Range, lngCol As Long) As Variant

Dim strWorkbook As String

strWorkbook = Rng.Parent.Parent.Name

If WORKBOOKOPEN(strWorkbook) Then
    VLOOKUP_BYPASS = Application.WorksheetFunction.VLookup(LookFor, Rng, lngCol, False)
Else
    VLOOKUP_BYPASS = "NA"
End If

End Function

Function WORKBOOKOPEN(strWorkbookName As String) As Boolean

WORKBOOKOPEN = False

Dim wb As Excel.Workbook

On Error GoTo eHandle

Set wb = Workbooks(strWorkbookName)
WORKBOOKOPEN = True

Exit Function

eHandle:


End Function
© www.soinside.com 2019 - 2024. All rights reserved.