我现在使用以下命令逐个打开一组工作簿:
Workbooks.Open Filename:=fFile, Password:="", UpdateLinks:=xlUpdateLinksNever, ReadOnly:=False
通常文件以write-enabled
模式打开,这就是我想要的。但是对于某些文件,前一行弹出以下窗口:
在这种情况下,我需要按Read Only
将其打开。虽然它是read-only
,但仍然可以打开它。
总而言之,我尝试以write-enabled
模式打开文件,如果某些文件无法打开文件,则在read-only
中打开文件仍然可以。但由于文件数量巨大,我真的想自动化它,并避免这种弹出窗口。谁能告诉我怎么做?
一种可能的转变是首先以read-only
模式打开所有文件,然后在可能的情况下将其转换为write-enabled
模式。你认为那是可行的吗?
答案 0 :(得分: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
答案 1 :(得分:0)
我遇到了同样的问题。我厌倦了在许多形式上找到答案,什么都没有。最后我在这里添加了WriteResPassword:="密码"在Worksbooks.Open语句的末尾,它不再提示输入密码
Workbooks.Open文件名:=" \文件路径\ File_name.xlsm",密码:="密码在这里",WriteResPassword:="密码在这里&#34 ;