이 게시판은 아별닷컴 회원만 질문을 올릴 수 있습니다. 회원에게 주어지는 특권인셈이지요. 회원이 아닌 분들은 열람만 가능합니다.
글 수 822
아래처럼 노력해보고 있으나 계속 안되고 있습니다.
XP / 32비트 엑셀에서 성공했던 선언 ------------------------------------- Public Declare Function MJ_Test1 Lib "D:\프로젝트\VBA_DLL테스트\xl_test.dll" (ByVal mynum As Long) As Long Public Declare Sub MJ_Test2 Lib "D:\프로젝트\VBA_DLL테스트\xl_test.dll" (ByRef str As String)-----------------------------------------------------------------------
win7 64bit / 64bit엑셀에서 작동되게 해볼려고 지금 수정한 내용 ---------------------------#If VBA7 Then #If Win64 Then Public Declare PtrSafe Function MJ_Test1 Lib "D:\프로젝트\VBA_DLL테스트\xl_test.dll" (ByVal mynum As Long) As LongPtr Public Declare PtrSafe Sub MJ_Test2 Lib "D:\프로젝트\VBA_DLL테스트\xl_test.dll" (ByRef str As String) #Else Public Declare Function MJ_Test1 Lib "D:\프로젝트\VBA_DLL테스트\xl_test.dll" (ByVal mynum As Long) As Long Public Declare Sub MJ_Test2 Lib "D:\프로젝트\VBA_DLL테스트\xl_test.dll" (ByRef str As String) #End If#Else Public Declare Function MJ_Test1 Lib "D:\프로젝트\VBA_DLL테스트\xl_test.dll" (ByVal mynum As Long) As Long Public Declare Sub MJ_Test2 Lib "D:\프로젝트\VBA_DLL테스트\xl_test.dll" (ByRef str As String)#End If---------------------------------------------------------------------------------
제가 작성한 엑셀과, DLL을 첨부합니다.현재 엑셀에 DLL을 붙이는것을 처음하는것이라 매우 간단한 내용이구요.DLL은 델파이로 작성한 것입니다. 델파이 소스는 본문에 적겠습니다.
vba문을 어떻게 작성해야하는지 아침부터 뒤져보았으나 도저히 알지 못 하겠습니다.한심해 보일지 모르지만, vba를 어떻게 써야 하는지 친절을 부탁드립니다.
(엑셀에서 DLL 불러오기를 잘 몰라서 DLL위치는 'D:\프로젝트\VBA_DLL테스트\xl_test.dll"로 박아둔 상태입니다)-------------------- 델파이 DLL 소스 ----------------------library xl_test;
uses ExceptionLog, SysUtils, Classes, Dialogs;{$R *.res}
function MJ_Test1(iVar : integer):integer;stdcall;begin showmessage('MJ_Test1 work ( return is Var x 10)'); showmessage('iVar = ' + IntToStr(iVar)); result := iVar * 10;end;
procedure MJ_Test2(var srcStr: string);stdcall;var mystr : String;begin showmessage('MJ_Test2 work'); showmessage(srcStr); mystr := srcStr + ' ' + srcStr; showmessage(mystr);
srcStr := myStr;end;
exports MJ_Test1;exports MJ_Test2;
beginend.