Скопируйте данные Excel в точную ячейку слайда PowerPoint, используя VBA - PullRequest
0 голосов
/ 16 мая 2018

Итак, у меня есть рабочий макрос, который копирует строки Excel в виде изображений и вставляет каждое изображение в новый слайд PowerPoint.

Поэтому моя задача сейчас состоит в том, чтобы брать отдельные данные из точной ячейки (например, A1, D1, H1, X1) и вставьте его в предопределенный макет слайда PowerPoint.Таким образом, каждая ячейка перемещается в соответствующее место в макете слайда.Я думаю, что нужно немного модифицировать, но я понятия не имею, что делать.Я действительно совсем новичок в VBA, поэтому всяческая помощь приветствуется.

Спасибо за ваше время и хорошего дня!:)

Sub CopyRangeToPresentation()
'Variables
  Dim PP As PowerPoint.Application
  Dim PPpres As PowerPoint.Presentation
  Dim PPslide As PowerPoint.Slide
  Dim SlideTitle As String
  Dim lRow As Long
  Dim i As Integer
'Fider
  lRow = Cells.Find(What:="*", _
                    After:=Range("A1"), _
                    LookAt:=xlPart, _
                    LookIn:=xlFormulas, _
                    SearchOrder:=xlByRows, _
                    SearchDirection:=xlPrevious, _
                    MatchCase:=False).Row
'New presentation
Set PP = New PowerPoint.Application
  Set PPpres = PP.Presentations.Add
  Set PP = GetObject(, "PowerPoint.Application")
  PP.Visible = 1

For i = 1 To lRow
'New slide
      Set PPslide = PPpres.Slides.Add(i, ppLayoutBlank)
      PP.ActiveWindow.ViewType = ppViewSlide
      PPpres.PageSetup.SlideSize = ppSlideSizeOnScreen
      PP.ActiveWindow.WindowState = ppWindowMaximized
      PPslide.Select
'Copy
      Sheets("dataflows").Range(Cells(i, 1), Cells(i, 24)).CopyPicture _
      Appearance:=xlScreen, Format:=xlPicture
'Paste
      PPslide.Shapes.Paste.Select
      PP.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True
      PP.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True
'Title
Next i

'Memory
      PP.Activate
      Set PPslide = Nothing
      Set PPpres = Nothing
      Set PP = Nothing

End Sub

1 Ответ

0 голосов
/ 16 мая 2018

Вы можете создать собственный макет с текстовыми полями в местах, которые вы хотите ячейки.Текст внутри текстовых полей может быть использован для их идентификации (например, «mybox1»).Вы можете Google, как добавить новый слайд из пользовательского макета.Затем выполните поиск по фигурам и вставьте ячейки в те же места.Как то так:

'Paste
  For Each PPshape In PPslide.Shapes
    If PPshape.HasTextFrame Then
        If PPshape.TextFrame.HasText Then
            If PPshape.TextFrame.TextRange.Text = "mybox1" Then
                PPslide.Shapes.Paste.Select
                PP.ActiveWindow.Selection.ShapeRange.Left = PPshape.Left
                PP.ActiveWindow.Selection.ShapeRange.Top = PPshape.Top
                PPshape.Delete
            End If
        End If
    End If
Next PPshape
...