JSITCLUB

Access VBA 로 파이썬 실행하기 본문

VBA

Access VBA 로 파이썬 실행하기

jsitclub 2021. 4. 8. 20:52

현재 MS Access로 DB와 UI와 Excel변환을 하고, Python으로 여타 기능을 프로그래밍해서 사용하고 있는데,

Excel VBA에비해 Access VBA의 자료가 적었고 특히나 Access에서 Python을 실행하는 내용을 찾기가 쉽지 않아서 함께 공유하려고 내용을 올립니다. 

 

제가 사용하는 환경은 windows 10, Access 2016, python 3.9.1입니다.

 

1. 새폼 만들기

: 먼저 Access에서 폼을 만들어 줍니다. (만들기 >> 폼 >> 새폼)

새폼만들기

2. 디자인 하기

: 폼을 만들면 빈 폼이 나타나고 위쪽에 컨트롤을 선택하는 곳에서 버튼을 선택해 폼 위에 만들어줍니다.

 

1) 버튼 컨트롤 선택

2) 폼의 빈 공간을 클릭(버튼 컨트롤을 클릭한후 마우스 포인터를 폼의 빈 공간으로 옮기면 포인터가 바뀌게 됩니다. 그렇게 바뀐상태에서 빈공간을 클릭하세요)

버튼컨트롤 선택

3) 명령 단추 마법사가 나오면 취소를 눌러주세요.

취소버튼 클릭

 

4) 버튼이 다음과 같이 만들어졌습니다.

 

5) 이 상태에서 "폼1"이라고 적혀있는 탭 부분에 마우스 포인터를 놓고 오른쪽 클릭하여 "디자인 보기"를 선택합니다.

디자인 보기 선택

 

디자인 모드

6) 다시 버튼에서 우클릭을 한 후 메뉴에서 "이벤트 작성"을 클릭합니다.

 

7) 나타난 작성기 선택창에서 "코드 작성기"를 선택한 후 확인 버튼을 클릭합니다.

 

3. VBA 창

7)번에서 코드작성기를 선택하면 갑자기 또 다른 큰 창이 뜰 겁니다.

이 창이 바로 VBA를 작성해주는 창입니다.

앞으로 VBA 코딩은 주로 이곳에서 하게 됩니다.

VBA 창

잠깐 지금까지 만든 내용을 저장을 해줍니다.

 

 

4. VBA 코딩

파이썬을 실행하는 코드를 넣습니다.

(참고로 Command6은 버튼의 이름으로 그 부분은 각자의 버튼으로 맞춰줍니다.)

Private Sub Command6_Click()

    
    Dim Winshell As Object
    Dim cmdText As String
    Dim strSourcePath As String
    Dim strFileName As String
    
    strFileName = "test.py"
    
    strSourcePath = Application.CurrentProject.Path
    Set Winshell = VBA.CreateObject("WScript.Shell")
   
    '소스가 있는경로로 이동 명령문
    cmdText = "/c cd /d " & strSourcePath & " && "
    
    '파이썬 실행 명령문
    cmdText = cmdText & " python " & strFileName
    
    'Shell실행에서 실행
    Winshell.Run "cmd.exe " & cmdText, 1, True

End Sub

여기까지 하면 Access 쪽 준비는 끝났습니다.

사실 Winshell.Run 이 실행하는 부분인데, 그냥 이 명령만 실행하면, 경로가 cmd의 기본 경로이므로 cd명령으로 경로를 파이썬 소스가 있는 곳으로 이동한 후 실행을 해줍니다. (자세한 내용은 cmd의 명령을 참고하세요.)

 

 

5. 파이썬 파일 만들기

이번에는 간단한 파이 썬파일을 같은 폴더에 만들어 줍니다.

test.py

print("=" * 40)
print("Hellow Access VBA")
print("=" * 40)
input("press any key...")

 

 

6. Access 에서 실행하기

실행방법은 Access화면의 "폼1" 탭을 우클릭한 후 "폼 보기" 항목을 선택합니다.

그러면 위의 5) 번에서 "디자인 보기"로 오기 전 상태로 화면이 바뀝니다.

 

 

 

이 상태에서 버튼을 클릭합니다. 그러면 다음과 같이 파이썬 프로그램이 실행됩니다.

 

여기까지 간단하게 Access에서 VBA를 이용하여 Python을 실행하는 것을 정리해봤습니다.

앞으로도 Access VBA를 이용하며 유용한 기능들을 올려 보겠습니다. 감사합니다.

Comments