Word2019中Visio对象图片插入题注时自动删除标签与编号前的空格,编号后添加空格

问题引入

撰写论文时为了修改方便,通常以插入题注和交叉引用的方式来给图片标号,这样修改图片和图号后可以方便、自动地更新。

然而,Word在插入题注上从03到13一直没有针对中国用户优化。

  1. 插入题注的标签与编号间有一个空格,当标签是中文时需要用户手动删除
  2. 标签后竟然不插入空格!

新浪微博大神Endlesswx通过宏编程很好地解决了这个问题,具体请看新浪博客

Word插入题注时自动删除标签与编号前的空格,编号后添加空格

  • 例如,我们给图片A添加题注:图1+空格符+图片A
  • Word自带的添加题注功能添加后为:图+空格符+1
  • 而我们想要的效果是:图1+空格符

问题分析

当你在Word2019中对Visio对象的图片(Visio中画的图直接组合复制到word中)通过上面这个宏去操作的时候,会出现问题,经过调试发现,问题在这儿

 Selection.Fields.ToggleShowCodes  '切换域代码,这样才能用^d查找域

这句代码的主要思路是:将题注的标签和编号一起选中,即将图1切换为域代码,然后通过^d查找域的方法(具体不太懂,但没关系)来找关键字,然后进行替换,达成我们想要的目的。

'选定整个插入的题注内容,将域代码切换回来endPt = endPt + 1 '增加空格后,末位加1With Selection.Start = startPt.End = endPt.Fields.ToggleShowCodes   '切换域代码(切换回来)End With

这段代码的功能是:将修改后的图+标签+编号一起选中,然后从域代码切换回来。需要注意的地方是这段代码会将图片也选中,当图片是普通的图片时,当然没有任何问题;但当图片是Visio对象图片时,问题就来了,这段代码会将Visio对象图片切换为一串代码。

问题解决

究其原因就是切换回来的时候连图片也选中了,那么就好办了,我们让它切换的时候还是只选中标签+编号,然后再执行切换代码即可(当然你也可以在Word中手动再切换回来)。

经过调试,更改这段代码,将标签的位置设置为起始位置即可

更改前:

'删除标签与编号间的空格(英文后的保留)With Selection.Find.Text = Lab & " ".Forward = True   'False=向上查找,(True=向下查找).MatchWildcards = False '不使用通配符If Lab Like "*[0-9a-zA-Z.]" Then  '此处判断标签的最后一个字符是否为英文或数字,是则不删除空格Else.Replacement.Text = Lab.Execute Replace:=wdReplaceOne  '替换找到的第一个,此处用作删除空格endPt = endPt - 1 '删除空格后,末位减1Selection.End = endPtEnd IfEnd With

更改后:

'删除标签与编号间的空格(英文后的保留)
With Selection.Find.Text = Lab & " " '图+空格.Forward = True   'False=向上查找,(True=向下查找).MatchWildcards = False '不使用通配符If Lab Like "*[0-9a-zA-Z.]" Then  '此处判断标签的最后一个字符是否为英文或数字,是则不删除空格Else.Replacement.Text = Lab.Execute Replace:=wdReplaceOne  '替换找到的第一个,此处用作删除空格endPt = endPt - 1 '删除空格后,末位减1startPt = Selection.Start '更改的代码Selection.End = endPtEnd If
End With

倒数第4行为新加入的代码,这样就不会修改Visio对象图片了,完美解决。

完整宏代码

Sub InsertCaption()  '修改系统插入“题注”命令'功能:自动删除标签与编号间的空格(英文除外),并在题注数字后添加一个空格;适用于:Word 2003 - 2013,不兼容WPS文字!'真正从原理上协同系统插入题注,无任何前提条件;用户照常插入题注即可,甚至感觉不到程序的存在!'Endlesswx于2015年8月4日'另,如果插入的始终未域代码而不是数字,非程序问题,Alt+F9一次即可Dim Lab As String, startPt As Long, endPt As Long, myrang As Range'On Error Resume Next  '发生错误时让程序继续执行下一句代码
'    Application.ScreenUpdating = False     '关闭屏幕更新,2013在此处关闭更新会导致输入框灰色不可选,故修正在调出对话框之后startPt = Selection.Start  'startPt标注起始点'***将if条件隐藏隐藏即可实现----手动替换题注空格***If Application.Dialogs(357).Show = -1 Then '插入“题注”对话框秀出来,如果按确定结束时执行以下程序,避免按取消后的空格,357也可换成wdDialogInsertCaptionApplication.ScreenUpdating = False     '关闭屏幕更新Lab = Dialogs(357).LabelendPt = Selection.Start  'endPt标记插入的题注部分终点Selection.Start = startPt  '选定插入的整个题注'删除标签与编号间的空格(英文后的保留)With Selection.Find.Text = Lab & " " '图+空格.Forward = True   'False=向上查找,(True=向下查找).MatchWildcards = False '不使用通配符If Lab Like "*[0-9a-zA-Z.]" Then  '此处判断标签的最后一个字符是否为英文或数字,是则不删除空格Else.Replacement.Text = Lab.Execute Replace:=wdReplaceOne  '替换找到的第一个,此处用作删除空格endPt = endPt - 1 '删除空格后,末位减1startPt = Selection.StartSelection.End = endPtEnd IfEnd With'在题注数字后添加一个空格Selection.Fields.ToggleShowCodes  '切换域代码,这样才能用^d查找域With Selection.Find.Text = "^d".Replacement.Text = "^& ".Forward = False   'False=向上查找,(True=向下查找).MatchWildcards = False '不使用通配符.Execute Replace:=wdReplaceOne  '替换找到的第一个,此处用作添加空格End With'选定整个插入的题注内容,将域代码切换回来endPt = endPt + 1 '增加空格后,末位加1With Selection.Start = startPt.End = endPt.Fields.ToggleShowCodes   '切换域代码(切换回来)End With'将光标定位至题注所在段尾处
'       Selection.MoveRight Unit:=wdCharacter, Count:=1  '此句光标返回插入题注前的原始位置,对于已经输好标题的情况并不合适'选择段尾回车符With Selection.Find.Text = "^13".Forward = True   'False=向上查找,(True=向下查找).MatchWildcards = False  '不使用通配符.Wrap = wdFindContinue '继续查找.ExecuteEnd WithSelection.MoveLeft Unit:=wdCharacter, Count:=1  '定位到段尾回车前End IfApplication.ScreenUpdating = True          '恢复屏幕更新End Sub

感悟

程序猿就是好啊,自己动手,丰衣足食,哈哈哈!!!

欢迎关注,不断更新中……

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347054.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【32位win7一键扫雷】32位win7系统自带扫雷游戏逆向分析之一键扫雷(附VS代码工程文件、可执行文件和OD分析缓存文件)

实现效果 视频地址:https://www.zhihu.com/zvideo/1373742900744974336 附一张扫雷自定义中难度最大时进行一键扫雷的截图,如下,24*30,共668颗雷。 前言 一直对逆向感兴趣,就拿最简单的扫雷开始,对于XP系统中的扫雷,雷的数目以及雷区的地址都是固定的,可以直接通过…

基于51单片机的智能电子秤设计课程设计毕业设计

微信公众号:创享日记 对话框发送:单片机电子秤 获取仿原理图、真源文件、源程序代码和论文报告等 由STC89C51单片机最小系统LCD1602液晶显示模块HX711AD模块LED模块蜂鸣器按键模块10kg压力传感器构成。 具体功能: 1、数码管显示当前的重量&a…

【黑客帝国数字雨屏保】基于Win32的黑客帝国数字雨屏幕保护程序(附VS工程代码文件和可执行文件)

运行效果 代码结构 //黑客帝国数字雨 花心胡萝卜 #包含 <windows.h> #包含 <stdlib.h>#define 时钟编号 1 #define 最大长度 25 //一个显示列的最大长度 #define 最小长度 8 //一个显示列的最小长度 // 类型定义 结构类型 _字符序列 {//整个当作屏幕的一个显示列…

【模式识别】Fisher线性判别实验报告之MATLAB仿真

一、 参数 1.题设三个类,每个类均有10个样本,分别为w1,w2,w3,因此采用两两互相分类,最后得出结果; 2.三类样本的均值向量依次为m1,m2,m3; 3.三类样本的类内离散度矩阵依次为S1,S2,S3; 4.对于w1和w2,总类内离散度矩阵为Sw12,类间离散度矩阵为Sb12,通过矩阵特…

不知所措:您是否真的需要为您的API提供客户端库?

RESTful Web服务和API的优点在于&#xff0c;任何使用HTTP协议的使用者都可以理解和使用它。 但是&#xff0c;同样的难题一遍又一遍地弹出&#xff1a;您是否应该将Web APis与客户端库一起使用&#xff1f; 如果是&#xff0c;您应该支持哪些语言或/和框架&#xff1f; 通常这…

【自适应盲均衡3】多模算法(MMA)——复数改进常模算法(MCMA)的理论推导与MATLAB仿真

关注公号【逆向通信猿】更精彩!!! 接上篇【自适应均衡2】多径衰落信道的复数常模算法(CMA)的理论推导与MATLAB仿真 理论推导 MMA或者MCMA其实是在CMA基础上改进而得到的,有学者称其为实虚部分开的常模算法。该算法使均衡器输出信号的实部与虚部分别收敛于各自的模值,改…

程序猿必备工具『CSDN浏览器助手』之超实用小工具测评

CSDN浏览器助手简介 CSDN浏览器助手由CSDN官方开发&#xff0c;集成【一键呼出搜索】、【万能快捷工具】、【个性标签页】和【 “真”免广告】四大功能&#xff0c;打开后给人的第一印象就是 清新脱俗 四个字&#xff0c;功能非常丰富&#xff0c;快捷键的使用能够大大提高工作…

【自适应盲均衡4】基于RLS的多径衰落信道均衡算法(RLS-CMA)的理论推导与MATLAB仿真

关注公号【逆向通信猿】更精彩!!! 一、回顾CMA和MMA 对于前面两种算法 【自适应均衡】多径衰落信道的复数常模算法(CMA)的理论推导与MATLAB仿真 【自适应均衡】多模算法(MMA)——复数改进常模算法(MCMA)的理论推导与MATLAB仿真 误差信号为:

【自适应(盲)均衡6】信号过多径衰落信道的矩阵乘法表示之Toeplitz矩阵和Toeplitz块矩阵的生成(分数间隔FSE)

关注公号【逆向通信猿】更精彩!!! 信号过系统(多径信道)的连续形式 信号过系统(多径信道)的离散采样形式 通常接收端处理的是数字信号,需对接收信号进行采样,当采样率为符号速率时,即为符号间隔采样;采样率为符号速率的P倍时,为分数间隔采样 至于为什么要用分数…

JDK 9/10/11:Java字符串上+ =带来的副作用

问题“ 为什么array [i &#xff05;n] i ”在Java 8和Java 10中给出不同的结果&#xff1f; ”已于本周初发布在StackOverflow.com上 。 它指向JDK9和更高版本中存在的Java编译器中的错误 &#xff0c;但JDK8中不存在。 如StackOverflow线程上所述&#xff0c; Didier L提供…

【自适应盲均衡7】分数间隔的复数常模算法(FSE-CMA)

关注公号【逆向通信猿】更精彩!!! 理论推导 基于分数间隔的复数常模算法(FSE-CMA)的推导其实与符号间隔的算法是类似的,见 【自适应盲均衡2】多径衰落信道的复数常模算法(CMA)的理论推导与MATLAB仿真 分数间隔均衡器模型 分数间隔均衡器通常有两种比较经典的模型,…

JavaFX技巧30:带有DropShadow的ScrollPane

最近&#xff0c;在我的一个项目中&#xff0c;我发现用户很难看到ScrollPane实例的内容当前是否已滚动。 一种更清晰的方法是在滚动窗格的顶部添加阴影。 这也是Google的Material Design建议的。 所以我尝试了一下。 在我的解决方案中&#xff0c;我只是向ScrollPane添加了一…

【有限域除法】二元多项式除法电路原理及MATLAB详解

关注公号【逆向通信猿】试读更多内容!!! 二元多项式除法电路原理 例: g ( x ) = x 4 + x 2 + x + 1 g(x)=x^4 + x^2+x+1

Spring Apache Kafka教程

在本SpringApache Kafka课程中&#xff0c;我们将学习如何在Spring Boot项目中开始使用Apache Kafka&#xff0c;并开始生成和使用我们所选主题的消息。 除了一个简单的项目外&#xff0c;我们还将深入探讨Kafka的术语以及分区概念在Kafka中的工作方式。 让我们开始吧。 1.简介…

adf4351使用方法_ADF:使用HTTP POST方法进行URL任务流调用

adf4351使用方法众所周知&#xff0c;可以通过某些URL直接从浏览器或某些外部应用程序调用有限任务流。 如果任务流的属性“ URL invoke”设置为“ URL-invoke-allowed”&#xff0c;则启用此功能&#xff0c;该功能通常在集成项目中使用。 通常&#xff0c;客户端&#xff08;…

【定时同步系列2】16QAM调制+OM定时+信号分段处理+误码率曲线之MATLAB仿真(复信号模型)

关注公号【逆向通信猿】阅读更多内容!!! 算法回顾 关于O&M算法的原理、公式推导与详解,请参考博客: 【定时同步系列1】定时同步之MARTIN OERDER算法原理与公式推导 鉴于前期有很多读者私信博主O&M算法的MATLAB仿真过程,前期太忙没来得及做。终于抽得一日闲,可…

【定时同步系列3】8PSK调制+OM定时+信号分段处理+误码率曲线之MATLAB仿真(实信号模型)

关注公号【逆向通信猿】更精彩!!! 仿真结果 对于8PSK调制,仿真结果如下: 误码率曲线图 假设 E b / n 0 = 14 d B Eb/n_0 = 14dB

借助Web技术,桌面用户界面将保持活跃

要了解Java桌面应用程序有什么问题&#xff0c;让我们看一下JavaFX&#xff08;桌面应用程序的领先UI框架&#xff09;的新功能。 很明显&#xff0c;它正在向Web方法发展&#xff0c;从Web世界中借用了越来越多的功能。 JavaFX支持一部分CSS功能&#xff0c;并附带其自己的属性…

Win10窗口侧边栏设置Win7模式

本人非常不喜欢Win10的几个系统功能 贴靠窗口时自动调整窗口大小&#xff0c;填满可用空间关将窗口对齐时&#xff0c;显示能够在其旁边对齐的内容当我调整某个贴靠窗口的大小时&#xff0c;也调整任何相邻贴靠窗口的大小 想调整成Win7那种模式和风格的话&#xff0c;设置如下…

VS2017无法打开文件MSVCRTD.lib

需要添加组件&#xff0c;如下图