请参阅阵列VBA

时间:2014-10-21 13:46:04

标签: vba

在VBA中调用DLL的函数时,VBA停止运行。该函数需要一个数组和一个整数,但是当我调试程序时,该函数不起作用。

DLL由其他人制作,DLL的信息可用。

Declare Function loadModel Lib "Test.dll" (ByVal numArgs As Integer, args As String) As Integer

  filename = "Tjet.mxl"
  ArgumentList(0) = "Filename:"
  ArgumentList(1) = filename
  ArgumentList(2) = "Show model:"
  ArgumentList(3) = False
  ArgumentList(4) = "Show Progress"
  ArgumentList(5) = True

  model = loadModel(6, ArgumentList(0))

然而,这不起作用。你如何在vba中引用一个数组?


DLL的Delphi代码是:

TdLoadModel = function(numArgs: Integer; args: PPAnsiChar): Integer; cdecl

loadModel : TdLoadModel

// loadmodel
SetLength(ArgumentList, 6); //will create an array of 3 AnsiStrings
ArgumentList[0]:='-filename';
ArgumentList[1]:='TJET.mxl';
ArgumentList[2]:='-showModel';
ArgumentList[3]:='false';
ArgumentList[4]:='-showProgress';
ArgumentList[5]:='true';
PArgumentsList := @ArgumentList[0];
loadModel(6, PArgumentsList);

当我加入争论时,我仍然有一些错误。我将错误发送给程序的制造商和DLL,但我仍在等待答案。 我的问题是:期待DLL确实是一个数组,还是我的期望错了?

1 个答案:

答案 0 :(得分:0)

该函数不期望一个String的数组,而是一个String。您应Join ArgumentList(假设声明正确)

model = loadModel(6, Join(ArgumentList))