• 用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 什么用
        }
    }
    
  • 相关阅读:
    python——(os, shutil)
    python-(subprocess, commands)
    PHP设计模式二:单例模式
    PHP设计模式一:工厂方法设计模式
    PHP垃圾回收机制
    PHP异常处理机制
    超文本传送协议HTTP
    IP地址
    Linux系统网络基本配置
    Linux系统LVM基本使用
  • 原文地址:https://www.cnblogs.com/hyaray/p/15914399.html
Copyright © 2020-2023  润新知