相对VBA新手在这里。我使用Public Sub " RefreshExcel" 创建了一个新模块" QCDataRefresh" ,用于打开Excel电子表格(位于我的网络驱动器)在后台并刷新它。这样做是为了刷新所述电子表格中包含的许多数据链接。
以下是此Sub的代码:
Public Sub RefreshExcel()
Dim appExcel As Object
Set appExcel = CreateObject("Excel.Application")
appExcel.workbooks.Open ("\\renssfile2\shares\Supply Chain Project Management\QCData.xlsx")
appExcel.activeworkbook.refreshall
Set appExcel = Nothing
End Function
运行此操作会产生运行时错误' 1004':"应用程序定义或对象定义的错误。调试似乎突出了代码行" appExcel.activeworkbook.refreshall"。不确定为什么呢?
此外,我还尝试在Access中创建一个按钮,以便从我的仪表板中运行它。为此,我创建了一个新按钮,并为此权限创建了一个新的事件过程," Command101_Click"。
以下是该事件的代码,该代码在单击按钮时尝试运行我的RefreshExcel Sub:
Private Sub Command101_Click()
QCDataRefresh.RefreshExcel
End Sub
当我运行此事件时,我希望它能从上面的刷新功能中给出同样的错误。但是,它会打开一个窗口,要求我选择一个宏。我不确定我的错误是什么,但我确信这一定是一个简单的疏忽。关于这一点的想法?
全部谢谢!
答案 0 :(得分:0)
我认为问题是workbooks.open方法返回一个工作簿。
试试这个:
Public Sub RefreshExcel()
Dim appExcel As Object
Dim excelwb As Excel.Workbook
Set appExcel = CreateObject("Excel.Application")
Set excelwb = appExcel.workbooks.Open ("\\renssfile2\shares\Supply Chain Project Management\QCData.xlsx")
excelwb.refreshall
Set excelwb = Nothing
Set appExcel = Nothing
End Sub
答案 1 :(得分:-1)
每当我遇到意外和异常的问题\使用excel输出或读取时的错误总是尝试以下方法,尤其是当代码在中间断开并且没有到达关闭电子表格并关闭的行时内存中的Excel对象。
关闭您的电子表格以及您可能拥有的任何Excel实例和对象:
告诉我们。