以更高的分辨率复制Excel形状

时间:2018-12-21 09:56:01

标签: excel vba excel-vba

我在Excel中有一个对象,希望将其粘贴为其他选项卡中的图片。该对象包含各种名称,它们的字体很小(字体大小为2)。

下面是负责复制/粘贴对象图像的代码段,到目前为止,它只能粘贴文本模糊且不可读的图像。但是,当我放大到原始形状时,文本会很好看。我需要的图像必须具有足够高的分辨率才能以326%的缩放率可读。

代码:

  Dim strMap As String
 'Creating a new image
     strMap = "mapGroup3" 'Name of an object
     Sheets("Maps (Prov)").Select
     ActiveSheet.Shapes(strMap).Copy
     Sheets("Image").Select
     Range("a1").Select
     ActiveSheet.Pictures.Paste.Select
     'Application.ScreenUpdating = True

我尝试使用.PasteSpecial指定格式,但最终出现以下错误:

 Run-time error '438':
 Object does not support this property or method

上述错误的代码:

 'Creating a new image
 strMap = "mapGroup3"
 Sheets("Maps (Prov)").Select
 ActiveSheet.Shapes(strMap).Copy
 Sheets("Image").Select
 Range("a1").Select
 ActiveSheet.Pictures.PasteSpecial _
 Format:=3, Link:=False, DisplayAsIcon:=False

1 个答案:

答案 0 :(得分:2)

粘贴为图片或图像总是导致仅粘贴可见像素。因此,对于可见尺寸,质量是最佳的。

如果您需要精确复制源文件中的质量,则不应使用“粘贴为”,而应仅从剪贴板复制/粘贴:

Worksheets("Maps (Prov)").Shapes("mapGroup3").Copy
Worksheets("Image").Paste Destination:=Worksheets("Image").Range("D4")

当然,这会粘贴与源中相同的对象。如果您确实需要更改对象的种类,例如复制一定范围的单元格并将其粘贴为图片(图像),那么除了复制之前要使源足够大,别无其他方法。源越大,后期粘贴的像素越多,质量就越好。

不幸的是,这并不像听起来那样简单。例如,如果要复制一定范围的单元格并以高质量将其粘贴为图片(图像),则需要在复制之前使该范围内的所有对象更大。即行高,列宽,字体大小...。复制后反之亦然。并且必须先将已分组的形状取消分组,然后在复制之前调整所有单个组成员的大小。复制后反之亦然。