在vba中如果要将excel的单元格区域内容转化为图片,可以有多种方法。
方法1:使用Range对象的CopyPicture方法将单元格区域复制为图片,这与单击“开始”选项卡下的“复制为图片”是一样的效果,如下图所示:
Range对象的CopyPicture方法具有两个参数,分别为Appearance参数,用于指定复制后的图片的外观是如屏幕所示还是如打印效果,以及Format参数,用于指定格式是图片还是位图。
方法2:使用Range对象的Copy方法将单元格区域复制到剪贴板。
Range对象的Copy方法只有一个参数Destination,用于指定要粘贴的单元格区域,如果省略这个参数,则表示复制到剪贴板。
以上两种方法介绍了如何将excel单元格区域的内容转化为图片,转化以后我们往往需要使用图片,这时候可以使用如下的几种方法:
方法1:使用Range对象的PasteSpecial方法,粘贴剪贴板中的图片。
这里需要特别注意的是,Range对象的PasteSpecial方法具有Paste,Operation,SkipBlanks,Transpose等参数,但是在粘贴剪贴板中的图片时,所有这些参数都必须省略,否则将报错。
代码如下:
Sub QQ1722187970() Dim oRng As Range Dim oWK As Worksheet Set oWK = Excel.ActiveSheet Set oRng = oWK.Range("a1:d5") '将a1:d5单元格区域的内容复制为图片 oRng.CopyPicture '省略所有参数直接粘贴图片到F1单元格 oWK.Range("f1").PasteSpecial End Sub
方法2:使用Worksheet对象的Paste方法,粘贴剪贴板中的图片。
Worksheet对象的Paste方法有两个参数:Destination参数用于指定要粘贴图片的单元格区域,Link参数用于指定是否与源数据建立关联,Destination参数和Link参数是互为排斥的,如果指定了Destination参数则Link参数必须省略,如果指定了Link参数则Destination参数也必须省略。
代码如下:
Sub QQ1722187970() Dim oRng As Range Dim oWK As Worksheet Set oWK = Excel.ActiveSheet Set oRng = oWK.Range("a1:d5") '将a1:d5单元格区域的内容复制为图片 oRng.CopyPicture '使用工作表的Paste方法粘贴图片 oWK.Paste oWK.Range("f1") End Sub
方法3:使用Worksheet对象的PasteSpecial方法,粘贴剪贴板中的图片。
Worksheet对象的PasteSpecial方法相比于Paste方法具有更加丰富的参数,具体的可以查看帮助文档。其中Worksheet对象的PasteSpecial方法默认将粘贴剪贴板的内容到活动单元格中。
代码如下:
Sub QQ1722187970() Dim oRng As Range Dim oWK As Worksheet Set oWK = Excel.ActiveSheet Set oRng = oWK.Range("a1:d5") '将a1:d5单元格区域的内容复制为图片 oRng.CopyPicture '使用工作表的PasteSpecial方法粘贴图片 oWK.PasteSpecial End Sub
总结:以上介绍了在vba中将excel单元格区域的转化为图片的几种方法,可以灵活使用。
有时候我们希望把单元格区域转换成图片,拷贝到各个软件中,可以使用如下的代码:
Sheet1.Range(“a1:f16”).CopyPicture
Sheet1.Paste Sheet1.Range(“a1”)
Dim op As Shape
For Each op In Sheet1.Shapes
If op.Type <> 8 Then
op.Copy
op.Delete
End If
Next
发表评论