簡體   English   中英

Call Excel VBA function with set-type from Outlook VBA Sub

[英]Call Excel VBA function with set-type from Outlook VBA Sub

我試圖從 Outlook 子中調用 Excel 中的集合類型 function,但未成功。

所以,我在 Excel VBA 中有以下類型:

Type Settings
    Value As String
    Stop As Boolean
    ID As Long
End Type

同樣,我正在使用以下 function 來填寫:

Function Projects_List_1(Var_Num As Long) As Settings

Dim c As Long, Sets As Settings
Set Rng5 = CDU.Range("CDU_Projects")

For c = 1 To Rng5.Count
    If Rng5.Cells(c, 1).Offset(0, 1).Value = "" Then
        If Var_Num = c Then
            Sets.Value = Rng5.Cells(c, 1).Value
            If Var_Num > Rng5.Count Then
                Sets.Stop = True
                Exit Function
            Else
                Sets.ID = Var_Num + 1
                Sets.Stop = False
                Exit For
            End If
        End If
    End If
Next c
Projects_List_1 = Sets

End Function

然后,我有以下測試代碼:

Sub Test_Excel()

Dim mysets As Settings, aaa As Long

aaa = 9
mysets = Projects_List_1(aaa)

Debug.Print mysets.Value
Debug.Print mysets.ID
Debug.Print mysets.Stop

End Sub

這會給我帶來成功的結果(它只是工作表中的數據):

02.9 Data Cleanup
 10 
False

但是,我無法從 Outlook VBA 調用 function。 我認為這很簡單:

Sub Test_Outlook()

'Here I'm just creating the conextion to my workbook. There are no issues here.
Dim ExApp As Excel.Application, ExWbk As Workbook, WB As Workbook
Dim mysets As Settings, aaa As Long
Set ExApp = GetObject(, "Excel.Application")
For Each WB In ExApp.Workbooks
    If WB.Name = "3 Control de Requerimientos Main.xlsm" Then
        Set ExWbk = WB
    End If
Next WB

aaa = 9
mysets = ExWbk.Application.Run("Projects_List_1", aaa)

Debug.Print mysets.Value
Debug.Print mysets.ID
Debug.Print mysets.Stop

End Sub

但我收到錯誤«只有在公共 object 模塊中定義的公共用戶定義類型才能被強制...»。 我也嘗試在 Outlook 中創建一個排版,但我無法讓它運行。

我有一個解決方法,但很高興知道如何以這種方式觸發它。

編輯 1:我可以從 Outlook 調用 function 以取回一個值*。 我遇到的問題是當我試圖在一次運行中取回一組參數時。

看來您只需要包含工作簿名稱:

Application.Run "'My Work Book.xls'!Macro1"

然后根據報錯信息需要定義一個公共的function:

Public Sub Macro1(Var_Num As Long)
' your code goes here
End Sub

有關示例代碼,請參閱如何在 Excel 中使用 Application.Run

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM