2013-09-27 60 views
0

我面臨着一個奇怪的情況與我的MS Access VBA代碼。我有一個帶有幾個按鈕的表單,用於將數據導入來自不同Excel文件的表格中。VBA訪問 - 創建Excel活動X對象錯誤

在窗體中,2個按鈕必須打開相同的Excel工作簿,但不同的工作表。爲了做到這一點,我叫下面的子例程中的一個按鈕:

Sub solar_solar(showNotification As Boolean) 

    Dim xlApp As Excel.Application 
    Dim eexWB As Workbook 
    Dim updatedDates As String 
    Dim insertedDates As String 

    On Error GoTo errorHandling 

    ' open excel application and source file 
    Set xlApp = CreateObject("Excel.Application") 
    xlApp.Visible = False 
    xlApp.DisplayAlerts = False 
    Set eexWB = xlApp.Workbooks.Open(c_sourceFile_solar, False, True) 

    ' update records 
    updatedDates = updateWindOrSolarRecords(eexWB, cWindSheet, cStartRowWind, cStartColWind, c_sql_WindTable) 
    ' more code ... 
End Sub 

其他子程序(wind_wind)具有完全相同打開Excel文件相同的代碼。 solar_solar子例程運行得很好,但是當我嘗試運行第二個時,代碼沒有開始執行,我得到警報:「不支持對象庫功能」(Fehler beim Kompilieren:Funktionsmerkmal der Objektbibliothek nichtunerstützt)和點到線:

Set xlApp = CreateObject("Excel.Application") 

這發生在Windows 7中的MS Access 2002。我不明白它是如何可能的這個代碼以及在一個子程序,而不是在另一個運行,當它幾乎是相同的。有沒有人遇到類似的東西?有什麼建議?

謝謝。

+1

你能在'solar_solar'臨時改變'xlApp.Visible = TRUE'和'xlApp.DisplayAlerts = TRUE;獲得有關該問題的更多信息? – HansUp

+1

'在錯誤轉到errorHandling'在兩個子相同嗎?嘗試將標籤更改爲每個Sub的獨特內容。 (例如,solar_solar_error:和wind_wind_error :) – Constablebrew

+0

嗨@HansUp - 不,我無法獲得有關這些問題的更多信息。 – Octavio

回答

1

由於行標籤範圍是模塊級別,因此行標籤在每個模塊中只能出現一次。您需要確保每個單行標籤在任何給定模塊中都是唯一的。

目前,你有這樣的事情:

Sub solar_solar(showNotification As Boolean) 
    On Error GoTo errorHandling 
    '... 
    errorHandling: 
    '... 
End Sub 

Sub wind_wind(showNotification As Boolean) 
    On Error GoTo errorHandling 
    '... 
    errorHandling: 'This is bad! 
    '... 
End Sub 

更改線路標籤和goto語句是這樣的:

` 子solar_solar(showNotification由於布爾) 對錯誤轉到solar_errorHandling '... solar_errorHandling: '... End Sub

Sub wind_wind(showNotification As Boolean) 
    On Error GoTo wind_errorHandling 
    '... 
    wind_errorHandling: 
    '... 
End Sub 

http://support.microsoft.com/kb/78335