不称深度指南,只愿浅度指北

很多时候,我们在 Word 中添加的图片,大部分都是类似下面这样“白底黑图”的:

如果图片内容是一段文字,就更加大了我们对文章的理解难度。

这时,我会给它添加一个边框(你也可以留意我的近期文章,凡是白底的图片,都会添加灰色边框线),使用 Word 自带的添加边框功能即可:

但如果图片过多的话,一个一个手动添加,还是太麻烦。作为一个「伪程序员」来说,这是不能忍的。如果有这样一个按钮,点一下就可以完成,那就太棒了!

这里分享一些小北我的构建过程,你可以参考学习。当然,滑动到文章底部,会有详细的代码。

有时高版本软件也不好 图片样式调整无法使用录制宏

首先解释一个概念,嵌入式图形,指那些可视作文本的图形:

为避免在调整文字时,图片发生移动,我们通常会使用这种格式。

但在启动 Word 宏录制时,你无法选中此类图片:

也就谈不上对图片格式的调整了。

经过一番查询,最终发现,在高版本中不支持此方式:

因此,我们需要在后缀名为 doc 的文件中录制宏

改用循环 获取选区所有图片

首先,一般情况下,我们并不会给整篇文档的所有图片添加边框,而是某些特定区域的图片,因此,我们需要设置仅获取选区中的图片。

而如何获取图片,在录制的宏中代码如下:

使用的是索引方式,但我们需要设置所有的图片,而不仅是第一张,因此,需要在选区的所有图片中循环,可以使用 For Each 语句:

For Each InShape In Selection.InlineShapesWith InShapeWith .Borders(wdBorderLeft)            .LineStyle = wdLineStyleSingle            .LineWidth = wdLineWidth050pt            .Color = -570376193End With'中间省略相似部分        .Borders.Shadow = FalseEnd WithNext   

录制宏就可以 添加边框的三要素

边框包含三种基本的属性,样式(实线、虚线)、宽度(粗细)、颜色。

而这些,我们都可以通过录制宏来完成。我比较常用的就是单实线 wdLineStyleSingle,五十度灰 -570376193。

哪个程序没有BUG呢 一点小问题

到上面这步,我们已经基本完成了。

但在实际使用中,你可能会发现,选区自动添加了灰色的底纹,且无法通过 Word 功能去除:

深灰为后续选取部分,浅灰为代码自动添加部分

因此,我们可以将选区重置为光标型,那么选区中就不包含任何内容啦,就可以避免这个bug了。

而选区的重置,我们可以这样定义:

 Dim 数字 As Integer Selection.Start = 数字 Selection.End = 数字

但新问题出现了,如果选区已经重置,我们之前获取的图片对象就失效了。因此,需要先将图片存储在内存中,以供后续使用。

我们可以定义一个图形数组,存放这些选区中的图片:

    Dim Inshapes() As InlineShape    数组大小 = Selection.InlineShapes.CountIf 数组大小 > 0 Then '防止为选择任何图片出现错误

ReDim Inshapes(1 To 数组大小) '下标从1开始For i = 1 To 数组大小Set Inshapes(i) = Selection.InlineShapes(i)NextEnd If

将图片存储到内存后,我们就可以将选区重置为空、循环添加边框啦。

这部分也比较简单,不单独贴代码了。

你真细呀 亿点点细节

为方便我们使用、也防止我们不正确的操作引发程序崩溃,我们需要添加一些细节:


01 反馈提示:

在用户未选择区域时提示“未选择”

执行完代码,反馈给用户已完成图片数

02 光标重置位置:

原代码每次执行完,光标都定位在第一个字符后,可设置为选区的开始位置。

03 样式支持自定义:

允许手动设置边框的颜色、宽度、线型,这样就可以根据不同的文章,实现不同的图片边框效果。

但也不能每次都要设置,需要给一个默认值,以减少操作成本。

04 仅图片有效:

嵌入式图形不仅是图片,还有一些其他元素,虽然不常见,如果做个限定更好(可使用inlineshape.type)。

05 颜色判断:

可以判断图片的外部是否为白色,可能需要其他的API来完成。


代码&解释以下为完整代码(某些细节未添加):

Sub 批量添加图片边框()'本代码由公众号「未央暮城」作者「莫浅北」创建,转载借鉴请备注

Dim ThisStart As Integer    ThisStart = Selection.Start

Dim Inshapes() As InlineShapeDim ArrCount    ArrCount = Selection.InlineShapes.CountIf ArrCount > 0 Then '防止未选择任何图片出现错误

ReDim Inshapes(1 To ArrCount) '下标从1开始'存储图片到内存For i = 1 To ArrCountSet Inshapes(i) = Selection.InlineShapes(i)Next

'保存到内存后再重置选区        Selection.Start = ThisStart        Selection.End = ThisStart

Dim inshapeFor Each inshape In InshapesWith inshapeWith .Borders(wdBorderLeft)                    .LineStyle = wdLineStyleSingle                    .LineWidth = wdLineWidth050pt                    .Color = -570376193End WithWith .Borders(wdBorderRight)                    .LineStyle = wdLineStyleSingle                    .LineWidth = wdLineWidth050pt                    .Color = -570376193End WithWith .Borders(wdBorderTop)                    .LineStyle = wdLineStyleSingle                    .LineWidth = wdLineWidth050pt                    .Color = -570376193End WithWith .Borders(wdBorderBottom)                    .LineStyle = wdLineStyleSingle                    .LineWidth = wdLineWidth050pt                    .Color = -570376193End With                .Borders.Shadow = FalseEnd WithNextWith Options            .DefaultBorderLineStyle = wdLineStyleSingle            .DefaultBorderLineWidth = wdLineWidth050pt            .DefaultBorderColor = -570376193End With

End If

End Sub

其中,只有嵌入式图形才可以使用该代码,非嵌入式图形,请另外录制,或者将其转为嵌入式(不知道如何批量转嵌入?可以底部留言,后续可能会增加这部分代码)最后的叨逼叨今天,在路上看到一群小姐姐坐在几辆跑车里(应该是搞活动),心里就想(酸),跑车也没啥好的,都不能防雨。然后,可能是感动了老天爷,一辆洒水车从路边经过……司机突然发现被“雨”淋了,赶紧一溜烟跑了,可洒水车后面的就倒霉了,只能跟在洒水车后面一点点蠕动,那叫一个憋屈—— THE END ——点赞点的多,有人送跑车 

word 数组 转 指针_Word之VBA丨文档中的图片怎样批量加边框?相关推荐

  1. ChatGPT搞砸了~,如何使用VBA导出Word文档中的图片

    今年大火的ChatGPT似乎无所不能,但是它的确不是万能的,咱们来试试. 提供的代码根本无法运行,继续问,换了个代码,非常不幸的是–还是不能用. Word VBA中并没有内置的方法可以直接导出图片,C ...

  2. Word文档怎样添加图片?技巧分享!怎么在Word文档中加入图片?

    我们经常会在生活中工作中使用word文档来编辑一些文本信息,从而记录一些文字内容,我们在使用word文档来编辑文字信息的时候,感觉都是文字内容太过于单调,我们想要在文档中添加图片,那么究竟该如何操作呢 ...

  3. word文档中插入图片显示不全解决办法

    在windows下写word文档,正常情况下,我们应该不会遇到插入图片显示不全的问题,好像是如果在已有的文档中插入图片,比如文档中间插入,图片没办法自动扩展空间,这就导致了显示不全的问题. 这个问题也 ...

  4. 【Python】批量导出word文档中的图片、嵌入式文件

    Python 批量导出word文档中的图片.嵌入式文件 需求 学生试卷中的题目有要提交截图的,也有要提交文件的,为了方便学生考试,允许单独交或者嵌入Word中提交,那么事后如何整理学生的答案?单独提交 ...

  5. word默认文字环绕方式是什么_在Word 2010文档中设置图片文字环绕方式

    默认情况下,插入到Word 2010文档中的图片作为字符插入到Word 2010文档中,其位置随着其他字符的改变而改变,用户不能自由移动图片.而通过为图片设置文字环绕方式,则可以自由移动图片的位置,操 ...

  6. WORD文档中插入图片(1)

    (转) 在WORD文档中插入图片有两种方法:一种是添加到文档的文本层(嵌入型版式):一种是添加到文档的图形层(其他版式).     文本层的图片是不可以设置版式的,而图形层的版式是可以设置的,但只能是 ...

  7. C#操作Word(五)——在Word文档中插入图片

    实例说明 在Word文档的使用过程中,我们可以轻松的向文档中插入图片信息,那么,怎样使用C#向Word文档中插入图片呢?本实例将会介绍一种方法,可以方便的实现上述功能.实例运行效果如图1所示.   图 ...

  8. Python3-word文档操作(八):提取word文档中的图片方式一-利用docx库

    1. 简介: 要获取word文档中的图片文件.思路就是先解压,再查找.python中,下面两个库都可以实现这个功能: (1)zip库 (2)docx库 zip库: 上一篇博文已经提过,word本质上也 ...

  9. Word文档中粘贴图片不显示

    1. 完全不显示 转自 https://zhidao.baidu.com/question/940969054291935092.html 排除图片文件问题,如果粘贴的图片在Word中不现实,一般是设 ...

最新文章

  1. android电源驱动程序,[转]Android虚拟电源管理驱动
  2. Mysql错误问题:ERROR 1005 (HY000): Can't create table 'crm_1.tbl_client' (errno: 150)
  3. Apollo后台配置:关联公共Namespace(类似与继承父类配置)
  4. apache arm 交叉编译_arm apache php交叉编译
  5. 解决修改SQL SERVER 默认1433端口 访问出错的问题;
  6. oracle rlw,Oracle数据库终于支持R语言 发力数据挖掘
  7. 电大计算机网络技术基础,电大--2016年电大 计算机与网络技术基础小抄已排版.doc...
  8. 算法导论————斜率优化
  9. LeetCode60:Permutation Sequence
  10. 【早知云世】当AI遇上云计算,其应用短板与长处
  11. Adobe驳斥Flash过度耗电论 称HTML5更耗电
  12. narwal无法连接机器人_知了连接型智能营销机器人——重新定义AI客服
  13. android虚拟摇杆
  14. 无线网络的几种认证与加密方式
  15. 如何解决chrome浏览器地址栏变黑色(chrome搜索栏变黑)(mac电脑)
  16. bootstrap黑色酷炫IT行业个人博客模板
  17. 计算机linux认证-1,Linux认证:Linux点评Debian5个五功能
  18. 01-快速入门webpack模块化打包工具
  19. sql server 排序规则
  20. hive ddl语法使用详解

热门文章

  1. R语言CRAN不包含的安装包下载并手动使用RStudio进行安装实战:以下载VRPM包及绘制彩色列线图为例
  2. 使用opencv训练目标检测模型基于cascade模型
  3. python库numpy基本用法
  4. 统计简单学_常用统计图表
  5. Ubuntu E: Unable to locate package错误解决办法
  6. 关于短文本匹配的深度学习模型
  7. pyautogui 的用法 python自动操作鼠标、键盘
  8. ubuntu18.04.4 环境变量设置 export path
  9. 2.合并区间(LeetCode第56题)
  10. 【node】Sequelize常用操作、基本增删改查