1

我目前使用以下命令逐个打开一组工作簿:

Workbooks.Open Filename:=fFile, Password:="", UpdateLinks:=xlUpdateLinksNever, ReadOnly:=False

通常文件以write-enabled模式打开,这就是我想要的。但是对于某些文件,上一行会弹出如下窗口:

在此处输入图像描述

在这种情况下,我需要按下Read Only才能打开它。虽然是这样read-only,但能打开还是不错的。

所以总结一下,我尝试以write-enabled模式打开文件,如果某些文件无法打开,打开它们read-only仍然可以。但是由于文件的数量很大,我真的很想自动化它,并避免这个弹出窗口。谁能告诉我该怎么做?

一个可能的转变是首先以模式打开所有文件,然后如果可能的read-only话将它们转换为模式。write-enabled你认为这是可行的吗?

4

2 回答 2

0

这是您可能的解决方法。这个想法是将任何不正确的密码传递给WriteResPassword argument. 如果文件受到保护,则会抛出错误。如果是这样,您将能够识别该文件并以read-only mode. 或者,其他文件的密码将被忽略,并且将为read-write mode.

下面代码中的一些附加注释。

Sub PossibleWorkaround()

    Dim Pass As String
    'any password
    Pass = "blahblah"

    'file which is write-protected will throw error during opening it _
    with incorrect password
    On Error Resume Next
    Workbooks.Open "c:\users\alpha\desktop\filename.xlsx", , , , , Pass
    If Err.Number = 1004 Then
        'if so, try to open it in read-only mode
        Workbooks.Open "c:\users\alpha\desktop\filename.xlsx", , True
    End If
    'return to standard error handling or set as expected
    On Error GoTo 0



    'the same for file which is not write-protected
    'incorrect password will be ignored
    On Error Resume Next
    Workbooks.Open "c:\users\alpha\desktop\filename A.xlsx", , , , , Pass
    If Err.Number = 1004 Then
        'therefore this if statement will not be called
        Workbooks.Open "c:\users\alpha\desktop\filename.xlsx", , True
    End If
    On Error GoTo 0
End Sub
于 2013-08-06T20:00:01.190 回答
0

我有同样的问题。我厌倦了在许多表格上找到答案,但什么也没有。最后我在 Worksbooks.Open 语句的末尾添加了 WriteResPassword:="password here" 并且它不再提示输入密码

Workbooks.Open Filename:="\path to the file\File_name.xlsm", Password:="password here", WriteResPassword:="password here"

于 2015-05-19T05:02:33.927 回答