VBA操作WORD(五)批量调整图片大小、居中设置

news/2024/11/29 8:59:59/

在word里保存比较大的图片,都大得超出了word的边界了,也没有居中,数量又多,不可能手动一张张调整。

第一种方法经过测试,只是前面部分有效,后面部分无效。

Sub setpicsize() '设置图片尺寸'第一种方法,经测试,文档前面部分图片有效,后面部分无效'Dim n '图片个数'On Error Resume Next '忽略错误'For n = 1 To ActiveDocument.InlineShapes.Count 'InlineShapes 类型 图片'ActiveDocument.InlineShapes(n).Height = 198.45 '设置图片高度为 7cm'ActiveDocument.InlineShapes(n).Width = 455 '单位是像素,设置图片宽度 16cm'Next n
End Sub

 第二种方法,经测试,对整篇文档图片有效:

Sub 设置图片格式()'1.如果图片行间距设置为固定值,那么无论图片设置什么格式,图片嵌入文字会重叠,只显示部分图片。'2.如果图片超出边界才进行处理,设置全文图片大小不超过某个规格,超过则等比例缩小Dim picMaxWidth, picMaxHeight, picWith, picHeight As Long'纸张宽减去左右边距,不用再乘以28.35,已经是像素picMaxWidth = (ActiveDocument.PageSetup.PageWidth - ActiveDocument.PageSetup.LeftMargin - ActiveDocument.PageSetup.RightMargin)picMaxHeight = (ActiveDocument.PageSetup.PageHeight - ActiveDocument.PageSetup.TopMargin - ActiveDocument.PageSetup.BottomMargin)Dim oILS As InlineShapeFor Each oILS In ActiveDocument.InlineShapes 'Selection.InlineShapesIf oILS.Type = wdInlineShapePicture ThenoILS.SelectoILS.LockAspectRatio = msoTrue '锁定纵横比,防止默认没有锁定修改了图片变形;不锁定纵横比是msoFalseSelection.Range.ShapeRange.LockAspectRatio = msoTrue'MsgBox("图片宽度" & oILS.Width) '测试,提示图片大小以便判断单位'此处单位是像素。picWidth = oILS.WidthpicHeight = oILS.HeightIf oILS.Width > picMaxWidth Then'Word中的尺寸单位默认是cm(厘米),而1cm等于28.35px(像素),由于代码中换算设置的单位是px(像素)。'所以就用尺寸高度或宽度值乘像素值。即为:7*28.35=198.45;宽度换算方法与此相同。oILS.Width = Abs(picMaxWidth) '此处单位是厘米。如果Word设置页边距为适中,则中间内容宽17.08CM'注意:如果此处不设置图片高度,即使锁定纵横比,图片纵横比也会改变,不知道为什么?oILS.Height = oILS.Width * picHeight / picWidth 'CentimetersToPoints(7)End If'可能超过宽度调节后,高度还是超出了If oILS.Height > picMaxHeight ThenoILS.Height = Abs(picMaxHeight)oILS.Width = oILS.Height * picWidth / picHeightEnd If'oILS.Range.Select'Selection.ClearFormatting'Selection.Range.Paragraphs.Alignment = wdAlignParagraphCenterWith oILS.Range.ParagraphFormat.Reset'.Range.ParagraphFormat.LineSpacingRule = wdLineSpaceSingle '单倍行距.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter '居中End WithEnd IfNext
End Sub

上述代码注意两点,一是即使设置了锁定纵横比,如果只设置了宽度或者高度其一,图片依然没有等比例缩小,所以高度和宽度都要设置才行。

二是宽度缩小后,高度仍可能超出页面,所以还需要对高度再检查和缩小一次。


http://www.ppmy.cn/news/778471.html

相关文章

java poi 图片居中,poi word table 居中 poi word table

java用poi导出word文档,我要导出一个表格,表格的单元格中还要有... 有个最简单,不用使用任何 poi 或其他第三方类库的方法生成 excel ,或 word ,你把一个生成好的 word 例子用文件另存为 xml , docx 之类,然后你再直接用记事本去打开这个 doc…

关于word或wps图片点击居中但是没有反应的问题

应该是点击图片查看段落中是否有首行缩进,如果有则清零,清零之后便可以正常居中了。

图片居中操作 空行 html,word中进行图片居中对齐批量设置的操作技巧

word图片居中对齐快捷键以及对于多张图片使用查找替换来实现,那么如何一次性批量对文档里面的图片进行居中对齐操作呢?今天,学习啦小编就教大家word中进行图片居中对齐批量设置的操作技巧。 word中进行图片居中对齐批量设置的操作步骤: 第一…

word图片居中, 实际没效果解决、行间距无效果

word中设置图片居中,实际并为居中的问题 解决办法:在图片前 设置段落格式 取消首行缩进,在设置居中。 行间距无效果解决办法:格式--段落--行距--固定值。

如何在Word中将所有图片批量设置为居中对齐

当我们写论文的时候,可能会插入许多的图片,但是格式要求往往要求图片居中。假如在论文完成后,如何设置为让所有图片居中呢?在百度了之后,找到下面方法。 这里我使用的是WPS。 首先打开查找替换,如下图所示…

Word编辑技巧(图片、文本框居中)

双击图和文本框就会弹出个窗口 开Word2010文档窗口,选中需要精确设置位置的图片。在“图片工具”功能区的“格式”选项卡中,单击“排列”分组中的“位置”按钮,并在打开的菜单中选择“其他布局选项”命令,如图所示在打开的“高级版…

Pytorch堆叠多个损失造成内存爆炸

这几天跑代码的时候,跑着跑着就显示被killed掉(整个人都不好了)。查系统日志发现是内存不够(out of memory),没……办……法……了,直接放弃!当然这是不可能的,笔者怎么可…

SystemTap介绍和简单使用

文章目录 一、安装二、编写SystemTap脚本SystemTap 资源 SystemTap 是适用于 Linux 系统的强大跟踪和探测工具,允许检测和监视内核级和用户级活动。 以下是有关如何使用 SystemTap 的简要概述,以及一些入门资源 一、安装 在基于 Ubuntu 或 Debian 的系…