1

我想编写一个 Excel VBA 宏来自动为用户输入密码。这样,用户无需每次双击文件时手动输入密码。这可能吗?如果是这样,我该怎么做?

4

4 回答 4

2

@iceagle,我没有足够的声誉来“评论”@(Siddharth Routh),但我对评论和说它毫无意义/无用/无法完成的答案感到遗憾。
例如,如果您有一整套要更改但都受密码保护的 excel。如果现在你通过循环运行它们,你必须每次再次输入密码(当你有 1000 多个文件时似乎很愚蠢?)更好的选择:编码 VBS 的宏,其中包含密码,因此可以更改所有编码文件!向用户提供此密码,现在您仍然有 1000 个编码文件,只是您不必每次都输入它。

现在,如果人们遇到这个问题,@DJ 会给出正确的答案。您可以将密码放入工作簿打开器的命令行中,如下所示:

Set wb = Workbooks.Open(Filename:="myfile.xls", Password:="password")

我希望遇到这个问题的人不要把接受的答案当作给定的,而是看得更远。

亲切的问候,彼得

于 2016-09-12T07:45:50.567 回答
1

正如我在评论中提到的,在我看来,您寻求的功能无法完成。让我解释一下。

要在 Excel 文件中自动运行 VBA 代码,您需要将代码放在Workbook_Open()代码ThisWorkbook区域或Auto_Open()模块中。

现在这两个 Subs 仅在密码保护文件中输入密码后执行,即在工作簿打开后。因此,在将密码输入密码对话框或打开工作簿之前,无法运行此操作。

我相信你的老板是个通情达理的人,如果你能很好地向他解释,我会理解的:)

您可能还想查看此链接,其中详细说明了有关自动运行宏的更多详细信息。

主题: Excel 启动时运行宏

链接: http: //office.microsoft.com/en-us/excel-help/running-a-macro-when-excel-starts-HA001034628.aspx

从上面的链接引用

如果您想在启动 Microsoft Excel 时自动执行某些操作,您可以录制或编写一个在您打开工作簿时运行的宏。有两种方法可以做到这一点:

录制一个宏并使用名称 Auto_Open 保存它。将宏编写为 Microsoft Visual Basic® for Applications (VBA) 过程,用于工作簿的 Open 事件。

于 2012-07-04T15:57:24.043 回答
1

没有用于传递密码的命令行参数。但是您可以做的是有一个“打开器”电子表格,它以电子表格名称和密码作为参数,并使用 VBA 打开受密码保护的电子表格。

看他的链接:

https://superuser.com/questions/438842/excel-workbook-desktop-shortcut-with-auto-password

这仅向您展示了如何获取命令行参数 - 一旦您拥有了可以使用的参数:

Workbooks.Open "filename", , , , "Password"
于 2012-07-04T16:22:37.107 回答
-1

据我所知,您可以使用以下代码解锁 Excel 工作簿/工作表密码,但您无法取消保护VBA项目密码。

Workbooks("Book1").Unprotect Password:="password"
Worksheets("Sheet1").Unprotect "Password"
于 2021-06-01T21:52:17.757 回答