#excel #vba
#excel #vba
Вопрос:
Благодаря BigBen — приведенный ниже код является исправленным примером, который показывает, как очистить слайды в существующем powerpoint, а затем скопировать и вставить диапазон из Excel в powerpoint в виде рисунка. Первоначальная ошибка заключалась в том, что ячейки не были определены, затем работа с линией для определения формы в powerpoint. Код должен работать.
Option Explicit
Sub ExportToPPT()
Dim ppApp As PowerPoint.Application
Set ppApp = New PowerPoint.Application
Dim ppFileName As String
ppFileName = "C:UsersDesktopFinancial Summary.pptx"
Dim ppPres As PowerPoint.Presentation
Set ppPres = ppApp.Presentations.Open(filename:=ppFileName)
Dim ppSlide As PowerPoint.Slide
Dim i As Integer
For i = 2 To 9
Set ppSlide = ppPres.Slides(i)
Dim j As Integer
For j = ppSlide.Shapes.Count To 1 Step -1
If ppSlide.Shapes(j).Type = msoPicture Then
ppSlide.Shapes(j).Delete
End If
Next j
Next i
'preparation of the export
Dim lastrow As Long
Dim lRow As Long
Dim lCol As Long
Workbooks("A.xlsm").Activate
Sheets("Graph Data").Select
Range("E4").Value = "8"
Application.Calculate
`Set Sel = Selection
Set source = ActiveWorkbook.Sheets("waterfall").Range("B1")
ActiveWorkbook.Sheets("waterfall").Range("D1:AE40").Copy
Set ppSlide = ppPres.Slides(9)
ppSlide.Shapes.PasteSpecial ppPasteBitmap
End Sub
Комментарии:
1. переменная «cell» является переменной диапазона, поэтому вы можете [Затемнить ячейку как диапазон] или [Затемнить ячейку как вариант]
2. Спасибо @KacireeSoftware — однако это привело к ошибке 1004, действие не будет работать с множественными выборками в следующей строке
Union(Range("D1:AE" amp; lRow), Range(cells(1, cells.Column), cells(lRow, cells.Column))).CopyPicture
3. Позвольте мне подключить ваш код и запустить его на моем компьютере. Я вернусь
4. Похоже, что
Range.CopyPicture
не может использоваться сUnion
несколькими вариантами выбора — возможно, вам потребуется обходной путь.5. Я понимаю вашу точку зрения — есть ли альтернатива в коде, которая могла бы напрямую выбирать диапазон из «D1: AE40» и избегать объединения?