Сохранить изображение в буфер обмена .jpg
У меня есть несколько отчетов Excel и необходимо экспортировать выбранные диаграммы в качестве изображений в качестве первого шага. Затем мне нужно импортировать эти изображения в презентацию PowerPoint. Кажется, я почти там, но застрял.
- Я пытаюсь получить все диаграммы листа с помощью метода chartObjects (я пробовал с диаграммой методов, но тогда моя коллекция была пуста).
Затем я копирую выбранную диаграмму как изображение в буфер обмена (когда это будет работать, я буду использовать forEach, чтобы получить все диаграммы моей книги).
Однако, когда я пытаюсь сохранить данные Clipboard, кажется, что там нет изображений, а есть данные.
- Графическая линейная диаграмма Excel
- Как Excel определяет значения осей для диаграмм?
- Как скопировать несколько наборов данных в Excel mac 2011
- Есть ли способ экспортировать диаграмму слияния в excel с помощью пользовательских кнопок экспорта?
- Создание диаграммы в Excel со временем начала и продолжительностью
$xl = new-object -c excel.application $xl.displayAlerts = $false $xl.visible = $false $wb = $xl.workbooks.open($fileData) $ws= $wb.sheets.Item("Sheet1") $chartCollect = $ws.chartObjects() $chartToExport = $chartCollect.Item(3) $toClipboard = $charToExport.copyPicture() $e=[System.Windows.Forms.Clipboard]::GetDataObject() if ($e -eq $null) { Write-Host "there is no data" } $img =$e.GetImage() if ($img -eq $null) { Write-Host "there is no picture" } $img.save("Path\test.jpg", "jpg") # I tried using the export method, but it does not exist with chartObjects $a = $chartToExport.Export("Path\test.gif", "GIF")
- Пропустив шаг 1, я попытался отправить данные буфера обмена непосредственно в презентацию PowerPoint, которая работает.
Однако я не могу поместить импортированную картинку по своему желанию. Я попытался в то же время импортировать изображение для папок, и у меня тогда нет проблем с их позициями.
$pptx = "Path\Presentation.pptx" $pt = New-Object -ComObject powerpoint.application $presentation = $pt.Presentations.open($pptx) $slide2 = $presentation.slides.item(2) $slide3 = $presentation.slides.item(3) # Paste the Clipboard chart into the PowerPoint presentation. # Works OK, but I do not success to place where I wish $shape2 = $slide2.shapes.paste() $shape2.Left = 10 # Does not work $shape2.Top = 10 # Does not work # Test on existing picture, Works OK $imgTest = "Path\picture.jpg" $LinkToFile = $msoFalse $SaveWithDocument = $msoTrue $Left = 10 $Top = 10 $Width = 10 $Height = 10 $shape3 = $slide3.shapes.addPicture($imgPath, $LinkToFile, $SaveWithDocument,$Left, $Top, $Width, $Height)
Кто-нибудь знает, как решить одну или обе эти проблемы?
- Как применить сохраненный шаблон диаграммы к существующей диаграмме?
- Ярлы сталкиваются при пересечении осей в Excel
- Разница во времени в сводной диаграмме с использованием Power Pivot
- Как обновить данные через VBA в Power Point?
- Несогласованные цвета в Excel / PowerPoint / Word Charts
- Обновление динамической диаграммы при запуске макроса - Анимированный график в Excel
- Создание диаграмм, используемых для цикла VBA
- Создание макроса Excel для нескольких графиков с одинаковыми значениями x, но разными значениями y
Я узнал, что вставка буфера обмена в 2) импортирует файл .emf. Я попытался сыграть с методом .copyPicture в 1), чтобы экспортировать формат .jpg, но безуспешно. (используя: описание метода copyPicture )
Я также попытался выполнить метод incrementLeft и incrementTop, чтобы изменить положение импортированного файла .emf, но безуспешно (используя метод incrementLeft ). Ошибка: исключение вызывает «incrementLeft» с аргументом «1»: исключение из HRESULT: 0x800A01A8
Кто-нибудь знает, как решить вышеуказанные 2 проблемы?
Во всяком случае, я придумал решение, а не красивое, но которое работает пока до лучшего.
Решение для 2:
Прежде чем импортировать изображение в буфер обмена, я дублирую целевой слайд.
Затем я импортирую буфер обмена, а затем экспортирую файл .emf в файл .jpg.
Я удаляю дублированный слайд и импортирую вновь созданный файл .jpg. Затем мне удалось изменить положение импортированного .jpg, в то время как я не мог сделать это с объектом .emf.
$slide2 = $presentation.slides.item(2) $slide2Dup = $slide2.duplicate() $shape2 = $slide2Dup.shapes.paste() $a= $shape2.export("Path\export.jpg", $ppShapeFormatJPG) $slide2Dup.delete() $imgPath = 'Path\export.jpg' $LinkToFile = $msoFalse $SaveWithDocument = $msoTrue $Left = 10 $Top = 10 $Width = 10 $Height = 10 $shape2 = $slide2.shapes.addPicture($imgPath, $LinkToFile, $SaveWithDocument,$Left, $Top, $Width, $Height)
В то же время я получаю папку, полную файла .jpg, соответствующую диаграмме excel, поэтому 1) как-то решается.