2015-03-13 54 views
0

相关的VBA新手在这里。我使用Public Sub “RefreshExcel”创建了一个新模块“QCDataRefresh”,用于在后台打开Excel电子表格(位于我的网络驱动器中)并刷新它。这是为了刷新包含在所述电子表格中的许多数据链接。访问VBA:SUB旨在刷新Excel电子表格给出错误

下面是该子代码:

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子代码:

Private Sub Command101_Click() 
    QCDataRefresh.RefreshExcel 
End Sub 

当我运行这个事件,我希望它给我从我上面的刷新功能相同的错误。但是,它会打开一个窗口,要求我选择一个宏。我不确定我的错误在哪里,但我相信这一定是一个简单的疏忽。对此也有想法?

谢谢大家!

+0

为什么你的子程序定义为“Private Sub Command101_Click(RefreshExcel)”也许把“RefreshExcel”部分拿出来?另外,一个函数应该返回一些东西。您应该将过程声明为子例程而不是函数,因为它不会返回任何内容.... Public Sub RefreshExcel()。不知道这是否会解决问题。 – OpiesDad 2015-03-13 19:13:36

+0

这很有道理。我继续前进并做出了两处修改(编辑原稿以反映它们)。不幸的是,这两个问题似乎依然存在不过谢谢。 – user333102 2015-03-13 19:28:54

+0

也许没有活动手册。尝试调试打印activeworkbook.name,看看有没有。再次,不确定,但值得一试。 – OpiesDad 2015-03-13 19:36:08

回答

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  
+0

感谢您的尝试。看起来Excel.Workbook不是一个已定义的方法或类型。尽管我觉得我们正在接近。 – user333102 2015-03-13 19:52:16

+0

确定更新:我在工具 - >参考中添加了Excel库。它现在可以识别Excel.Workbook,但在excelWB.refreshall中仍然很流行。快速谷歌搜索表明,很多人使用这个......为什么它似乎不认识这个关键字对我? – user333102 2015-03-13 20:06:09

+0

工作簿是否受到保护?或已经打开(所以它只是被打开)? – OpiesDad 2015-03-13 20:16:37

-1

每当我有意想不到的和不寻常的问题\错误使用Excel输出或读取我永诺尝试以下方法,尤其是在中间的代码休息和不到达关闭电子表格并关闭内存中的Excel对象的行。

所以闭上你的电子表格和任何Excel的实例和对象,你可能有如下:

  1. 关闭所有Excel文件和Excel程序,如果您有任何打开的
  2. 进入任务管理器(通过做Alt键+ Ctrl键+ Del键),然后选择任务管理器
  3. 转到进程选项卡
  4. 按照进程名
  5. 寻找任何EXCEL.EXE在列表中,力全部关闭逐一

让我们知道。

+0

这不是一个答案 – Wobbles 2017-12-18 12:22:59