首页 > 解决方案 > 如何在其他工作簿打开时自动更新 Vlookup 链接?

问题描述

我有两个工作簿,“Test1”“Test2”,每个工作簿里面都有一张工作表。代码位于“Test1”工作簿的“ThisWorkbook”模块中。

我在"Test1"工作簿内的工作表"Mytest1"中有一个 Vlookup,它只是在工作表"Mytest2"内使用工作簿"Test2"进行 Vlookup 。两个工作簿都受密码保护,我遇到了一个问题,如果我在另一台计算机上打开了工作簿“Test2” ,当我打开“Test1”工作簿时,我会收到“Test2”的“输入密码”提示。我需要在不提示输入密码或打开第二个工作簿的情况下自动更新 Vlookups。

我在下面发布了工作簿和代码的屏幕截图,以及代码本身。请编辑或问我任何问题以澄清任何事情。

Private Sub Workbook_Open()

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

End Sub

里面的代码

标签: excelvbavlookupauto-update

解决方案


我没有时间测试,但稍后会。我会尝试像这样将 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

推荐阅读