VBA에서 DLL 함수를 호출하면 VBA가 실행을 중지합니다. 이 함수는 배열과 정수를 기대하지만, 프로그램을 디버깅 할 때 함수가 작동하지 않습니다.배열 참조 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에서 Array를 어떻게 참조합니까?
DLL의 델파이 코드는 다음과 같습니다
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이 실제로 배열인지, 아니면 내 기대가 잘못 되었습니까?
어떻게 당신은'.dll' 배열을 기대하고 있음을 알 수 있습니까 (즉이 제대로 선언 가정)? 당신은 말했다 : *'함수는 배열과 정수'를 기대한다. * 그러나 당신의 선언은 틀린 순서로 보인다. 그리고 당신은 단일 변수'Integer'와'String'을 전달할 것이고'args() String' –