Word Vba

👤 jirboy 📦 v1.0.0 ⭐ 4.3 ⬇️ 750 下載
📄 辦公效率 免費

📖 技能介紹


name: word-vba description: "Word文件讀寫Skill - 基於VBA和ActiveX,支援doc/docx格式,提供完整讀寫、批次處理、文件合併、模板填充等功能" metadata: openclaw: emoji: 📄


Word VBA 文件處理 Skill

🎯 一句話定義

通過Python呼叫Word VBA/ActiveX,實現Word文件的完整讀寫、批次處理、文件合併、模板填充等高階功能。


📥 如何呼叫 (How to use me)

觸發語句: - "讀取Word文件" - "寫入Word檔案" - "合併多個Word文件" - "填充Word模板" - "批次替換Word內容"

需要提供的資訊: 1. 必需: 檔案路徑、操作型別 2. 可選: 格式要求、輸出路徑


🛠️ 核心模組

1. word_vba_reader - 文件讀取

功能: 讀取Word文件的文本和完整格式資訊

使用示例:

from word_vba_reader import WordReader

reader = WordReader()
result = reader.read_document("D:/docs/申請書.docx")

# 檢視文件統計
print(f"段落數: {result['paragraph_count']}")
print(f"詞數: {result['word_count']}")
print(f"頁數: {result['pages']}")

# 遍歷段落
for para in result['paragraphs']:
    print(f"文本: {para['text']}")
    print(f"字型: {para['format']['font_name']}")
    print(f"大小: {para['format']['font_size']}")
    print(f"粗體: {para['format']['bold']}")

2. word_vba_writer - 文件寫入

功能: 建立新Word文件並設定格式

使用示例:

from word_vba_writer import WordWriter

writer = WordWriter()
doc = writer.create_document()

# 新增標題
writer.add_heading(doc, "一、立項依據", level=1)

# 新增格式段落
writer.add_paragraph(doc, "這是正文內容。", {
    'font_name': '宋體',
    'font_size': 12,
    'bold': False,
    'alignment': 'justify',
    'first_line_indent': 24  # 首行縮排24磅
})

# 新增表格
table_data = [
    ["姓名", "年齡", "單位"],
    ["張三", "30", "清華大學"],
    ["李四", "28", "北京大學"]
]
writer.add_table(doc, 3, 3, table_data)

# 儲存
writer.save_document(doc, "D:/output/文件.docx")
writer.close()

3. word_vba_utils - 高階功能

3.1 文件合併

功能: 將多個Word文件合併為一個

使用示例:

from word_vba_utils import WordVBAUtils

utils = WordVBAUtils()

# 合併多個章節為完整申請書
file_list = [
    "D:/chapters/摘要.docx",
    "D:/chapters/立項依據.docx",
    "D:/chapters/研究內容.docx",
    "D:/chapters/研究基礎.docx"
]

utils.merge_documents(
    file_list=file_list,
    output_path="D:/output/完整申請書.docx",
    add_page_breaks=True,      # 章節間新增分頁符
    keep_source_format=True     # 保留源格式
)

3.2 模板填充

功能: 根據模板和資料生成文件

模板示例:

專案名稱: {{project_name}}
專案負責人: {{leader}}
研究期限: {{start_date}} 至 {{end_date}}
申請經費: {{budget}}萬元

使用示例:

from word_vba_utils import WordVBAUtils

utils = WordVBAUtils()

# 填充資料
data = {
    'project_name': '振動臺子結構試驗關鍵技術研究',
    'leader': '紀金豹',
    'start_date': '2026.01',
    'end_date': '2029.12',
    'budget': '50'
}

utils.fill_template(
    template_path="D:/templates/基金模板.docx",
    data=data,
    output_path="D:/output/填充後申請書.docx"
)

3.3 批次替換

功能: 批次替換文件中的文本

使用示例:

from word_vba_utils import WordVBAUtils

utils = WordVBAUtils()

# 定義替換規則
replacements = {
    '2025年': '2026年',
    '面上專案': '青年基金專案',
    '50萬元': '30萬元'
}

utils.batch_replace(
    file_path="D:/docs/舊版本.docx",
    replacements=replacements,
    output_path="D:/output/新版本.docx"
)

3.4 提取標題大綱

功能: 提取文件的標題結構

使用示例:

from word_vba_utils import WordVBAUtils

utils = WordVBAUtils()

headings = utils.extract_headings("D:/docs/論文.docx")

for h in headings:
    indent = "  " * (h['level'] - 1)
    print(f"{indent}{h['level']}. {h['text']}")

# 輸出:
# 1. 第一章 引言
#   1.1 研究背景
#   1.2 研究意義
# 2. 第二章 文獻綜述
# ...

3.5 生成目錄

功能: 為文件自動生成目錄

使用示例:

from word_vba_utils import WordVBAUtils

utils = WordVBAUtils()

utils.generate_toc(
    file_path="D:/docs/論文.docx",
    output_path="D:/output/論文_含目錄.docx"
)

3.6 文件比較

功能: 比較兩個文件的差異

使用示例:

from word_vba_utils import WordVBAUtils

utils = WordVBAUtils()

utils.compare_documents(
    doc1_path="D:/docs/初稿.docx",
    doc2_path="D:/docs/修改稿.docx",
    output_path="D:/output/差異比較.docx"
)

3.7 批次處理

功能: 對多個文件執行相同操作

使用示例:

from word_vba_utils import WordVBAUtils
from word_vba_writer import WordWriter

utils = WordVBAUtils()

# 定義處理函式:新增頁首
def add_header(doc):
    header = doc.Sections(1).Headers(1)
    header.Range.Text = "機密檔案"
    header.Range.Font.Name = "宋體"
    header.Range.Font.Size = 10

# 批次處理
file_list = ["D:/docs/1.docx", "D:/docs/2.docx", "D:/docs/3.docx"]

utils.batch_process(
    file_list=file_list,
    processor=add_header,
    output_dir="D:/output/processed/"
)

💡 典型應用場景

場景1: 基金申請書整合

from word_vba_utils import WordVBAUtils

utils = WordVBAUtils()

# 合併各章節
sections = [
    "摘要.docx",
    "一、立項依據與研究內容.docx",
    "二、研究方案.docx",
    "三、創新點.docx",
    "四、研究基礎.docx"
]

utils.merge_documents(
    file_list=[f"D:/fund/{s}" for s in sections],
    output_path="D:/fund/NSFC申請書_完整版.docx",
    add_page_breaks=True
)

場景2: 批次生成證書

from word_vba_utils import WordVBAUtils

utils = WordVBAUtils()

# 獲獎名單
winners = [
    {'name': '張三', 'award': '一等獎', 'date': '2026-03-04'},
    {'name': '李四', 'award': '二等獎', 'date': '2026-03-04'},
    {'name': '王五', 'award': '三等獎', 'date': '2026-03-04'}
]

# 批次生成
for i, person in enumerate(winners, 1):
    utils.fill_template(
        template_path="D:/templates/證書模板.docx",
        data=person,
        output_path=f"D:/output/證書_{i}_{person['name']}.docx"
    )

場景3: 論文格式統一

from word_vba_utils import WordVBAUtils

utils = WordVBAUtils()

# 統一替換期刊名稱縮寫
replacements = {
    'Earthquake Engineering and Structural Dynamics': 'Earthq. Eng. Struct. Dyn.',
    'Journal of Structural Engineering': 'J. Struct. Eng.',
    'Mechanical Systems and Signal Processing': 'Mech. Syst. Signal Process.'
}

utils.batch_replace(
    file_path="D:/papers/參考文獻.docx",
    replacements=replacements,
    output_path="D:/papers/參考文獻_縮寫版.docx"
)

⚙️ 依賴要求

  • 作業系統: Windows(必需)
  • Microsoft Word: 2010或更高版本(必需)
  • Python: 3.8+
  • Python庫: pip install pywin32

🔧 與 docx-tools 的區別

特性 word-vba docx-tools
依賴 需要Microsoft Word 純Python
平臺 僅Windows 跨平臺
功能 完整(VBA所有功能) 基礎功能
速度 較慢(啟動Word)
格式支援 100%(包括複雜樣式) 基本格式
批次處理 ✅ 支援 ✅ 支援
模板填充 ✅ 支援 ❌ 不支援
文件合併 ✅ 保留格式 ⚠️ 有限支援
目錄生成 ✅ 支援 ❌ 不支援

選擇建議: - 需要精確格式控制、複雜操作 → word-vba - 快速批次處理、跨平臺需求 → docx-tools


🐛 故障排除

問題:"無法建立Word應用物件"

原因: Word未安裝或COM介面未註冊 解決: 1. 確保已安裝Microsoft Word 2. 嘗試修復Office安裝 3. 以管理員身份執行

問題:文件被佔用無法開啟

解決: 關閉Word中已開啟的該文件,或重啟Word程序

問題:格式資訊讀取不完整

解決: 檢查文件是否使用了特殊樣式或模板

問題:"ImportError: No module named 'win32com'"

想要更強大的技能外掛,就來小蔥技能站7w4.net看看吧。

解決: pip install pywin32


📝 最佳實踐

  1. 使用後及時關閉: 呼叫 writer.close()utils._close_word() 釋放資源
  2. 設定 visible=False: 後臺執行提高速度
  3. 批次處理: 使用 batch_process 而不是迴圈開啟單個檔案
  4. 異常處理: 使用 try-except 包裹程式碼,確保Word程序能正常關閉

技能版本: v2.0 更新日期: 2026-03-04 更新說明: 新增高階功能模組(合併、模板、批次處理等)

🤖 AI 評測

這個Word處理工具功能比較全面,能讀寫文件、合併檔案、填充模板。但它只能在Windows系統上使用,還必須安裝Microsoft Word軟體,對其他作業系統使用者不太友好。程式碼整體質量尚可,不過錯誤提示和資源清理方面還有改進空間。適合Windows環境下有專業文件處理需求的使用者。

📊 多維度評分

適應性4.2
規範性4.2
有效性4.4
可靠性4.2
可信度4.9

📁 包含檔案 (9 個)

📄 README.md 1.6 KB
📄 SKILL.md 8.9 KB
📄 __init__.py 1.2 KB
📄 _meta.json 127 B
📄 requirements.txt 166 B
📄 test_word_vba.py 11.5 KB
📄 word_vba_reader.py 11.8 KB
📄 word_vba_utils.py 17.4 KB
📄 word_vba_writer.py 15.3 KB