簡體   English   中英

如何使用 ExcelDNA 將變量數組傳遞給 C#

[英]how to pass variant array to C# using ExcelDNA

如果我有這樣的 ac# 方法:

    [ExcelFunction(IsMacroType = true)]
    public static void TestMacro([ExcelArgument(AllowReference = true)]object rngTable, [ExcelArgument(AllowReference = true)]object varCalc)
    {
        System.Windows.Forms.MessageBox.Show("TestMacro called!");
    }

我可以使用以下代碼從 VBA 成功調用它:

Sub TestIt()
    Application.Run "TestMacro", Range("a1"), Range("a2")
End Sub

但是從這個代碼調用它:

Sub TestIt2()
    Dim v(1 To 1) As Variant
    Set v(1) = Range("a2")
    Application.Run "TestMacro", Range("a1"), v
End Sub

生成“類型不匹配”錯誤,並且不會調用 TestMacro 方法。 在 VBA 中,我可以編寫 Subs 來接受這種類型的“變體”。 我如何使用 ExcelDNA 執行此操作?

Excel C API(Excel-DNA 使用它來公開函數和宏)不支持數組參數內的工作表引用。

如果您的主要目標是制作一個可以從 VBA 輕松調用的加載項,您可以使用 Excel-DNA 的 COM 服務器功能來公開一個類庫,您可以通過“工具”->“引用”從 VBA 調用並創建新對象等等。然后集成不通過 Excel C API 而是直接通過 COM 接口。

這里有一個很好的分步示例: https : //github.com/Excel-DNA/Samples/tree/master/DnaComServer

如果您想繼續使用通過Application.Run調用的簡單宏,並希望傳入包含工作表引用的數組,則可能需要傳入地址或類似內容。

暫無
暫無

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

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