使用vba宏/python代码更新word目录——只更新页码

工作中出现了如题的需求。实际上这个操作人工的话只需要右键区域→更新域→选择只更新页码然后确定就行了。不过工作需求就是得用代码去完成以上事情。

这个问题的主体部分就是找到相关的代码……实际上关于这一点网上已有不少教程,比如这一篇就实际上作为原型让我写出了我实际使用的代码:

Sub UpdateContent()Dim i As Integeri=0Dim aStory As RangeDim aField As FieldFor Each aStory In ActiveDocument.StoryRangesFor Each aField In aStory.FieldsIf i<4 Then:aField.Updatei=i+1Next aFieldNext aStory
End Sub

注意i相关的操作是我自己加的,因为我只想刷新目录,所以不需要真的遍历全部域。

本来问题到这里就该解决了,我成功在自己电脑上跑通了这个程序,第二天拿到工作的地方……

然后发现他们只有WPS。

WPS也是有宏功能的。这没问题。
问题在于,这一段代码在WPS中运行的表现是“更新整个目录”而不是默认的“只更新页码”。
而录制宏录下来的是一句“…Field.ShowCode=False”,牛头不对马嘴,而且确实没有效果。

找了很久最后找了wps的技术客服,然后得到解决办法了:

Sub UpdateContent()Dim aStory As RangeDim aField As FieldFor Each aStory In ActiveDocument.StoryRangesFor Each aField In aStory.Fieldsif aField.Type == 37:aField.UpdateNext aFieldNext aStory
End Sub

页码本身也是域,然后类型标识是37,所以只要这么指定就会只更新页码了。

说真的,这个操作不看手册真的八辈子都想不出。而VBA里面那个帮助文档简直就和不存在差不多。
不过最后还是在MSDN上找到类型标识的列表了。这里是链接

不过话说回来,虽然问题是解决了哈……
那为啥word里面之前那段代码就是只更新页码呢……
而且我后面的代码在调试中发现进了if的次数有100多次之多,基本上就是一半不到一点点的field数(大概一半是标题一半是页码),但前面的代码我显然只跑了前4个field……两个程序对同一文件处理的运行速度也是天差地别。

如果说word中我是update了靠前的、目录整体的大框架,而这个update默认更新的是页码……那在word中又要如何更新整个目录呢?(顺带一提word中去掉i<4的限制也是只更新页码,虽然用时会飙升)

(这和python又有啥关系?请见另一篇文章(这算引流吗))

使用vba宏/python代码更新word目录——只更新页码相关推荐

  1. xlwings : 从此可以 VBA 调用 Python 代码啦

    Python 的库总是异常丰富,比如 Python 操作 Excel ,根据 详解Python操作Excel文件 这篇文章的介绍,竟然达到了 9 种之多,文章的列举还不一定是穷举式的.这么多库,也没必 ...

  2. python代码怎么变成软件_从Python代码到APP,你只需要一个小工具:GitHub已超6000星

    点击上方Python知识圈,选择设为星标 回复1024获取Python资料 选自TowardsDataScience作者:Adrien Treuille机器之心编译参与:魔王.一鸣 阅读文本大概需要 ...

  3. word目录生成与页码处理

    word目录生成与页码处理: 一.设置标题格式 1.选中文章中的所有一级标题: 2.在"格式"工具栏的左端,"样式"列表中单击"标题1". ...

  4. word转换pdf的python代码_python word转pdf代码实例

    原理 使用python win32 库 调用word底层vba,将word转成pdf 安装pywin32 pip install pywin32 python代码 from win32com.clie ...

  5. python代码画word文档(python+pycharm)

    运行代码后 直接上代码: (需要提前在C:\Kelsey_file路径下创建游戏测评文档.docx) # 利用python代码写一个word文档 # coding=utf -8 from docx i ...

  6. java jacob更新目录,jacob更新word目录

    jacob更新目录方法 /**启动word进程*/ ActiveXComponent app = new ActiveXComponent("Word.Application"); ...

  7. vba调用python代码_Python替代Excel Vba系列(终):vba中调用Python

    点击上方"数据大宇宙",设为星标,干货资料,第一时间送到! 系列文章 前言 有小伙伴向我反映到,本系列前面的章节主要还是在讲 pandas ,几乎与 xlwings 没有啥关系. ...

  8. Vue的数据更新了但页面没有更新及数据频繁更新而页面只更新一次

    1.Vue的数据更新了,而页面没有更新 由于Vue的数据双向绑定,我们只需要修改数据,页面就会自动更新.但有时我们修改了数据,页面却也没有更新,这是为什么? 以下用Vue2为例,整理常见的几种问题 1 ...

  9. python代码画word表格(python+pycharm)

    问题:画一个这样的word表格: 注意: 1.只画表头,如果需要你也可以全部内容都从代码写进去,但是没意义: 2.一般都是画好word表格的表头,然后从execl文档中读取具体的内容. 最终实现利用p ...

  10. python - 代码练习 - 差异备份/同步更新

    差异备份以及文件同步: import os import filecmp import shutil import re# 差异增量更新,dir2 文件目录 与 dir1 文件目录更新, def a( ...

最新文章

  1. 新书上市|鲁智深和镇关西是怎么吵起来的?
  2. java基础学习总结一(java语言发展历史、jdk的下载安装以及配置环境变量)
  3. 如何批量删除会计科目、供应商、客户的主数据
  4. java 文本工具类_干货:排名前16的Java工具类
  5. vector和list容器有哪些区别
  6. 页面时间日期星期实时显示
  7. 每天一学——VAB RANGE
  8. # 畸变矫正_拒绝拍照边缘畸变 坚果Pro 3 Smartisan OS v7.2.0系统体验
  9. matlab代码 无标度网络 生成图,标准无标度网络matlab
  10. 材料成型过程计算机控制系统,材料成型及控制工程专业解读_材料成型及控制工程专业介绍_材料成型及控制工程专业开设课程-高考圈...
  11. Log4j2 0day漏洞项目级紧急修复方法
  12. Frame-Relay基础及配置学习笔记
  13. SAP中的录屏BDC最贱实践
  14. GD32450Z 液晶RGB-LCD(AT070TN94)调试教程
  15. 卡马克揭开VR延迟背后的真相
  16. Java程序设计 北京大学 Week8测试
  17. Android Studio配置gradle时或导入别人项目时提示Could not find com.android.tools.build:gradle
  18. 楼宇能效控制器真的有用吗
  19. GRASPIT安装流程
  20. 深入理解java虚拟机-笔记

热门文章

  1. 单层感知器与线性神经网络
  2. 13 费氏数列或叫斐波那契数列fibonacci
  3. 上海,夜访大一女生宿舍,满足。
  4. 华为设备MSDP配置命令
  5. 【软件实战】5分钟拥有一款自己的软件(教程+成品展示)
  6. 使用基于迭代的敏捷创建里程碑
  7. Oracle 创建新用户后无法登入,显示user lacks CREATE SESSION privilege; logon denied
  8. 听说crmeb多商户增加了种草功能?
  9. android-实现一个简单的视频弹幕
  10. android 软解8k视频,Android Q+5G现场播放8K视频:画面流畅