我有两个工作簿,“ 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
我没有时间测试,但是稍后。我会尝试将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