是否可以使用vba从.net程序返回一个字符串

时间:2013-08-16 12:31:17

标签: vb.net vba

我有这个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”的消息框..这可能吗?

2 个答案:

答案 0 :(得分:3)

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

Here's a guide on how exactly this is done.

如果您需要有关如何执行此操作的详细信息,请与我们联系。

答案 1 :(得分: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代码中捕获控制台结果......