2015-03-13 52 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