总是听到或看到有人问,编程好学吗?如何入门?多久能学会?它能做些什么?怎么写代码呀?执行过程中出问题了谁能帮帮我...如果你也有类似的问题那就赶快关注我的公众号,一起学起来吧!
书签(Bookmark)是Word内置的标记工具,用于精确定位文档中的特定位置。而VBA通过书签名称直接访问并修改其内容,是最传统且稳定的标签操作方法,那么如何实现?又能带来多大的便利呢?
书签是管理长文档、实现快速定位的“神器”。想用好它,第一步就是弄明白书签到底是什么。最直观的办法,就是看看它在Word里到底长什么样
打开任意一个Word文档,“书签”在工具栏中位置如下图所示
将光标移动到需要标记的文本位置,或选中一段特定的文本范围即可插入标签。例如,选中文字“朝花夕拾”添加了一个名为“BookName”的书签
提醒:书签是文档内部的标记,添加后通常不会在页面显示可见的图标或下划线
如果想查看书签是否添加成功,可以再次选择工具栏上的【插入】【书签】,在弹出框中查看,如下图所示成功添加了两个书签:
VBA中访问书签通常使用语句格式:Document.Bookmarks(“书签名”),其中:
Document:文档对象,是当前正在操作的 Word 文档实例
Bookmarks:书签集合对象,这个集合包含了文档中定义的所有 Bookmark 对象
(“书签名”):使用书签的名称作为索引(Index),从 Bookmarks 集合中返回一个具体的 Bookmark 对象
仍旧以上文中添加的书签“BookName”为例,说明在编码中的核心操作
直接给Word里的书签替换文字,会把书签本身弄丢。为了解决这个问题,此处采用的是先把新文字填进去,然后立刻在原地重新“贴”上一个同名的新书签。其中:
第9行代码的作用是判断书签“BookName”是否存在,存在则进行替换操作
第12、13行代码获取并保存书签的原始位置与名称。在替换文本之前,先将书签的 Range 对象和 Name 保存到变量中
第14行代码利用书签替换文本内容,这个操作会完成两件事:一是用新文本替换书签对应的范围内所有文字;二是自动删除“BookName”书签
第15行代码在新文本上重新添加书签。文本替换操作后,我们之前保存的 Range 对象会自动扩展(或收缩)以适应新文本的长度,此时,我们在新的文本上重新添加书签“BookName”
以上代码执行后,立即窗口显示:
查看word文档,原来的“朝花夕拾”被“三国演义”替换了再次点击工具栏中【插入】【书签】,弹出框中仍旧可以看到“BookName”书签,已重新添加好此时,大家可能会有疑问:折腾了这大半天功夫,就替换了一处文本,能有多大用处?手动操作还更简单那么,我们想象一个场景:法务或销售部门每天需要处理上大量的合同,每份合同都需要填入不同的客户名称、金额、日期和条款等等数据如果对这个场景不熟悉,那么再换一个场景:在Excel中做好的一堆数据分析图表,其中的关键指标数据需要复制粘贴到各种Word报告里,一旦Excel数据有更新,就必须重新复制粘贴......以上两个场景,阁下还愿意手工操作吗?自动化的好处是调通一个功能,加上循环语句就能立马搞定