From 69b92884a1b7ddbd52f005e9f017b79330fb7766 Mon Sep 17 00:00:00 2001 From: Misaka_Company Date: Wed, 28 Jan 2026 11:20:50 +0800 Subject: [PATCH] refactor: migrate configuration to .env file for better environment management - Replace hardcoded file paths with environment variables in extract_vba.py and import_vba.py - Add .env file for local configuration (excluded from git via .gitignore) - Add python-dotenv dependency for environment variable loading - Maintain fallback to interactive mode when environment variables are not set Co-Authored-By: Claude Sonnet 4.5 --- .gitignore | 1 + extract_vba.py | 14 ++++++++++---- import_vba.py | 15 ++++++++++----- requirements.txt | 3 +++ 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 776dadc..d0c282a 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ dist log *.spec temp +.env # Claude 临时文件 .claude/ diff --git a/extract_vba.py b/extract_vba.py index fb93707..aa832dd 100644 --- a/extract_vba.py +++ b/extract_vba.py @@ -11,11 +11,17 @@ import re from pathlib import Path from typing import Dict, List, Tuple, Optional +# 加载 .env 配置文件 +try: + from dotenv import load_dotenv + load_dotenv() +except ImportError: + print("警告: 未安装 python-dotenv 库,将使用默认配置") + print("建议运行: pip install python-dotenv") + # ==================== 配置区域 ==================== -# 在此配置要处理的xlsm文件路径 -# 支持相对路径(相对于脚本所在目录)或绝对路径 -# 留空或设为None则使用交互模式(自动查找Excel文件夹) -TARGET_XLSM_FILE = r"C:\Users\Administrator\Desktop\新BOM\AutoBOM\YTHN-100.A0.532-BOM-1.2版 Claude.xlsm" # 例如: r"Excel\myfile.xlsm" 或 r"D:\path\to\file.xlsm" +# 从 .env 文件读取配置,如果未设置则使用 None(交互模式) +TARGET_XLSM_FILE = os.getenv("TARGET_XLSM_FILE", "").strip() or None # ================================================= # VBA项目相关常量 diff --git a/import_vba.py b/import_vba.py index 61bb989..09848a5 100644 --- a/import_vba.py +++ b/import_vba.py @@ -13,6 +13,14 @@ import tempfile from pathlib import Path from typing import Dict, Any +# 加载 .env 配置文件 +try: + from dotenv import load_dotenv + load_dotenv() +except ImportError: + print("警告: 未安装 python-dotenv 库,将使用默认配置") + print("建议运行: pip install python-dotenv") + try: import win32com.client as win32 except ImportError: @@ -21,11 +29,8 @@ except ImportError: sys.exit(1) # ==================== 配置区域 ==================== -# 在此配置元数据文件路径(vba_metadata.json) -# 支持相对路径(相对于脚本所在目录)或绝对路径 -# 元数据文件包含 VBA 代码的映射信息,导入器会根据此文件将代码导入到对应的 xlsm 文件中 -# 留空或设为None则使用默认模式(自动查找脚本所在目录下的VBA文件夹) -TARGET_METADATA_FILE = r"C:\Users\Administrator\Desktop\新BOM\AutoBOM\VBA\vba_metadata.json" # 例如: r"VBA\vba_metadata.json" 或 r"D:\path\to\vba_metadata.json" +# 从 .env 文件读取配置,如果未设置则使用 None(默认模式) +TARGET_METADATA_FILE = os.getenv("TARGET_METADATA_FILE", "").strip() or None # ================================================= # 常量定义 diff --git a/requirements.txt b/requirements.txt index 2baecf2..b90e3d3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,3 +5,6 @@ pywin32>=306; sys_platform == 'win32' # olevba库方法 - 不需要Excel oletools>=0.60 + +# 环境变量管理 +python-dotenv>=1.0.0