停止 ms Access VBA 打开 Excel 只读文件

Stop ms Access VBA opening Excel File Read-only

我有一个 Access 文件,它使用链接到 Excel 文件的表,该文件本身有其他需要刷新的链接。
(请不要质疑其中的逻辑,它是一些棘手问题的解决方法,并且是目前真正唯一的方法,因为访问不能使用 .odc 连接)
我在应该更新数据的访问表单中有一个按钮。 但是,当 button_onclick sub 打开 Excel 时,它总是以只读方式打开它,因此在尝试保存文件时会中断。我该如何防止这种情况?

我已经尝试 AppExcel.AlertBeforeOverwrite = False 并在 Workbook.Open 上将 ReadOnly 参数输入为 false,但它仍然发生。

代码如下;

Private Sub btnUpdate_Click()
Dim AppExcel As Excel.Application
Dim wbConn As Excel.Workbook

Set AppExcel = CreateObject("Excel.Application")
AppExcel.Visible = True
Set wbConn = AppExcel.Workbooks.Open("Z:\Company Records\System Files\Connection Data.xlsx", True, False) 'Note that last parameter, Readonly = False
With wbConn
    .RefreshAll
    'Debug.Assert False
    AppExcel.AlertBeforeOverwriting = False 'This doesn't work
    .Save 'BREAKS HERE - message boxes in Excel because the file is Read-only
    .Close
End With
Set wbConn = Nothing
Set AppExcel = Nothing

End Sub

尝试添加 IgnoreReadOnlyRecommended:=True

Set wbConn = AppExcel.Workbooks.Open("YourFilePath", True, False, IgnoreReadOnlyRecommended:=True)

如果不行直接试试:

Set wbConn = AppExcel.Workbooks.Open("YourFilePath", True, IgnoreReadOnlyRecommended:=True)

另一种解决方案是始终 .SaveAs 文件而不是使用 .Save,您可以更改文件名或使用 ConflictResolution 覆盖现有文件

.SaveAs Filename:="YourFilePath", ConflictResolution:=Excel.XlSaveConflictResolution.xlLocalSessionChanges 

如果你想避免覆盖文件可能导致的提示消息,我建议你在代码的开头添加AppExcel.DisplayAlerts = False