用AutoHotkey調用VBA一鍵給word文檔添加多級列表。


word的多級列表設置步驟很繁瑣,於是就有了此腳本。
后續還要研究如何一鍵設置標題1-9的樣式,已會的請留言告知,謝謝!!
使用步驟:

  1. 添加9行內容並分別設置好樣式為標題1-9
  2. 打開腳本
  3. 選中該9行內容,按F9運行腳本,如果編號出現,則表示已完成。

效果如下
image

附上 AutoHotkey v2-beta 代碼

;添加的規則見 arr2 的相關配置
F9:: {
    addListlevel1()
    addListlevel1() {
        arr2 := [
            ["%1、", 39, 1, 0, 0],
            ["%1.%2", 253, 1, 0, 0],
            ["%1.%2.%3", 253, 1, 0, 0],
            ["%1.%2.%3.%4", 253, 1, 0, 0],
            ["%1.%2.%3.%4.%5", 253, 1, 0, 0],
            ["%1.%2.%3.%4.%5.%6", 253, 1, 0, 0],
            ["%1.%2.%3.%4.%5.%6.%7", 253, 1, 0, 0],
            ["%1.%2.%3.%4.%5.%6.%7.%8", 253, 1, 0, 0],
            ["%1.%2.%3.%4.%5.%6.%7.%8.%9", 253, 1, 0, 0],
        ]
        _setListlevel(arr2)
        ;打開對話框
        send("{alt}hmd") ;TODO 是否有快捷鍵或消息號
        WinWaitActive("ahk_class bosa_sdm_msword")
        send("{enter}")
    }

    /*
    設置自定義列表級別
    調用方法后→選中內容→打開多級列表→確定→核實內容已更改
    arr2含義
    1. 編號格式 NumberFormat	第%1章.%2.%3
    2. 編號樣式 NumberStyle	正規樣式=253(解決顯示上級標題序號為一二三的問題) 123=0 一二三=39 abc=
    3. 編號后面的符號 TrailingCharacter	0=tab 1=space 2=none
    4. 對齊位置 NumberPosition
    5. 文本縮進位置 TextPosition 
    */
    _setListlevel(arr2) {
        idx := 1
        wd := ComObjActive("word.application")
        lt := wd.ListGalleries(3).ListTemplates(idx) ;【多級列表】的【第1個模板】
        arrTextPosition := [0.75, 1.75, 2.5, 3.5, 4.5, 5.75, 6.75] ;縮進默認值
        for arr in arr2 {
            lv := lt.ListLevels(A_Index)
            ;內容
            lv.StartAt := 1 ;起始編號
            lv.NumberFormat := arr[1] ;編號格式
            lv.NumberStyle := arr[2] ;編號樣式(數字0,大/小寫字母3/4,大/小寫羅馬1/2)
            lv.TrailingCharacter := arr[3] ;后面的符號
            lv.LinkedStyle := "標題 " . A_Index ;鏈接的樣式
            ;位置
            lv.alignment := 0 ;0=左對齊 1=居中 2=右對齊 https://docs.microsoft.com/zh-cn/office/vba/api/word.WdListLevelAlignment
            lv.NumberPosition := arr[4] ;對齊位置
            lv.TextPosition := arr[5] ;文本縮進位置
            ;lv.ResetOnHigher := 0
            ;lv.TabPosition := 9999999
        }
        ;lt.Name := "list" . idx ;TODO 什么用
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM