VBA COM互操作的烦恼(VBA COM interop troubles)

2019-10-18 03:41发布

我从MSDN,我想使用适应一些示例代码,但VBA编译器拒绝尖括号中的内容< > 我有一个模块在下面的代码:

Imports System

Imports System.Runtime.InteropServices


<DllImport("../../insert_dll_name_here.dll", CallingConvention:=CallingConvention.Cdecl)> _
Public Function Test(file() As String) As Integer
End Function

我想利用这个代码来调用一个期望字符串数组的C ++ DLL一个简单的功能,但我得到的编译错误“预计行号或标号或语句或结束”,不找到提供帮助菜单有什么用处。 我已经试过方括号[ ]的情况下,这是VBA版本无济于事的问题。 可能有人指出我的错误使用COM互操作服务。

Answer 1:

该代码是VB.NET。 这不是VBA。

在VBA中你会写,

Declare Function Test Lib "../../insert_dll_name_here.dll" (file() As String) As Long

然而,VBA不直接支持cdecl约定,但你可以使它与类型库工作 。 您还可能有麻烦file() As String数组-确保妥善处理它在C ++的一面。

作为一个方面说明,这已经无关COM。 这是从调用外部库中的函数。



文章来源: VBA COM interop troubles
标签: c++ vba com