Naver의 Dynamic Map API를 사용해 보려고 준비중인데,
예제를 실행하려고 로컬 Web Server를 만드려니 귀찮아서
Python을 이용하여 서버를 구동하고 샘플을 웹브라우저에서 확인하고
끝나면 다시 Python을 종료하는 일을 반복하다 보니...
매크로로 자동으로 서버를 백그라운드에서 구동시키고,
사용이 완료되면 다시 종료시키는 것을 구성하였습니다.
1. Python으로 HTTP Server 구동
- 먼저 웹페이지 파일이 있는 폴더로 이동한 다음에
- 간단하게 CMD 창을 띄워서 아래 코드를 입력하면 됩니다.
- 사용할 Port는 귀찮아서 80으로 사용하는데, 8080처럼 다른 Port를 지정해도 됩니다.
python -m http.server 80
- Web Browser에서 localhost를 입력하면 아래와 같이 http.server를 구동한 폴더에서 시작합니다.
index.html이 있으면 바로 로딩해서 보여주고, 없다면 아래처럼 폴더 내용을 보여줍니다.
2. Python을 종료
- CMD 창이 그대로 있을 때에는 그 창에서 Ctrl+C를 눌르면 창이 사라지면서 종료 됩니다.
3. 백그라운드에서 실행중인 Python 종료
- tasklist 명령으로 이미지 이름과 PID를 확인하고
- taskkill 명령으로 해당 PID를 종료합니다.
4. VBA로 백그라운드에서 서버 실행
- Home으로 사용할 폴더를 사용자가 지정하도록 하고
- 해당 드라이브, 폴더로 이동한다음
- Shell의 Run 명령어로 창이 보이지 않도록 실행합니다.
Sub StartLocalServerWithPython()
Dim wShell As Object, FolderPath As String
Set wShell = CreateObject("WScript.Shell")
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.InitialFileName = Environ("UserProfile")
.Show
If .SelectedItems.Count = 0 Then Exit Sub
FolderPath = .SelectedItems.Item(1)
End With
ChDrive FolderPath
ChDir FolderPath
wShell.Run "python -m http.server 80", 0
End Sub
5. VBA로 백그라운드에서 구동중인 서버 종료
- 창이 없으므로 Ctrl+C로 할 수 없으므로
- Python이 실행되는 Process ID를 확인하여
- taskkill 명령으로 종료시킵니다.
Sub StopLocalServerWithPython()
Dim wShell As Object, oProcs As Object, oPrc As Object
Set wShell = CreateObject("WScript.Shell")
Set oProcs = GetObject("winmgmts:\\.\root\CIMV2").ExecQuery("SELECT Name, ProcessID FROM Win32_Process")
For Each oPrc In oProcs
If UCase(Left(oPrc.Properties_("Name").Value, 6)) Like "PYTHON" Then
Debug.Print oPrc.Properties_("Name").Value, oPrc.Properties_("ProcessID").Value
wShell.Run "taskkill /PID " & oPrc.Properties_("ProcessID").Value, 0
Exit For
End If
Next oPrc
End Sub
'Excel - VBA' 카테고리의 다른 글
Naver Web Dynamic MAP이용한 VBA 지적도 (0) | 2024.06.18 |
---|---|
Naver API Sample Code 인증 실패 수정 (GitHub) (0) | 2024.06.16 |
VBA Module Source Backup Tool (0) | 2024.06.08 |
VBA Project 소스코드 백업하기 (0) | 2024.05.18 |
TXT, CSV 파일 분할하기 (0) | 2024.05.11 |