利用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 vcard使用示例,生成vcf文件
Android vcard使用示例,生成vcf文件 我们备份手机联系人时,导出到SD卡时,会在SD卡中生成一个vcf文件,用于保存联系人姓名,手机号码. vCard 规范容许公开交换个人数据交换 ( ...
- Linux进程概述
一.介绍 当linux系统中的一个进程运行起来的时候,总是要访问系统的资源,访问文件或者向其他的进程发送信号.系统是否允许其进行这些操作?系统是根据什么来判断该进程的权限?这些问题是和进程信任状(pr ...
- Externalizable的使用方法
package com.itbuluoge.object; import java.io.Externalizable; import java.io.FileInputStream; import ...
- 中国计算机学会CCF推荐国际学术期刊会议(最新版)
中国计算机学会推荐国际学术期刊会议 2014年12月,中国计算机学会(CCF)启动新一轮<)计算机体系结构/高性能计算/存储系统: )计算机网络:)网络与信息安全:)软件工程/系统软件/程序设计 ...
- ubuntu14中创建python虚拟环境
一.安装python-virtualenv包 sudo apt-get install python-virtualenv 安装完成后,创建一个虚拟环境文件夹. mkdir VENVcd VENV 创 ...
- 关于Xilinx MicroBlaze应用modelsim se仿真问题(EDK:3593 - Unable to locate the precompiled library microblaze_v8_50_c)
ERROR:EDK:3593 - Unable to locate the precompiled library microblaze_v8_50_c. The file D:\Xilinx\14. ...
- 黑客编程教程(十四)单线程TCP端口扫描器
#include<winsock2.h> #include<stdio.h> #include <time.h> //计时需要用到的头文件 #pragma comm ...
- Jquery获取下拉选择节点名称值赋给textbox文本框 获取 父节点的栏目名称编号
<label for="parentNode" style="float:left" >父级栏目:</label> <select ...
- css3实现3d显示效果
<!doctype html><html><head> <meta charset="UTF-8"> <meta ...
- jquery 替换原来的html内容
1.replaceWith() 使用括号内的内容替换所选择的内容. $("#div").replaceWith("<div id="div2"& ...