3

我有这个 vba 代码

Dim strpath As String
Dim this As String
strpath = "C:\Users\johbra\Documents\Visual Studio 2010\Projects\WindowsApplication6\WindowsApplication6\bin\Debug\WindowsApplication6.exe"
this = Shell(strpath)

MsgBox this

我在 .net 程序中也有这个功能

Public Class Form1

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    dothis()
    Application.Exit()

End Sub

Function dothis()
    Return "HI"
End Function
End Class

我试图让 vba 代码给我一个显示“HI”的消息框。这可能吗?

4

2 回答 2

3

从 VBA 调用 .NET 代码的最公认和最可靠的方法是将 .NET 类公开为 COM 类(无需额外代码,只需在项目属性中勾选相应的框),然后在 VBA 中添加对 COM 类的引用项目,就像您对任何其他 COM 类的方式一样,并调用该函数。

这是有关如何完成此操作的指南。

如果您需要有关如何执行此操作的更多详细信息,请告诉我。

于 2013-08-16T13:18:46.920 回答
0

我认为您需要使用命令行参数尝试此操作。

像:

    Dim CommandLineArgs As System.Collections.ObjectModel.ReadOnlyCollection(Of String) = My.Application.CommandLineArgs

    For i As Integer = 0 To CommandLineArgs.Count - 1
        MessageBox.Show(CommandLineArgs(i))
    Next

将参数传递回 VBA 脚本;

         Console.WriteLine("Message")

可以在您的 VBA 代码中捕获控制台结果...

于 2013-08-16T12:34:52.597 回答