728x90
반응형

chatgpt 작성

import tkinter as tk
from tkinter import filedialog, messagebox
import xlwings as xw
import os

# 전역 변수로 파일 목록 저장
selected_files = []


# .xlsx 파일을 .xlsm으로 변환하는 함수
def convert_xlsx_to_xlsm(xlsx_files):
    try:
        for xlsx_file in xlsx_files:
            # xlwings로 엑셀 파일 열기
            wb = xw.Book(xlsx_file)

            # .xlsm 파일명 설정
            xlsm_file = os.path.splitext(xlsx_file)[0] + '.xlsm'

            # .xlsm 파일로 저장
            wb.save(xlsm_file)
            wb.close()  # 저장 후 엑셀 파일 닫기

        # 성공 메시지
        messagebox.showinfo("성공", f"{len(xlsx_files)}개의 파일이 성공적으로 변환되었습니다.")
    except Exception as e:
        messagebox.showerror("오류", f"파일 변환 중 오류가 발생했습니다: {str(e)}")


# 파일 선택하는 함수
def select_files():
    global selected_files
    # 여러 개의 .xlsx 파일을 선택
    selected_files = filedialog.askopenfilenames(
        title="변환할 .xlsx 파일을 선택하세요",
        filetypes=[("Excel 파일", "*.xlsx")],
        multiple=True
    )

    # 파일이 선택되었을 때 UI 업데이트
    if selected_files:
        selected_files_label.config(text=f"{len(selected_files)}개의 파일이 선택되었습니다.")
        convert_button.config(state=tk.NORMAL)  # 변환 버튼 활성화
    else:
        selected_files_label.config(text="파일이 선택되지 않았습니다.")
        convert_button.config(state=tk.DISABLED)  # 변환 버튼 비활성화


# 변환 시작 함수
def start_conversion():
    if selected_files:
        convert_xlsx_to_xlsm(selected_files)
    else:
        messagebox.showwarning("경고", "변환할 파일을 선택하지 않았습니다.")


# GUI 설정
root = tk.Tk()
root.title("XLSX to XLSM 변환기")
root.geometry("400x200")

# 파일 선택 버튼
select_button = tk.Button(root, text="파일 선택", command=select_files)
select_button.pack(pady=20)

# 선택된 파일을 표시할 레이블
selected_files_label = tk.Label(root, text="파일이 선택되지 않았습니다.")
selected_files_label.pack(pady=10)

# 변환 버튼 (초기에는 비활성화)
convert_button = tk.Button(root, text="변환 시작", command=start_conversion, state=tk.DISABLED)
convert_button.pack(pady=20)

# GUI 루프 실행
root.mainloop()
728x90
반응형

+ Recent posts