网络公司怎么优化网站,网站建设冖金手指花总十五,内蒙古网站备案怎么做,网站结构构图问题引入
撰写论文时为了修改方便#xff0c;通常以插入题注和交叉引用的方式来给图片标号#xff0c;这样修改图片和图号后可以方便、自动地更新。
然而#xff0c;Word在插入题注上从03到13一直没有针对中国用户优化。
插入题注的标签与编号间有一个空格#xff0c;当…问题引入
撰写论文时为了修改方便通常以插入题注和交叉引用的方式来给图片标号这样修改图片和图号后可以方便、自动地更新。
然而Word在插入题注上从03到13一直没有针对中国用户优化。
插入题注的标签与编号间有一个空格当标签是中文时需要用户手动删除标签后竟然不插入空格
新浪微博大神Endlesswx通过宏编程很好地解决了这个问题具体请看新浪博客
Word插入题注时自动删除标签与编号前的空格编号后添加空格
例如我们给图片A添加题注图1空格符图片AWord自带的添加题注功能添加后为图空格符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日另,如果插入的始终未域代码而不是数字非程序问题AltF9一次即可Dim Lab As String, startPt As Long, endPt As Long, myrang As RangeOn 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感悟
程序猿就是好啊自己动手丰衣足食哈哈哈
欢迎关注不断更新中……