Excel VBA复制范围作为具有缩放的图像

时间:2015-06-05 09:37:11

标签: image excel-vba vba excel

我有以下代码将范围转换为图像并将其保存到文件。我的问题是,我想将复制的范围扩大到更高的分辨率/ dpi以获得更大的图像

Sub SaveRangeToImage(rng As Range, path As String)
    ''' Set Range you want to export to file
    Dim rgExp As Range: Set rgExp = rng
    ''' Copy range as picture onto Clipboard
    rgExp.CopyPicture Appearance:=xlScreen, Format:=xlPicture
    ''' Create an empty chart with exact size of range copied
    With ActiveSheet.ChartObjects.Add(Left:=rgExp.Left, Top:=rgExp.Top, _
    Width:=rgExp.Width, Height:=rgExp.Height)
    .name = "img_img"
    .Activate
    End With
    ''' Paste into chart area, export to file, delete chart.
    ActiveChart.Paste
    ActiveSheet.ChartObjects("img_img").Chart.Export path
    ActiveSheet.ChartObjects("img_img").Delete
End Sub

我需要缩放图像以获得最佳文本质量,如果我之后调整大小,它会让我的文本可见性很差。

有没有人对这个问题有所了解?

2 个答案:

答案 0 :(得分:2)

尝试更改参数:

rgExp.CopyPicture Appearance:=xlPrinter, Format:=xlBitmap
  • xlPrinter =可能会提高打印分辨率
  • xlBitmap =肯定会将分辨率提高为位图

但是@ Dubison的建议将会产生重大影响:

  • Excel中的图表是"向量"图像 - 增加其大小不会降低分辨率(位图图像​​将在所有尺寸上具有相同数量的像素,矢量在转换为打印位图之前动态增加像素数)

答案 1 :(得分:0)

增加活动窗口的缩放以提高分辨率。

导出前添加:ActiveWindow.Zoom = 300 然后在导出后添加:ActiveWindow.Zoom = 100