VBA - 范围到 jpg 图片



>我正在尝试从 excel 中的特定范围获取 jpg 文件

我目前正在获得

1004 從 Range 方法從 _Worksheet object 出現時期錯誤。

这是我的代码的样子:

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

主要错误在他的评论中已经提到@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:UsersYourNameDocuments

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

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

我必须添加

Application.Wait (Now + TimeValue("0:00:15"((

My Excel VBA 解决方案

  1. 范围。选择
  2. 范围。复制图片
  3. 粘贴它
  4. 剪切它以存储到系统剪贴板(关键点(
  5. 在一行中创建 Windows PowerShell 命令
  6. 通过命令行管理程序执行PowerShell
     Sub 巨集1()
        PicDir = ActiveWorkbook.Path & ""
        PicFile = Format(Now(), "hh-mm") & ".png"
        Sheets("工作表1").Select
        Range("Q1:U10").CopyPicture Appearance:=xlScreen, Format:=xlPicture '複製範圍成圖檔
        ActiveSheet.Paste '要利用這動作-1,才會真的存到 Clipboard
        ActiveSheet.Shapes.Range(Array(Selection.ShapeRange.Name)).Select '選剛貼上的 Shape
        Selection.Cut '要利用這動作-2,才會真的存到 Clipboard
        sPSCmd = "powershell $img = get-clipboard -format image ; $img.Save('" & PicDir & PicFile & "')" '把 Clipboard 內容存成圖檔的 PowerShell
        RetVal = Shell(sPSCmd, 0) '無聲無息的執行
    End Sub

最新更新