需求如题所述。
按照以往的经验,尝试通过录制宏来获得对应的函数,但失败了,刷新目录没有对应的宏操作!
百度搜到一个方案(手工修改word背后的XML文件),试了可行,
https://www.cnblogs.com/zhixin9001/p/5587322.html (以下截图来自此网页)
1、将.docx后缀改为.zip
2、解压zip文件获得一组文件
3、修改word/setting.xml文件,在末尾加上一句 <w:updateFields w:val=“true”/>
4、修改word/document.xml文件,找到目录所在的部分,不好找可以搜索fldChar(fldChar就是跟域相关的标签)。模板中的每条目录都被包围在w:hyperlink标签之中,找到首位hyperlink标签并删除,最终目录部分只留下这样的
比如我本地一个文件就是把 <w:hyperlink …> … </w:hyperlink> 之间的删掉即可。
5、以上修改保存后,重新压缩为.zip文件,改回.docx文件。打开时就会提醒是否更新目录,选是即可。选否的话,下次打开还会被提醒是否刷新目录。
不过以上方案只解决了部分问题,未能解决程序打开docx,填写内容后刷新问题,估计是程序打开docx时就已经默认刷新目录了,填写内容后,目录还是没办法刷新。
剩下的思路就是,直接程序改写docx中的xml文件。
https://docs.microsoft.com/en-us/office/open-xml/open-xml-sdk
Open XML可以有空时再研究,应该是一个终极解决方案,毕竟zip、xml、OOXML都是公开的。