Bill有一组经常用作套件的多个工作簿。

为了防止窥视这些工作簿的内容,他为每个工作簿设置了密码。 Bill使用菜单工作簿作为该套件中其他工作簿的网关。该工作簿包含指向各个工作簿的超链接,从而使他可以快速访问其套件中的工作簿。

由于Excel通过密码在文件级别保护每个工作簿,因此,无论Bill何时单击超链接,他都需要输入他要访问的工作簿的密码。他想知道是否有一种方法可以只输入一次密码(对于他的套件中的所有工作簿都使用相同的密码),并且无需重复输入密码就可以访问所有工作簿。

简短的答案是,由于Excel会分别对待每个文件,因此无法完成此操作。通过超链接切换到一个单独的文件,然后Excel再次要求输入密码。避免烦恼只有两种可能的方法。第一种是将所有单独的工作簿合并为一个工作簿。由于多种原因,这可能不是最佳解决方案。 (例如,您可能需要将单个工作簿分发给其他用户。如果将所有工作簿合并为一个,则将删除此功能。)

另一种解决方案是使用宏来处理工作簿之间的切换,而不是使用超链接。建立宏系统的方法有很多,但是模仿超链接方法的一种简单方法是创建一个新的工作表,该工作表将充当您的“网关”。在要添加超链接的单元格中,而是放置要链接到的每个工作簿的完整路径和文件名。

您应该最终得到工作簿的文件规范列表。

现在,右键单击此新工作表的工作表选项卡。 Excel将显示一个上下文菜单,您应该从中选择“查看代码”。这将显示VBA编辑器,并为工作表显示代码窗格。在代码窗格中输入以下宏:

Private Sub Worksheet_BeforeDoubleClick _   (ByVal Target As Excel.Range, Cancel As Boolean)

Dim sPW As String     Dim sFile As String

sPW = "password" 'Change to your password     sFile = Target.Value     If sFile <> "" Then         If Dir(sFile) <> "" Then             Workbooks.Open _               FileName:=sFile, _               password:=sPW             Cancel = True         End If     End If End Sub

您唯一需要更改的代码就是您要用于所访问的工作簿的密码。 (代码假定所有工作簿都使用相同的密码。)

按Alt + Q退出VBA编辑器,然后返回工作表。保存工作簿,然后双击任何包含路径和文件名的单元格。 Excel的作用是将控制权传递给获取路径和文件名的宏,然后打开该工作簿。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(8109)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: