파이썬(Python)

파이썬(Python)으로 현재 활성화된 엑셀의 워크북 및 시트 이름 확인하기

카루루1007 2024. 8. 25. 11:12
728x90
반응형

내 컴퓨터에서 특정 프로그램이 실행되고 있는지 확인하는 라이브러리 : psutil

[ psutil ] 내 컴퓨터에서 특정 프로그램이 실행되고 있는지 확인하기, psutil 라이브러리

 

지난 블로그에서 현재 내 컴퓨터에서 엑셀 프로그램이 실행되고 있는 지 확인하는 방법을 알아보았습니다.

오늘은 실행되고 있는 엑셀 파일의 간단한 정보를 확인하는 방법입니다.

 

728x90

 준 비 사 항

 

사용할 라이브러리 : 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 라이브러리에서는 이미 정리되어 있는 엑셀의 조작 방법을 빌려오고

빌려온 조작 방식을 파이썬에서 사용할 수 있게 해주는 것으로 이해할 수 있습니다.

여기를 방문하시면 더 많은 파이썬 관련 자료를 확인할 수 있습니다.

파이썬 공부하기

 

728x90
반응형