※ 최신 글
※ 주의사항 추가
– 32bit XP에서 Visual Studio 2008로 ‘Debug’ 또는 ‘Release’ 32bit Compile 한 경우
≫ 32bit XP C:\Windows\system32 폴더에 Debug나 Release 결과 중 원하는 DLL 하나만 복사 후 Excel 2007 에서 사용 OK
≫ 64bit 7 C:\Windows\SysWOW64 폴더에 Release 결과 DLL 하나만 복사 후 Excel 2007 에서 사용 OK
– 32bit XP에서 Visual Studio 2008로 ‘Debug’ 또는 ‘Release’ 32bit Compile 한 경우
≫ 32bit XP C:\Windows\system32 폴더에 Debug나 Release 결과 중 원하는 DLL 하나만 복사 후 Excel 2007 에서 사용 OK
≫ 64bit 7 C:\Windows\SysWOW64 폴더에 Release 결과 DLL 하나만 복사 후 Excel 2007 에서 사용 OK
예전에 Visual Sutio 6.0으로 DLL 파일을 만들어 Excel에서 사용하다가 Visual Studio 버전이 2008로 업그레이드 되면서 거기에 맞춰서 DLL 파일을 만드는 방법을 기억하려고 몇 글자 끄적인다. 물론, 구글 검색도 해봤지만 영 성에 차지 않는 것도 큰 이유 중의 하나라 할 수 있다.
- Visual Studio 2008을 시작한다.
- ‘파일(F)→새로 만들기(N)→프로젝트(P)’를 차례로 클릭한다.
- ‘Win32 프로젝트’를 선택한다.
- 아래에 이름을 입력 후 ‘확인’을 클릭한다. 본인의 경우 ‘MyUtil’이라고 입력했다.
- ‘다음 >’을 클릭한다.
- ‘DLL(D)’ 라디오 버튼을 선택하고 ‘빈 프로젝트(E)’에 체크한 후 ‘마침’을 클릭한다.
- 솔루션 탐색기 창에서 ‘소스 파일→추가(D)→새 항목(W)’을 차례로 선택한다.
- ‘C++ 파일 (.cpp)’을 선택한 후 이름을 입력한 다음 ‘추가(A)’ 버튼을 클릭한다. 본인의 경우 ‘MyUtil’이라고 입력했다.
- 다시 솔루션 탐색기 창에서 ‘소스 파일→추가(D)→새 항목(W)’을 차례로 선택한다.
- ‘모듈 정의 파일 (.def)’을 선택한 후 이름을 입력한 다음 ‘추가(A)’ 버튼을 클릭한다. 본인의 경우 일관성 유지를 위해서 ‘MyUtil’이라고 입력했다.
- 솔루션 탐색기 창에서 아까 추가했던 MyUtil.cpp 파일을 더블 클릭하거나 소스 코드 입력 부분 위에 있는 MyUtil.cpp 탭을 선택한다.
- 아래와 같이 코드를 입력한다.
#include <stdio.h> #include <math.h> __declspec(dllexport) double MyX(double a, double b) { if (a > b) return pow(a, b); else return pow(b, a); }
- 솔루션 탐색기 창에서 아까 추가했던 MyUtil.def 파일을 더블 클릭하거나 소스 코드 입력 부분 위에 있는 MyUtil.def 탭을 선택한다.
- 아래와 같이 입력한다.
LIBRARY "MyUtil" EXPORTS MyX @1
- 솔루션 탐색기 창에서 ‘MyUtil’을 선택한 후 마우스 우클릭으로 ‘속성(R)’을 클릭한다.
- MyUtil 속성 페이지 창에서 ‘구성 속성→C/C++→고급’을 클릭한 후 우측 ‘호출 규칙’ 콤보 박스에서 ‘__stdcall(/Gz)‘을 선택한 다음 ‘확인’ 버튼을 클릭한다.
- 다시 속성 페이지 창을 열어 ‘구성 속성→링커→입력’을 선택한 후 우측 ‘모듈 정의 파일’에 방금 입력했던 ‘.def’ 파일이 명시되어 있는지 확인한 다음 ‘확인’ 버튼을 클릭한다.
- ‘빌드(B)→솔루션 빌드(B)’를 차례로 선택한다.
- 성공적으로 컴파일 됐으면, 아래와 같이 DLL 파일이 생성된 것을 확인할 수 있다.
- Excel 파일을 열어서 ‘Alt+F11’로 ‘Visual Basic Editor’를 연다.
- ‘Microsoft Excel 개체’를 마우스 우클릭한 후 ‘삽입(N)→모듈(M)’을 선택하여 모듈을 삽입한다.
- 아래와 같이 코드를 입력한다.
Option Explicit Public Declare Function MyX Lib _ "C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects \MyUtil\Debug\MyUtil.dll" _ (ByVal a As Double, ByVal b As Double) As Double
- Excel 창의 임의의 시트에서 몇몇 Cell에 아래와 같이 입력해서 DLL 내 함수를 제대로 호출했는지 확인한다.1
상기 과정을 통해 Visual Studio 2008에서 Simple DLL을 생성하여 Excel에서 호출을 통해 사용할 수 있다.
감사합니다. 님 덕분에 dll을 VBA에서 쓸수 있게 되었습니다. 정말 고맙습니다.
지금은 버전이 2015 또는 그 이상일텐데, 정상으로 작동한다니 다행이네요.
버전 2010으로 사용하고 있어요. 참고하는 기본서가 2010을 기준으로 했기에 이 버전으로 쓰는 중입니다~ ^^