停止 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
我有一个 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