Range to Image (JPEG) больше не работает (от Excel 2007 до O365)
Мне нужно преобразовать диапазон в изображение и сохранить его в формате JPEG, который я затем смогу использовать для различных целей (например, для отправки по электронной почте). Теперь я переключился на O365 по сравнению с Excel2007, и с этим переключателем картинка всегда пуста только с рамкой. Кажется, в моем коде были какие-то проблемы, которые я прикрепил ниже. Пожалуйста, у вас есть идеи, в чем может быть проблема?
Спасибо и всего наилучшего, Сюзанна
Sub Range_To_Image()
'erstellt von den markierten Zellen eine Bilddatei (GIF)
Dim Zellbereich As Range
Dim Anz_Markierungen As Integer
Dim Bild As Picture
Dim Diagramm As ChartObject
On Error GoTo Hell 'falls "Abbrechen" gedrückt wird
'Zellen markieren (Bildbereich)
Set Zellbereich = Sheets("OE Daily Summary").Range("A6:O66")
On Error GoTo 0
Application.ScreenUpdating = False
Zellbereich.Copy
Worksheets.Add
Set Bild = ActiveSheet.Pictures.Paste(Link:=True)
Bild.CopyPicture Appearance:=xlScreen, Format:=xlPicture
Set Diagramm = ActiveSheet.ChartObjects.Add(0, 0, Bild.Width, Bild.Height)
With Diagramm
.Chart.Paste
.Chart.Export Filename:=ActiveWorkbook.Path & "\OE_Daily_Summary" & ".jpg", FilterName:="jpg"
End With
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.ScreenUpdating = True
Set Diagramm = Nothing
Set Bild = Nothing
Set Zellbereich = Nothing
Exit Sub
Hell:
MsgBox "", , "Abbruch"
End Sub
1 ответ
Мне не понятно, почему Picture
объект необходим. Существует Range.CopyPicture
метод.
Но главная проблема в том, что ChartObject
Нужно активировать перед вставкой картинки к нему.
Следующее работает для меня, используя Excel 385
,
Sub Export()
Dim oWs As Worksheet
Dim oRng As Range
Dim oChrtO As ChartObject
Dim lWidth As Long, lHeight As Long
Set oWs = ActiveWorkbook.Worksheets("OE Daily Summary")
Set oRng = oWs.Range("A6:O66")
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 'This is necessary
With oChrtO.Chart
.Paste
.Export Filename:=ActiveWorkbook.Path & "\OE_Daily_Summary" & ".jpg", Filtername:="JPG"
End With
oChrtO.Delete
End Sub
Смотрите также: VBA - Диапазон изображения в JPG.