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

斯宾塞·巴恩斯(Spencer Barnes)

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

我已经尝试过AppExcel.AlertBeforeOverwrite = False并在ReadOnlyfalse上输入参数,Workbook.Open但仍然会发生。

代码如下;

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如果您要避免覆盖文件可能导致的提示消息,建议您添加到代码的开头

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章