高级问题:我想将特定数据从用户表单发送到Excel中一个工作表中的一行中。然后我想将该行发送到PowerPoint文件中。
我有一个用户表单,可以将数据正确发送到 excel 行中。
我已经格式化了Powerpoint演示文稿,但我不知道该格式在vba术语中被称为什么。
每行数据每次都需要创建一张格式相同的新幻灯片。
用户窗体需要将 2 张图片发送到 PowerPoint 中的形状中。每行大约有 7 个"字符串"数据单元格。
你问了两个问题:
- 如何将数据从用户表单传输到工作表,
- 如何将数据从工作表传输到Powerpoint。
我已经回答了第二个问题。
-
在
Powerpoint
向幻灯片中添加表格。- 选择表,然后单击
Layout
功能区中的Selection Pane
。
这将打开Selection and Visibility
窗口。
从这里您可以重命名最初将命名为Content Placehold x
- 我将表插入
Slide 2
并将其命名为MyTable
。
- 我将表插入
- 保存演示文稿并关闭
Powerpoint
。
- 选择表,然后单击
-
在
Excel
中创建新工作簿。- 向行中添加数据。
我在范围A2:E2
中插入了值,以匹配我创建的Powerpoint
表中的五列。 - 将新的代码模块添加到
Excel
文件中。 - 此代码将从
Excel
中创建Powerpoint
的实例:
- 向行中添加数据。
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
- 此代码将设置对
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