如何用vba将excel单元格区域的内容转化为图片?

在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

       

发表评论