通过Access

时间:2018-05-02 07:41:11

标签: excel vba excel-vba ms-access access-vba

我从excel打开excel工作簿并删除里面的工作表。我希望在没有来自Excel的消息的情况下这样做:
" Excel将永久删除此表,您要继续"
但是我无法使" DisplayAlerts = False"工作正常。

Public Sub xportQuery()

Dim appExcel As Excel.Application
Dim myWorkbook As Excel.Workbook

Dim PathDaily, FileName As String
PathDaily = Forms!Menu!Text69
FileName = Forms!Menu!Text84

Set appExcel = CreateObject("Excel.Application")

Set myWorkbook = appExcel.Workbooks.Open(PathDaily & FileName)
appExcel.Visible = True
'Set appExcel = Nothing
Set myWorkbook = Nothing

appExcel.DisplayAlerts = False
Workbooks(FileName).Sheets("Sheety").Delete
appExcel.DisplayAlerts = True

End Sub

以这种方式编写,我得到一个"下标超出范围"在Sheets("Sheety").delete 如果我使用了两个DisplayAlerts行,代码可以正常工作,但有警报。

如何在没有任何警报消息的情况下正确编写代码?

注意:DoCmd.SetWarnings无效,因为消息显示在Excel中

1 个答案:

答案 0 :(得分:0)

感谢Sam的评论:

它可以通过改变

来实现
Workbooks(FileName).Sheets("Sheety").Delete

进入

myWorkbook.Sheets("Sheety").Delete

AppExcel.Workbooks(FileName).Sheets("Sheety").Delete

然而,宏的其余部分仍然可以使用没有" AppExcel的工作簿(文件名)。参考