访问VBA:SUB旨在刷新Excel电子表格,给出错误

时间:2015-03-13 19:08:15

标签: vba ms-access ms-access-2010

相对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

当我运行此事件时,我希望它能从上面的刷新功能中给出同样的错误。但是,它会打开一个窗口,要求我选择一个宏。我不确定我的错误是什么,但我确信这一定是一个简单的疏忽。关于这一点的想法?

全部谢谢!

2 个答案:

答案 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实例和对象:

  1. 如果您有任何打开的话,请关闭所有Excel文件和Excel程序
  2. 转到任务管理器(通过执行Alt + Ctrl + Del),然后选择任务管理器
  3. 转到流程标签
  4. 按流程名称排序
  5. 查找列表中的任何Excel.exe并逐个强制关闭它们
  6. 告诉我们。