내 컴퓨터에서 특정 프로그램이 실행되고 있는지 확인하는 라이브러리 : psutil
[ psutil ] 내 컴퓨터에서 특정 프로그램이 실행되고 있는지 확인하기, psutil 라이브러리
지난 블로그에서 현재 내 컴퓨터에서 엑셀 프로그램이 실행되고 있는 지 확인하는 방법을 알아보았습니다.
오늘은 실행되고 있는 엑셀 파일의 간단한 정보를 확인하는 방법입니다.
준 비 사 항
사용할 라이브러리 : psutil, pywin32
설치 방법
pip install pywin32
pip install psutil
먼저 지난 블로그에서 사용된 코드입니다.
현재 내 컴퓨터에 엑셀 파일이 실행 중이라면 실행 중이라는 메시지를 띄워주고
실행 중이지 않다면 실행중이지 않다는 메시지를 띄워줍니다.
import psutil
def is_Excel_Running():
for process in psutil.process_iter(attrs=['name']):
if 'excel' in process.info['name'].lower():
return True
return False
if __name__ == '__main__':
if is_Excel_Running():
print("엑셀파일이 실행중입니다.")
else:
print("엑셀파일이 실행중이지 않습니다.")
※ 파이썬 if __name__ == "__main__" 구문은 여기를 참고하세요.
실행 중인 엑셀 프로그램 불러오기
먼저 pywin32 라이브러리를 import 합니다.
import win32com.client as win32
※ import(파이썬 import)에 대한 설명은 여기를 참고하세요.
다음 코드를 통해 엑셀 애플리케이션을 프로그램적으로 제어할 수 있도록 합니다
이 코드를 통해 엑셀 애플리케이션의 COM 객체를 생성하여 파이썬에서 제어할 수 있도록 합니다.
DisPatch() 함수는 COM 객체를 생성하고 해당 객체의 메서드와 속성에 접근할 수 있도록 해줍니다.
win32.Dispatch("Excel.Application")
변수를 하나 설정하여 쉽게 접근할 수 있도록 만들어 줍니다.
Dispatch('Excel.Application')은 엑셀 애플리케이션의 COM 객체를 생성하고 이를 파이썬 변수 excel에 할당합니다.
excel = win32.Dispatch("Excel.Application")
다음은 현재 실행되고 있는 엑셀의 Workbook의 이름을 확인해 보겠습니다.
active_workbook = excel.ActiveWorkbook
active_workbook_name = active_workbook.Name
다음은 활성화된 워크시트의 이름을 확인해 보겠습니다.
active_worksheet_name = active_workbook.ActiveSheet.Name
또는 이 아래와 같이 직접 접근도 가능하니다.
active_worksheet = excel.ActiveSheet
active_worksheet_name = active_worksheet.Name
위 코드의 전문은 아래와 같습니다.
def get_active_excel_info():
excel = win32.Dispatch("Excel.Application")
active_workbook = excel.ActiveWorkbook
active_workbook_name = active_workbook.Name
active_worksheet_name = active_workbook.ActiveSheet.Name
return active_workbook_name, active_worksheet_name
현재 활성화 중인 엑셀 파일의 워크북 이름과 시트 이름을 반환합니다.
전 체 코 드
엑셀 프로그램이 실행 중인지 확인하고
실행 중이라면 파일의 워크북 이름과 시트 이름을 반환하는 코드의 전문입니다.
import psutil
import win32com.client as win32
def is_excel_running():
"""엑셀 프로그램이 실행 중인지 확인하는 함수"""
for process in psutil.process_iter(attrs=['name']):
if 'excel' in process.info['name'].lower():
return True
return False
def get_active_excel_info():
excel = win32.Dispatch("Excel.Application")
active_workbook = excel.ActiveWorkbook
active_workbook_name = active_workbook.Name
active_worksheet_name = active_workbook.ActiveSheet.Name
return active_workbook_name, active_worksheet_name
if __name__ == '__main__':
if is_excel_running():
active_workbook_name, active_worksheet_name = get_active_excel_info()
print(f"활성화된 워크북 이름: {active_workbook_name}")
print(f"활성화된 워크시트 이름: {active_worksheet_name}")
else:
print("엑셀 프로그램이 현재 실행되고 있지 않습니다.")
마 치 며
먼저 get_active_excel_info() 함수와 유사한 기능을 하는 VBA 코드를 살펴보겠습니다.
Sub GetActiveExcelInfo()
Dim wb As Workbook, ws As Worksheet
Set wb = ActiveWorkbook
MsgBox "현재 활성화된 워크북 이름: " & wb.Name
Set ws = ActiveSheet
MsgBox "현재 활성화된 시트 이름: " & ws.Name
End Sub
파이썬 코드와 상당히 유사한 것을 알 수 있습니다.
pywin32 라이브러리의 Dispatch() 함수로 이렇게 해당 프로그램을 불러오면
엑셀 애플리케이션의 많은 기능을 파이썬에서 사용할 수 있습니다
pywin32 라이브러리에 엑셀을 조작할 수 있는 기능을 담아 둔 것이 아닌
pywin32 라이브러리에서는 이미 정리되어 있는 엑셀의 조작 방법을 빌려오고
빌려온 조작 방식을 파이썬에서 사용할 수 있게 해주는 것으로 이해할 수 있습니다.
여기를 방문하시면 더 많은 파이썬 관련 자료를 확인할 수 있습니다.
'파이썬(Python)' 카테고리의 다른 글
[ pygetwindow ] 현재 실행 중인 프로그램 목록 확인하기 (0) | 2024.08.28 |
---|---|
[ Tkinter ] 그리드(grid)의 너비와 높이 조정하기 (0) | 2024.08.25 |
[ psutil ] 내 컴퓨터에서 특정 프로그램이 실행되고 있는 지 확인하기, psutil 라이브러리 (0) | 2024.08.23 |
[ CoustomTkinter ] 현대적이고 세련된 파이썬 GUI CustomTkinter (0) | 2024.08.23 |
[ SpeedTest ] Python으로 인터넷 속도 테스트 하기 : 인터넷 속도 테스트 (0) | 2024.08.19 |