VBA - 范围到jpg图片

时间:2017-02-07 13:42:13

标签: excel vba excel-vba

我试图从excel中的特定范围获取jpg文件

我目前正在

  来自_Worksheet对象的Range方法的

1004运行时错误。

这就是我的代码:

Sub Export()

Dim ws As Worksheet
Dim Rng As Range
Dim Chrt As Chart

Set ws = ActiveSheet
Set Rng = Range("B2:H11")

ws.Range(Rng).CopyPicture
Set Chrt = Charts.Add

With Chrt
    .Paste
    .Export FileName = "Case.jpg", Filtername:="JPG"
End With

End Sub

2 个答案:

答案 0 :(得分:7)

@J_Lard在他的评论中已经提到了主要错误。

但我会使用ChartObject而不是Chart表。您可以确定输出的大小,而不是获取图片中的整个图表区域。

使用F8步骤时,粘贴和导出将起作用,而实时运行时,ChartObject需要激活。

Sub Export()

 Dim oWs As Worksheet
 Dim oRng As Range
 Dim oChrtO As ChartObject
 Dim lWidth As Long, lHeight As Long

 Set oWs = ActiveSheet
 Set oRng = oWs.Range("B2:H11")

 oRng.CopyPicture xlScreen, xlPicture
 lWidth = oRng.Width
 lHeight = oRng.Height

 Set oChrtO = oWs.ChartObjects.Add(Left:=0, Top:=0, Width:=lWidth, Height:=lHeight)

 oChrtO.Activate
 With oChrtO.Chart
  .Paste
  .Export Filename:="Case.jpg", Filtername:="JPG"
 End With

 oChrtO.Delete

End Sub

如果未指定路径,则Case.jpg将默认保存 保存位置。这可能是您的用户文档目录C:\Users\YourName\Documents\

答案 1 :(得分:0)

以下是如何在与工作簿相同的路径中导出:

Sub Export()
Dim ws As Worksheet
Dim Rng As Range
Dim Chrt As Chart
Dim ExportPath As String

Set ws = ActiveSheet
Set Rng = ws.Range("B2:H11")
ExportPath = ThisWorkbook.Path & "\Case.jpg"

Set Chrt = ThisWorkbook.Charts.Add
Rng.CopyPicture xlScreen, xlBitmap   

With Chrt
    .Paste
    .Export FileName:=ExportPath, Filtername:="JPG"
End With
End Sub