利用VBA宏批量解决Word中图片大小、居中设置
需求:经常阅读网上的研报(没钱买排版漂亮的高质量研报),有些需要保存的复制下来到word里,图片很大都超出word的边界了,也没有居中,手工一张张调整不现实,上百页的研报,几十张图片。
解决方案:利用VBA宏批量解决。
第一种方法经过测试,只是前面部分有些,后面部分无效。
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 InlineShape
For Each oILS In ActiveDocument.InlineShapes 'Selection.InlineShapes
If oILS.Type = wdInlineShapePicture Then
oILS.Select
oILS.LockAspectRatio = msoTrue '锁定纵横比,防止默认没有锁定修改了图片变形;不锁定纵横比是msoFalse
Selection.Range.ShapeRange.LockAspectRatio = msoTrue
'MsgBox("图片宽度" & oILS.Width) '测试,提示图片大小以便判断单位'此处单位是像素。
picWidth = oILS.Width
picHeight = oILS.Height
If 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 Then
oILS.Height = Abs(picMaxHeight)
oILS.Width = oILS.Height * picWidth / picHeight
End If 'oILS.Range.Select
'Selection.ClearFormatting
'Selection.Range.Paragraphs.Alignment = wdAlignParagraphCenter
With oILS
.Range.ParagraphFormat.Reset
'.Range.ParagraphFormat.LineSpacingRule = wdLineSpaceSingle '单倍行距
.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter '居中
End With
End If
Next
End Sub
上述代码注意两点,一是即使设置了锁定纵横比,如果只设置了宽度或者高度其一,图片依然没有等比例缩小,所以高度和宽度都要设置才行。
二是宽度缩小后,高度仍可能超出页面,所以还需要对高度再检查和缩小一次。
2020/4/19第N次更新。
利用VBA宏批量解决Word中图片大小、居中设置的更多相关文章
- iOS 解决LaunchScreen中图片加载黑屏问题
iOS 解决LaunchScreen中图片加载黑屏问题 原文: http://blog.csdn.net/chengkaizone/article/details/50478045 iOS 解决Lau ...
- 关于Android中图片大小、内存占用与drawable文件夹关系的研究与分析
原文:关于Android中图片大小.内存占用与drawable文件夹关系的研究与分析 相关: Android drawable微技巧,你所不知道的drawable的那些细节 经常会有朋友问我这个问题: ...
- Word 中实现公式居中编号右对齐 -- 含视频教程(9)
1. 两种方法 不管你用「Word 自带公式」还是「Mathtype」,一般来说,Word 中实现公式居中编号右对齐的方法有两种.(1):表格法:(2):制表位. 2. 方法1:表格法 >> ...
- div css 伪类 不固定图片大小 居中, css div 实现三角形
div css 伪类 不固定图片大小 居中 <style> .pic_box{width:300px; height:300px; background-color:#beceeb; fo ...
- 批量解决 word/wps 中公式和文字不对齐的问题
完美解决Word或wps中中公式和文字对不齐的问题 在 word 的各个版本中,当公式和字符同时出现时,尤其是发生公式的拷贝粘贴时,公式往往会出现上飘或下移的情况,这里给出一个简单易行的解决方案: 全 ...
- js生成word中图片处理
首先功能是要求前台导出word,但是前后台是分离的,图片存在后台,所以就存在跨域问题. 导出文字都是没有问题的(jquery.wordexport.js),但是导出图片就存在问题了: 图片是以链接形式 ...
- ueditor粘贴word中图片
最近公司做项目需要实现一个功能,在网页富文本编辑器中实现粘贴Word图文的功能. 我们在网站中使用的Web编辑器比较多,都是根据用户需求来选择的.目前还没有固定哪一个编辑器 有时候用的是UEditor ...
- Ckeditor IE下粘贴word中图片问题
自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了.一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器) ...
- 解决Android中图片圆角——.9图
目录: 一.问题概述 二..9图介绍 三..9图制作 1.开发工具 2.打开图片 3.制作图片 4.保存图片 一.问题概述 在html开发中,可以通过设置css的border-radius来设置圆角 ...
随机推荐
- Android 加新的页面
工程右键->New->Other->Android Activity
- hibernate,动态更新,插入 dynamic-insert,dynamic-update 我有话要说 ---稍后整理
http://dreamzhong.iteye.com/blog/1207377 http://blog.csdn.net/hsuxu/article/details/8108326 @org.hib ...
- NodeJS错误处理最佳实践
NodeJS的错误处理让人痛苦,在很长的一段时间里,大量的错误被放任不管.但是要想建立一个健壮的Node.js程序就必须正确的处理这些错误,而且这并不难学.如果你实在没有耐心,那就直接绕过长篇大论跳到 ...
- ui-router路由控制器(一)
angularUI 在不断发展过程中已经被划分成了几个模块,你可以选择你需要的模块载入,我们今天要了解一下路由控制器 ui-router ,它就是angularUI划分出出来的一个独立模块. 此模块只 ...
- scala-trait实现AOP编程
步骤1:声明表示基本动作方法的模块Taction //声明表示基本动作方法的模块Taction trait TAction { def doAction } 步骤2:定义一下加入了前置处理和后置处理的 ...
- 如何让div在整个页面中居中?
参考必应主页的样式,在页面中放置一个表格,100%宽高,然后表格内部是一个单元格,在单元格内部放置div,使其margin为auto即可. <table style="height: ...
- [Jobdu] 题目1391:顺时针打印矩阵
题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2 ...
- 在vps上安装中文环境
现在vps默认都是安装的英文环境,其实变成中文环境也很简单.我记录以下在ubuntu下如何改变为中文环境. 1.安装中文环境包. sudo apt install language-pack-zh-h ...
- [na]非对称加密方式&带加密的数字签名交互流程
1,对称加密 2,混合加密 3.数字签名 4,带加密的数字签名
- [self.view addSubview:vc2.view]程序崩溃的解决办法
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. UIButt ...