엑세스 쿼리 디자인에서는 간단한 함수들을 제공하지만 엑셀과 같은 풍부한 함수들에 미치지는 못합니다. 이럴경우 엑세스 VBA를 이용하여 엑셀 함수를 사용할 수 있습니다.
아래의 경로로가서 모듈을 클릭합니다. 간단히 ALT + F11 로 실행 할 수 도 있습니다.
Creat - Class Module - Module
아래와 같은 VBA코드창이 나타납니다. 코드창에서 아래의 경로로 갑니다.
Tools - References
레퍼런스 창이 나타나면, Microsoft Excel xx.x Object Library 를 추가하고 확인(OK)버튼을 누릅니다. 참고로 버전 숫자는 오피스버전에 따라 달라집니다. 12는 오피스 2007용입니다.
코드창으로 다시 돌아오면, 이제 여기에서 엑셀함수를 정의할 수 있습니다.
아래 그림은 NORMSDIST란 함수를 정의한 예제입니다. 코드는 아래와 같습니다.
엑셀에서 가져올 수 있는 함수들의 리스트를 보고싶으시다면 코드창에서 F2 (Object Browser)를 실행하세요. 아래와 같은 창이 나타나는데, 중간 상단의 콤보박스에 엑셀로 선택을 하고 중간 아래부분의 Classes 박스에서 WorksheetFunction을 선택하시면 왼쪽에 사용할 수 있는 함수 목록이 나타납니다.
자, 이제 작성한 코드를 저장하고 엑셀 메인 윈도우에서 쿼리 디자인을 실행합니다. 정당한 테이블을 선택하시고, 새로운 컬럼의 Field에 Equation Builder로 내용을 넣습니다. 이때 우리가 코드창에서 만든 함수는 Functions에서 불러오실 수 있습니다.
아래의 경로로가서 모듈을 클릭합니다. 간단히 ALT + F11 로 실행 할 수 도 있습니다.
Creat - Class Module - Module
아래와 같은 VBA코드창이 나타납니다. 코드창에서 아래의 경로로 갑니다.
Tools - References
레퍼런스 창이 나타나면, Microsoft Excel xx.x Object Library 를 추가하고 확인(OK)버튼을 누릅니다. 참고로 버전 숫자는 오피스버전에 따라 달라집니다. 12는 오피스 2007용입니다.
코드창으로 다시 돌아오면, 이제 여기에서 엑셀함수를 정의할 수 있습니다.
아래 그림은 NORMSDIST란 함수를 정의한 예제입니다. 코드는 아래와 같습니다.
Public Function xlNORMSDIST(a As Double) As Double
Dim xl As Object
Set xl = CreateObject("Excel.Application")
xlNORMSDIST = xl.WorksheetFunction.NormSDist(a)
Set xl = Nothing
End Function
엑셀에서 가져올 수 있는 함수들의 리스트를 보고싶으시다면 코드창에서 F2 (Object Browser)를 실행하세요. 아래와 같은 창이 나타나는데, 중간 상단의 콤보박스에 엑셀로 선택을 하고 중간 아래부분의 Classes 박스에서 WorksheetFunction을 선택하시면 왼쪽에 사용할 수 있는 함수 목록이 나타납니다.
자, 이제 작성한 코드를 저장하고 엑셀 메인 윈도우에서 쿼리 디자인을 실행합니다. 정당한 테이블을 선택하시고, 새로운 컬럼의 Field에 Equation Builder로 내용을 넣습니다. 이때 우리가 코드창에서 만든 함수는 Functions에서 불러오실 수 있습니다.
Expr1: xlNORMSDIST([Table1]![Field1])