ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

用AutoHotkey调用VBA一键给word文档添加多级列表。

2022-02-20 01:31:06  阅读:286  来源: 互联网

标签:VBA word AutoHotkey arr .% lv arr2 编号 253


word的多级列表设置步骤很繁琐,于是就有了此脚本。
后续还要研究如何一键设置标题1-9的样式,已会的请留言告知,谢谢!!
使用步骤:

  1. 添加9行内容并分别设置好样式为标题1-9
  2. 打开脚本
  3. 选中该9行内容,按F9运行脚本,如果编号出现,则表示已完成。

附上 AutoHotkey v2-beta 代码

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 什么用
    }
}

标签:VBA,word,AutoHotkey,arr,.%,lv,arr2,编号,253
来源: https://www.cnblogs.com/hyaray/p/15914399.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有