VBA кодирования Excel в PowerPoint - PullRequest
0 голосов
/ 17 декабря 2018

Проблемы высокого уровня: я хочу отправить конкретные данные из пользовательской формы в строку на одном листе в Excel.Затем я хочу отправить эту строку в файл PowerPoint.

У меня есть пользовательская форма, которая будет правильно отправлять данные в строки Excel.

Я отформатировал презентацию powerpoint, но не представляю, как этот формат называется в терминах vba.

Каждый ряд данных должен будет создавать новый слайд с одинаковым форматированием каждый раз.

Пользовательской форме нужно будет отправить 2 изображения в виде фигур в powerpoint.И около 7 ячеек «строковых» данных для каждой строки.

1 Ответ

0 голосов
/ 17 декабря 2018

Вы задали два вопроса:

  1. Как перенести данные из пользовательской формы на лист,
  2. Как перенести данные с листа в Powerpoint.

Я ответил на второй вопрос.


  • В Powerpoint добавьте таблицу к слайду.

    • Выберите таблицу и нажмите Selection Pane на ленте Layout.
      Откроется окно Selection and Visibility.
      Отсюда вы можете переименовать таблицу, которая изначально будет иметь имя Content Placehold x
      • Я вставил таблицу в Slide 2 и назвал ее MyTable.
    • Сохраните презентацию и закройте Powerpoint.
  • Создать новую книгу в Excel.

    • Добавить данные в строку.
      Я вставил значения в диапазон A2:E2 чтобы соответствовать пяти столбцам в таблице Powerpoint, которую я создал.
    • Добавить новый модуль кода в файл Excel.
    • Этот код создаст экземпляр Powerpoint из Excel:

Private Function CreatePPT(Optional bVisible As Boolean = True) As Object

    Dim oTmpPPT As Object

    On Error Resume Next
    Set oTmpPPT = GetObject(, "Powerpoint.Application")

    If Err.Number <> 0 Then
        Err.Clear
        On Error GoTo ERROR_HANDLER
        Set oTmpPPT = CreateObject("Powerpoint.Application")
    End If

    oTmpPPT.Visible = bVisible
    Set CreatePPT = oTmpPPT

    On Error GoTo 0
    Exit Function

ERROR_HANDLER:
    Select Case Err.Number

        Case Else
            MsgBox "Error " & Err.Number & vbCr & _
                " (" & Err.Description & ") in procedure CreatePPT."
            Err.Clear
    End Select

End Function   

  • ThisКод установит ссылку на Powerpoint (откроет ее при необходимости), откроет презентацию и перенесет данные из Sheet1!A2:E2 в таблицу в Powerpoint:

Public Sub Main()

    Dim oPPT As Object
    Dim oPresentation As Object
    Dim oSlide As Object
    Dim x As Long
    Dim rCell As Object

    Set oPPT = CreatePPT 'Get instance of PPT.

    'Powerpoint is in same folder as Excel -
    Set oPresentation = oPPT.Presentations.Open(ThisWorkbook.Path & "\My PPTX.pptx")
    Set oSlide = oPresentation.Slides(2)

    With oSlide
        'Add text to the title shape.
        .Shapes("Title 1").TextFrame.TextRange.Text = "My Example Table"

        'Populate each cell in row 2 of the table.
        For Each rCell In .Shapes("MyTable").Table.Rows(2).Cells
            x = x + 1
            rCell.Shape.TextFrame.TextRange.Text = ThisWorkbook.Worksheets("Sheet1").Cells(2, x)
        Next rCell
    End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...