2017-08-11 60 views
1

在Access中使用VBA時,我試圖將Excel工作簿傳遞給另一個函數。將Access工作簿傳遞到Access VBA時發生錯誤424

我創建使用以下(剪斷)

Dim Wbk    As Object 
Dim sht    As Object 
Dim xl    As Object 

Set xl = CreateObject("Excel.Application") 
Set Wbk = xl.Workbooks.Open(OutputFileName) 
Set sht = xl.Worksheets("qryTemp") 

使用上面我能夠操縱Excel實例的工作簿。

不過,我想和實例傳遞到使用

OutputLog (xl) 

然後

Function OutputLog(xl As Variant) As String 
    xl.Application.Visible = True 
End Function 

另一個函數...我得到所需的錯誤424對象

+0

不應該在參數中將x1定義爲類型Object嗎? –

+0

@RobAnthony一個'Variant'可以是任何東西,包括一個對象的引用,所以這是有效的。將其定義爲「Object」只會減少少許內存,因爲「Variant」還需要存儲其類型。 –

+0

但是,然後您將它用作對象而不將其轉換爲對象,這就是爲什麼我懷疑您收到錯誤。 –

回答

3

的問題是在這條線:

OutputLog (xl)

此處使用括號將ObjectApplication)轉換爲簡單類型(String「Excel應用程序」)。

正確的版本是:

OutputLog xl

Call OutputLog(xl)

In this answer你可以找到關於調用VBA程序的詳細信息。

+0

再次感謝 - 完美的作品 – user1936588