|
请问楼主:
【邮件合并功能】是指利用word中的邮件合并功能,
把指定文件夹内的图片及Excel数据,自动导入到word标准格式中,以便快速打印处理。
按此目的,导入图片以后的尺寸应该是大小一致的。
以你提供的附件来说,图片尺寸最大值在EXCEL表中应该是相当于4列宽,12行高。请确认此条件。
因此,我的做法:
我会写代码,把你文件夹内的原始图片尺寸全部标准化统一到这么大小。
Sub PicSize()
Application.ScreenUpdating = False
Columns("G:J").ColumnWidth = 8.38
Rows("2:13").RowHeight = 14.25
Range("G2:J13").MergeCells = True
H = [g2].MergeArea.Height '171(60)
W = [g2].MergeArea.Width '216(76)
'以上为设置图片标准大小的单元格区域G2:J13为合并单元格。
myPath = ThisWorkbook.Path & "\" '设定图片所在文件夹。默认为Excel表同一文件夹。
For i = 2 To Range("E1").End(xlDown).Row '从E2位置开始遍历所有图片名称。
PicName = Range("E1").Offset(i - 1, 0) '获取图片名称。
'下面加入了容错代码:
On Error Resume Next '插入图片有错误时略过
ActiveSheet.Pictures.Insert(myPath & PicName).Select '如果无错误则在Excel表中插入图片。
If Err.Number > 0 Then '如果有错误(原因是没有符合名称的图片被找到。)
MsgBox "Picture not found ! " & PicName '错误提示
Err.Clear '清除错误码
GoTo PicErrNxt '跳至下一图片。
End If
With Selection '对已经插入的图片进行如下处理:
.Name = "NewPic" ’图片临时命名
.ShapeRange.LockAspectRatio = msoTrue '设定高宽等比例变化。
f = IIf(.Height / H > .Width / W, .Height / H, .Width / W) '计算并选择最大高宽比。
.Height = .Height / f ‘调整图片大小以便适合标准尺寸。即G2:J13合并单元格大小。
.Width = .Width / f
.Top = Range("G2").Top + (Range("G2").MergeArea.Height - .Height) / 2 '图片上下居中
.Left = Range("G2").Left + (Range("G2").MergeArea.Width - .Width) / 2 '图片左右居中
End With
Range("G2:J13").Select
Range("G2:J13").CopyPicture '复制整个合并单元格显示内容
With ActiveSheet.ChartObjects.Add(0, 0, Selection.Width, Selection.Height).Chart '创建一个图片对象
.Paste '把刚才复制好的合并单元格显示内容粘贴进去
.Export myPath & PicName, "JPG" '输出并覆盖原图片
.Parent.Delete ‘Excel表中临时图片对象删除
End With
ActiveSheet.Shapes("NewPic").Delete ‘Excel表中临时插入的图片删除
PicErrNxt: ’此处插入错误跳过语句位置。
Next
[g2:j13].UnMerge '取消合并单元格
Application.ScreenUpdating = True
ActiveWorkbook.Saved = True '不实际保存文件。(欺骗强制告诉Excel该表已经保存了)
ActiveWorkbook.Close ’关闭文件
End Sub
这样把图片处理完成以后,
在按照邮件合并的步骤去做,
就可以得到需要的结果啦。
效果请看附件。附件已经重新上传。
[ 本帖最后由 香川群子 于 2011-6-21 21:29 编辑 ] |
评分
-
1
查看全部评分
-
|