使用 Word (VBA) 分割长图到多页
Posted bitssea
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 Word (VBA) 分割长图到多页相关的知识,希望对你有一定的参考价值。
本文记录,如何使用 Word VBA,把文件中,长图切割并拆分到多个页中去。
问题背景:
最近在处理一个 Word 文档,发现里面有特别长的图片,超过了页面大小,导致打印的时候,根本无法打印整张图片;然后发现,Word 中,根本没有办法,设置“图片跨页显示”;而且在网上查了半天,也没有好办法;于是,只能自己动手丰衣足食了,写段 VBA 代码,专门用于处理这个问题;下面分享给大家;
解决思路:
解决思路很简单,就是根据页面高度,对比图片高度,要是图片高度大于页面高度,就按照页面高度,把图片切成一段一段的,放回去!
不足之处:
代码只能按照页面高度,自动去切分,但是无法确定,切图片的位置,恰好是你想要的位置;切完之后,要是需要微调切分位置,就用 Word 里的 Crop 选项,自己手调吧。
代码如下:
Sub Split_LongPic()
‘ Created by: Bitssea (https://www.cnblogs.com/bitssea/)
Set o_InlineShape = ActiveDocument.InlineShapes(1)
o_InlineShape.Select
‘Find page height, deduct margin height
Page_TopMargin = ActiveDocument.PageSetup.TopMargin
Page_BottomMargin = ActiveDocument.PageSetup.BottomMargin
Page_Height = ActiveDocument.PageSetup.PageHeight - Page_TopMargin - Page_BottomMargin - 20
‘Find Shape Info, Scaled Height, Scale Percentage
Shape_Height = o_InlineShape.Height
Shape_ScalePercent = o_InlineShape.ScaleHeight / 100
If Shape_Height > Page_Height Then
‘Find number of copy needed
Split_No = Int(o_InlineShape.Height / Page_Height) + 1
For x = 1 To Split_No
With o_InlineShape.PictureFormat
‘Reset Pic Size
.CropTop = 0
.CropBottom = Shape_Height
‘Start Crop Pic
.CropBottom = (Shape_Height - x * Page_Height) / Shape_ScalePercent
.CropTop = ((x - 1) * Page_Height) / Shape_ScalePercent
End With
Selection.Copy
Selection.Paste
o_InlineShape.Select
Next
‘Delete orignal file, eliminate duplicate
Selection.Delete
End If
End Sub
就这些,希望对大家有帮助,(^_^)b
以上是关于使用 Word (VBA) 分割长图到多页的主要内容,如果未能解决你的问题,请参考以下文章
在无头模式下将 libreoffice 电子表格合并到多页文档中?