새 데이터베이스를 만드는 경우 일반적으로 테이블, 폼, 보고서 등의 여러 데이터베이스 개체를 먼저 만듭니다. 결국 특정 프로세스를 자동화하고 데이터베이스 개체를 함께 연결하기 위해 일부 프로그래밍을 추가해야 하는 지점에 도달합니다. 이 문서는 Access 프로그래밍 도구에 대한 방향을 지정하는 데 도움이 됩니다.
이 문서의 내용
프로그래밍이란 무엇인가요?
Access 프로그래밍은 Access 매크로 또는 VBA(Visual Basic for Applications) 코드를 사용하여 데이터베이스에 기능을 추가하는 프로세스입니다. 예를 들어 폼과 보고서를 만들었으며 클릭 시 보고서를 여는 명령 단추를 폼에 추가하려 한다고 가정합니다. 이 경우 프로그래밍은 매크로 또는 VBA 프로시저를 만든 후 명령 단추의 OnClick 이벤트 속성을 설정하여 명령 단추 클릭 시 매크로 또는 프로시저가 실행되도록 하는 프로세스입니다. 보고서 열기와 같은 간단한 작업의 경우 명령 단추 마법사를 사용하여 모든 작업을 수행할 수도 있고, 마법사를 끄고 직접 프로그래밍을 수행할 수도 있습니다.
참고: 많은 Microsoft Office 프로그램은 "매크로"를 사용하여 VBA 코드를 참조합니다. Access 에서 "매크로"라는 용어는 매크로 작성기를 사용하여 어셈블할 수 있는 명명된 매크로 작업 컬렉션을 의미하기 때문에 Access 사용자에게 혼동이 될 수 있습니다. Access 매크로 함수는 VBA에서 사용할 수 있는 명령의 하위 집합만 나타냅니다. 매크로 작성기는 Visual Basic Editor보다 더 구조화된 인터페이스를 제공하므로, VBA 코드를 학습하지 않고 컨트롤 및 개체에 프로그래밍을 추가할 수 있습니다. Access 도움말 문서에서 Access 매크로를 매크로라고 합니다. 반면, VBA 코드는 VBA, 코드, 함수 또는 프로시저라고 합니다. VBA 코드는 클래스 모듈(개별 폼 또는 보고서의 일부이며 일반적으로 해당 개체에 대한 코드만 포함) 및 모듈(특정 개체에 연결되지 않고 일반적으로 데이터베이스 전체에서 사용할 수 있는 "전역" 코드 포함)에 포함되어 있습니다.
개체(예: 폼, 보고서) 및 컨트롤(예: 명령 단추, 텍스트 상자)에는 매크로 또는 프로시저를 연결할 수 있는 다양한 이벤트 속성이 있습니다. 각 이벤트 속성은 마우스 클릭, 폼 열기, 텍스트 상자의 데이터 수정 등의 특정 이벤트와 연결됩니다. 시스템 이벤트와 같이 Access 외부의 요소 또는 다른 이벤트에 연결된 매크로 또는 프로시저에 의해 이벤트를 트리거할 수도 있습니다. 많은 개체의 여러 이벤트 속성에 많은 매크로 또는 프로시저를 추가하는 경우 데이터베이스가 복잡해질 수 있지만, 대부분의 경우 매우 적은 프로그래밍을 사용하여 원하는 결과를 얻을 수 있습니다.
매크로를 사용해야 하나요, 아니면 VBA 코드를 사용해야 하나요?
매크로, VBA 또는 둘 다의 사용 결정은 주로 데이터베이스 배포 또는 분산을 어떻게 계획하는지에 따라 달라집니다. 예를 들어 데이터베이스가 컴퓨터에 저장되어 있고 유일한 사용자이며 VBA 코드 사용에 익숙한 경우 VBA를 사용하여 대부분의 프로그래밍 작업을 수행할 수 있습니다. 그러나 파일 서버에 데이터베이스를 배치하여 다른 사용자와 공유하려는 경우 보안을 고려하여 VBA 사용을 피하는 것이 좋습니다.
매크로 또는 VBA 코드 사용 결정은 보안과 원하는 기능의 두 가지 사항을 기반으로 해야 합니다. VBA를 사용하여 데이터 보안을 저하시키는 코드를 만들거나 VBA가 컴퓨터의 파일을 손상시킬 수 있으므로 보안이 문제가 됩니다. 다른 사용자가 만든 데이터베이스를 사용하는 경우 데이터베이스가 신뢰할 수 있는 소스에서 제공된 것을 알고 있는 경우에만 VBA 코드를 활성화해야 합니다. 다른 사용자가 사용할 데이터베이스를 만드는 경우, 사용자가 데이터베이스에 신뢰 상태를 부여해야 하는 프로그래밍 도구를 포함하지 않도록 해야 합니다. 사용자가 데이터베이스를 신뢰할 필요가 없도록 하는 일반적인 방법은 이 섹션의 뒷부분에 나와 있습니다.
데이터베이스 보안을 보장하려면 가능한 경우 매크로를 사용하고, 매크로 작업을 통해 수행할 수 없는 작업에 대해서만 VBA 프로그래밍을 사용해야 합니다. 또한 실행을 위해 데이터베이스에 신뢰 상태를 부여하지 않아도 되는 매크로 작업만 사용해야 합니다. 이 방법으로 매크로 작업 사용을 제한하면 사용자가 데이터베이스에 해당 컴퓨터의 데이터나 다른 파일을 손상시킬 수 있는 프로그래밍이 없다고 확신할 수 있습니다.
매크로 고려 사항
Access 이전 버전의 Access 사용하여 빌드할 수 있는 것보다 더 강력한 매크로를 빌드할 수 있는 많은 새로운 매크로 작업이 포함되어 있습니다. 예를 들어 이제 매크로 작업을 통해 임시 전역 변수를 만들고 사용할 수 있으며, 새 오류 처리 매크로 작업을 통해 오류를 더 올바르게 처리할 수 있습니다. 이전 버전의 Access 에서 이러한 종류의 기능은 VBA를 사용해야만 사용할 수 있습니다. 또한 개체 또는 컨트롤의 이벤트 속성에 직접 매크로를 포함할 수 있습니다. 포함된 매크로는 개체 또는 컨트롤의 일부가 되며 개체 또는 컨트롤과 함께 이동되거나 복사됩니다.
매크로를 사용하면 폼 열기 및 닫기, 보고서 실행 등의 많은 프로그래밍 작업을 편리하게 처리할 수 있습니다. 기억해야 할 구문이 거의 없으므로 만든 데이터베이스 개체(폼, 보고서 등)를 빠르고 쉽게 연결할 수 있습니다. 각 작업의 인수가 매크로 작성기에 표시됩니다.
매크로가 제공하는 향상된 보안과 사용 편의성 외에도 다음 작업을 수행하려면 매크로를 사용해야 합니다.
-
작업 또는 작업 집합을 키에 할당합니다. 이 경우 AutoKeys라는 매크로 그룹을 만들어야 합니다.
-
데이터베이스가 처음 열릴 때 작업 또는 일련의 작업을 수행합니다. 이 경우 AutoExec라는 매크로를 만들어야 합니다.
참고: AutoExec 매크로는 액세스 옵션 대화 상자에서 시작 폼을 지정하고 해당 폼의 OnOpen 또는 OnLoad 이벤트에 매크로 또는 VBA 코드를 연결한 경우에도 다른 매크로 또는 VBA 코드보다 먼저 실행됩니다.
매크로 빌드 방법에 대한 자세한 내용은 매크로 이해 섹션을 참조하세요.
VBA 고려 사항
다음 중 하나를 수행하려는 경우 매크로 대신 VBA 프로그래밍을 사용해야 합니다.
-
기본 제공 함수를 사용하거나 고유한 함수를 만들거나 Access 이자 지급을 계산하는 IPmt 함수와 같은 많은 기본 제공 함수를 포함합니다. 복잡한 식을 만들 필요 없이 이러한 기본 제공 함수를 사용하여 계산을 수행할 수 있습니다. VBA 코드를 사용하여 식의 기능을 능가하는 계산을 수행하거나 복잡한 식을 대체하는 고유한 함수를 만들 수도 있습니다. 또한 식에서 만든 함수를 사용하여 둘 이상의 개체에 공통 작업을 적용할 수 있습니다.
-
개체 만들기 또는 조작 대부분의 경우 해당 개체의 디자인 뷰에서 개체를 만들고 수정하는 것이 가장 쉽다는 것을 알게 됩니다. 그러나 경우에 따라 코드에서 개체의 정의를 조작할 수 있습니다. VBA를 사용하면 데이터베이스 자체 외에도 데이터베이스의 모든 개체를 조작할 수 있습니다.
-
시스템 수준 작업 수행 매크로에서 RunApp 매크로 함수를 실행하여 Access 내에서 다른 프로그램(예: Microsoft Excel)을 실행할 수 있지만 매크로를 사용하여 Access 외부에서 많은 작업을 수행할 수는 없습니다. VBA를 사용하면 컴퓨터에 파일이 있는지 확인하고, Automation 또는 DDE(동적 데이터 교환)를 사용하여 Excel과 같은 다른 Microsoft Windows 기반 프로그램과 통신하고 Windows DLL(동적 연결 라이브러리)에서 함수를 호출할 수 있습니다.
-
한 번에 하나씩 레코드 조작 VBA를 사용하여 한 번에 레코드 하나씩, 레코드 집합을 단계별로 수행하고 각 레코드에서 작업을 수행할 수 있습니다. 반면, 매크로는 한 번에 전체 레코드 집합으로 작업합니다.
명령 단추 마법사를 사용하여 일반적인 프로그래밍 작업 수행
폼에 명령 단추를 추가하는 경우 명령 단추 마법사를 사용하여 프로그래밍을 시작할 수 있습니다. 마법사는 특정 작업을 수행하는 명령 단추를 만드는 데 도움이 됩니다. Access (.accdb) 파일에서 마법사는 명령 단추의 OnClick 속성에 포함된 매크로를 만듭니다. .mdb 또는 .adp 파일에서는 이러한 파일 형식에 포함된 매크로를 사용할 수 없기 때문에 마법사가 VBA 코드를 만듭니다. 두 경우 모두, 매크로 또는 VBA 코드를 사용자의 요구에 맞게 수정하거나 향상할 수 있습니다.
-
탐색 창에서 명령 단추를 추가할 폼을 마우스 오른쪽 단추로 클릭한 다음 디자인 보기를 클릭합니다.
-
양식 디자인 탭에서 아래쪽 화살표를 클릭하여 컨트롤 갤러리를 표시한 다음 컨트롤 마법사 사용이 선택되어 있는지 확인합니다.
-
양식 디자인 탭의 컨트롤 갤러리에서 단추를 클릭합니다.
-
폼 디자인 그리드에서 명령 단추를 배치할 위치를 클릭합니다.
명령 단추 마법사가 시작됩니다.
-
마법사의 첫 번째 페이지에서 범주 목록의 각 범주를 클릭하여 마법사가 명령 단추에서 수행하도록 프로그래밍할 수 있는 작업을 확인합니다. 작업 목록에서 원하는 작업을 선택하고 다음을 클릭합니다.
-
명령 단추에 텍스트 또는 그림을 표시할지 여부에 따라 텍스트 옵션 또는 그림 옵션 중 하나를 클릭합니다.
-
텍스트를 표시하려면 텍스트 옵션 옆의 상자에서 텍스트를 편집할 수 있습니다.
-
그림을 표시하려는 경우 마법사가 목록에 그림을 제안합니다. 다른 그림을 선택하려면 모든 그림 표시 확인란을 선택하여 Access 제공하는 모든 명령 단추 그림 목록을 표시하거나 찾아보기를 클릭하여 다른 곳에 저장된 그림을 선택합니다.
다음을 클릭합니다.
-
-
명령 단추에 사용할 의미 있는 이름을 입력합니다. 선택적 단계이며, 이 이름은 명령 단추에 표시되지 않습니다. 그러나 나중에 명령 단추를 참조해야 하는 경우(예: 폼에서 컨트롤의 탭 순서를 설정하는 경우) 명령 단추를 구분하기 쉽도록 의미 있는 이름을 입력하는 것이 좋습니다. 예를 들어 명령 단추가 폼을 닫는 경우 cmdClose 또는 CommandClose로 이름을 지정할 수 있습니다.
-
마침을 클릭합니다.
Access 양식에 명령 단추를 배치합니다.
-
마법사가 "프로그래밍"한 사항을 확인하려면 다음 선택적 단계를 따르세요.
-
속성 시트가 표시되어 있지 않으면 F4 키를 눌러 표시합니다.
-
속성 시트에서 이벤트 탭을 클릭합니다.
-
클릭 시 속성 상자에서 빌드 단추 클릭합니다.
Access 매크로 작성기를 시작하고 마법사에서 만든 매크로를 표시합니다. 원하는 경우 매크로를 편집할 수 있습니다(매크로를 편집하는 방법에 대한 자세한 내용은 매크로 이해 섹션을 참조하세요). 완료되면 매크로 디자인 탭의 닫기 그룹에서 닫기를 클릭하여 매크로 작성기를 닫습니다. Access 변경 내용을 저장하고 속성을 업데이트하라는 메시지가 표시되면 예를 클릭하여 변경 내용을 저장하거나 아니요 를 클릭하여 변경 내용을 거부합니다.
-
-
양식 디자인 탭의 보기 그룹에서 보기를 클릭한 다음 양식 보기를 클릭합니다. 새 명령 단추를 클릭하여 단추가 예상대로 작동하는지 확인합니다.
매크로 이해
매크로는 작업을 자동화하고 폼, 보고서 및 컨트롤에 기능을 추가할 수 있는 도구입니다. 예를 들어 폼에 명령 단추를 추가하고, 단추를 클릭할 때마다 단추에서 수행할 명령을 포함하는 매크로에 단추의 OnClick 이벤트 속성을 연결합니다.
Access 매크로를 수행할 작업 목록을 작성하여 코드를 만드는 간소화된 프로그래밍 언어로 생각하는 것이 좋습니다. 매크로를 빌드하는 경우 드롭다운 목록에서 각 작업을 선택한 다음 각 작업에 필요한 정보를 입력합니다. 매크로를 사용하면 VBA 모듈로 코드를 작성하지 않고 폼, 보고서 및 컨트롤에 기능을 추가할 수 있습니다. 매크로는 VBA에서 사용할 수 있는 명령의 하위 집합을 제공하며, 대부분의 사용자는 VBA 코드를 작성하는 것보다 쉽게 매크로를 빌드할 수 있습니다.
다음 그림에 표시된 매크로 작성기를 사용하여 매크로를 만듭니다.
매크로 작성기를 표시하려면
-
만들기 탭의 매크로 및 코드 그룹에서 매크로를 클릭합니다.
VBA 코드 이해
매크로와 마찬가지로 VBA를 사용하면 Access 애플리케이션에 자동화 및 기타 기능을 추가할 수 있습니다. 타사 컨트롤을 사용하여 VBA를 확장할 수 있으며, 사용자 고유의 요구 사항에 맞은 함수와 프로시저를 작성할 수 있습니다.
VBA 프로그래밍을 시작하는 빠른 방법은 먼저 Access 매크로를 빌드한 다음 VBA 코드로 변환하는 것입니다. 이 작업을 수행하는 지침은 매크로를 VBA 코드로 변환 섹션에 포함되어 있습니다. 이 기능은 매크로의 동등한 작업을 수행하는 새 VBA 모듈을 만듭니다. 또한 프로시저 수정을 시작할 수 있도록 Visual Basic Editor를 엽니다. Visual Basic Editor에서 작업하는 경우 키워드를 클릭하고 F1 키를 눌러 개발자 도움말 Access 시작하고 각 키워드에 대해 자세히 알아볼 수 있습니다. 그런 다음 Access 개발자 도움말을 살펴보고 원하는 프로그래밍 작업을 수행하는 데 도움이 되는 새 명령을 검색할 수 있습니다.
매크로를 VBA 코드로 변환
Access 사용하여 매크로를 VBA 모듈 또는 클래스 모듈로 자동으로 변환할 수 있습니다. 별도의 개체 또는 포함된 매크로로 존재하는지 여부에 관계없이 폼 또는 보고서에 연결된 매크로를 변환할 수 있습니다. 특정 폼 또는 보고서에 연결되지 않은 전역 매크로를 변환할 수도 있습니다.
폼 또는 보고서에 연결된 매크로 변환
이 프로세스는 폼 또는 보고서(또는 해당 컨트롤 중 하나)에서 참조된(포함된) 매크로를 VBA로 변환하고 폼 또는 보고서의 클래스 모듈에 VBA 코드를 추가합니다. 클래스 모듈은 폼 또는 보고서의 일부가 되며 폼 또는 보고서와 함께 이동되거나 복사됩니다.
-
탐색 창에서 폼 또는 보고서를 마우스 오른쪽 단추로 클릭한 다음 디자인 보기를 클릭합니다.
-
양식 디자인 탭의 도구 그룹에서 폼의 매크로를 Visual Basic으로 변환 또는 보고서의 매크로를 VisualBasic으로 변환을 클릭합니다.
-
폼 매크로 변환 또는 보고서 매크로 변환 대화 상자에서 Access 생성하는 함수에 오류 처리 코드를 추가할지 여부를 선택합니다. 또한 매크로에 주석이 있는 경우 함수에 주석으로 포함할지 여부를 선택합니다. 변환을 클릭하여 계속합니다.
폼이나 보고서에 대한 클래스 모듈이 없는 경우 Access 모듈을 만들고 폼 또는 보고서와 연결된 각 매크로에 대한 프로시저를 모듈에 추가합니다. 또한Access 폼이나 보고서의 이벤트 속성을 변경하여 매크로 대신 새 VBA 프로시저를 실행합니다.
-
VBA 코드를 보고 편집하려면
-
폼 또는 보고서가 디자인 보기에 열려 있는 동안 속성 시트가 표시되어 있지 않으면 F4 키를 눌러 표시합니다.
-
속성 시트의 이벤트 탭에서 [이벤트 프로시저]가 표시된 속성 상자를 클릭한 다음 빌드 단추를 클릭합니다. 특정 컨트롤의 이벤트 속성을 보려면 컨트롤을 클릭하여 선택합니다. 전체 폼 또는 보고서의 이벤트 속성을 보려면 속성 시트의 맨 위에 있는 드롭다운 목록에서 폼 또는 보고서를 선택합니다.
Access Visual Basic Editor를 열고 해당 클래스 모듈에 이벤트 프로시저를 표시합니다. 위 또는 아래로 스크롤하여 동일한 클래스 모듈에 있는 다른 프로시저를 모두 볼 수 있습니다.
-
전역 매크로 변환
-
탐색 창에서 변환할 매크로를 마우스 오른쪽 단추로 클릭한 다음 디자인 보기를 클릭합니다.
-
매크로 디자인 탭의 도구 그룹에서 매크로를 Visual Basic으로 변환을 클릭합니다.
-
매크로 변환 대화 상자에서 원하는 옵션을 선택한 다음 변환을 클릭합니다.
Access 매크로를 변환하고 Visual Basic Editor를 엽니다.
-
VBA 코드를 보고 편집하려면
-
Visual Basic Editor에서 프로젝트 탐색기 창이 표시되지 않으면 보기 메뉴에서 프로젝트 탐색기를 클릭합니다.
-
작업 중인 데이터베이스 이름 아래의 트리를 확장합니다.
-
모듈 아래에서 변환된 매크로- 매크로 이름 모듈을 두 번 클릭합니다.
Visual Basic Editor가 모듈을 엽니다.
-
VBA 함수를 이벤트 속성에 연결
전역 매크로를 VBA로 변환하면 VBA 코드가 표준 모듈에 배치됩니다. 클래스 모듈과 달리 표준 모듈은 폼 또는 보고서의 일부가 아닙니다. 코드가 원하는 시기와 위치에서 정확히 실행되도록 폼, 보고서 또는 컨트롤의 이벤트 속성과 함수를 연결하는 것이 좋습니다. 이 작업을 수행하기 위해 VBA 코드를 클래스 모듈에 복사한 다음 이벤트 속성과 연결하거나, 다음 절차에 따라 이벤트 속성에서 표준 모듈을 특별히 호출할 수 있습니다.
-
Visual Basic Editor에서 함수 이름을 적어둡니다. 예를 들어 MyMacro라는 매크로를 변환한 경우 함수 이름은 MyMacro()가 됩니다.
-
Visual Basic Editor를 닫습니다.
-
탐색 창에서 함수를 연결할 폼 또는 보고서를 마우스 오른쪽 단추로 클릭한 다음 디자인 보기를 클릭합니다.
-
함수를 연결할 컨트롤 또는 섹션을 클릭합니다.
-
속성 시트가 표시되어 있지 않으면 F4 키를 눌러 표시합니다.
-
속성 시트의 이벤트 탭에서 함수를 연결할 이벤트 속성 상자를 클릭합니다.
-
속성 상자에 등호(=)를 입력한 다음 함수 이름을 입력합니다(예: =MyMacro()). 괄호를 포함해야 합니다.
-
빠른 액세스 도구 모음에서 저장을 클릭하여 폼 또는 보고서를 저장합니다.
-
탐색 창에서 폼 또는 보고서를 두 번 클릭한 다음 테스트하여 코드가 예상대로 실행되는지 확인합니다.
이제 데이터베이스에 VBA 코드를 추가하는 기본 단계를 알고 있습니다. 이 문서에서는 시작하는 방법의 기본 사항만 설명합니다. 프로그래밍 기술을 구축하는 데 도움이 될 수 있는 많은 훌륭한 참조 책과 온라인 리소스가 있습니다.