EXcel VBA:在PowerPoint中创建表格的EXcel宏

EXcel VBA:在PowerPoint中创建表格的EXcel宏,vba,excel,powerpoint,Vba,Excel,Powerpoint,我的要求是我有一个Excel,其中包含一些数据。我想从excel中选择一些数据并打开PowerPoint文件 在PowerPoint中创建表格并将数据填入表格中 现在我已经成功地从excel中收集数据,并通过excel VBA代码打开PowerPoint文件 用于从Excel打开PowerPoint的代码 Set objPPT = CreateObject("Powerpoint.application") objPPT.Visible = True Dim file A

我的要求是我有一个Excel,其中包含一些数据。我想从excel中选择一些数据并打开PowerPoint文件

在PowerPoint中创建表格并将数据填入表格中

现在我已经成功地从excel中收集数据,并通过excel VBA代码打开PowerPoint文件

用于从Excel打开PowerPoint的代码

    Set objPPT = CreateObject("Powerpoint.application")
    objPPT.Visible = True
    Dim file As String
    file = "C:\Heavyhitters_new.ppt"
    Set pptApp = CreateObject("PowerPoint.Application")
    Set pptPres = pptApp.Presentations.Open(file)
现在,我如何从Excel在PowerPoint中创建表格并填充数据

非常感谢及时的帮助

提前感谢,

这里是来自


此Excel VBA将所选范围从Excel导出到PowerPoint本机表格。它也适用于合并的单元格

Sub Export_Range()

    Dim pp As New PowerPoint.Application
    Dim ppt As PowerPoint.Presentation
    Dim sld As PowerPoint.Slide
    Dim shpTable As PowerPoint.Shape
    Dim i As Long, j As Long

    Dim rng As Excel.Range
    Dim sht As Excel.Worksheet

    Set rng = Selection

    pp.Visible = True
    If pp.Presentations.Count = 0 Then
        Set ppt = pp.Presentations.Add
    Else
        Set ppt = pp.ActivePresentation
    End If

    Set sld = ppt.Slides.Add(1, ppLayoutTitleOnly)
    Set shpTable = sld.Shapes.AddTable(rng.Rows.Count, rng.Columns.Count)
    For i = 1 To rng.Rows.Count
        For j = 1 To rng.Columns.Count
            shpTable.Table.Cell(i, j).Shape.TextFrame.TextRange.Text = _
                rng.Cells(i, j).Text
        Next
    Next

    For i = 1 To rng.Rows.Count
        For j = 1 To rng.Columns.Count
            If (rng.Cells(i, j).MergeArea.Cells.Count > 1) And _
                (rng.Cells(i, j).Text <> "") Then
                shpTable.Table.Cell(i, j).Merge _
                shpTable.Table.Cell(i + rng.Cells(i, j).MergeArea.Rows.Count - 1, _
                j + rng.Cells(i, j).MergeArea.Columns.Count - 1)
            End If
        Next
    Next

    sld.Shapes.Title.TextFrame.TextRange.Text = _
        rng.Worksheet.Name & " - " & rng.Address

End Sub
子导出_范围()
Dim pp作为新的PowerPoint.Application
将ppt变暗为PowerPoint。演示文稿
将sld设置为PowerPoint幻灯片
将表格设置为PowerPoint.Shape
我和我一样长,我和我一样长
尺寸为Excel.Range
以Excel.工作表的形式显示屏幕
设置rng=选择
pp.可见=真实
如果pp.Presentations.Count=0,则
设置ppt=pp.Presentations.Add
其他的
设置ppt=pp.ActivePresentation
如果结束
设置sld=ppt.Slides.Add(1,pplayouttitlonly)
Set shpTable=sld.Shapes.AddTable(rng.Rows.Count、rng.Columns.Count)
对于i=1到rng.Rows.Count
对于j=1到rng.Columns.Count
shpTable.Table.Cell(i,j).Shape.TextFrame.TextRange.Text=_
rng.单元格(i,j).文本
下一个
下一个
对于i=1到rng.Rows.Count
对于j=1到rng.Columns.Count
If(rng.Cells(i,j).MergeArea.Cells.Count>1)和_
(rng.Cells(i,j).Text“”)则
shpTable.Table.Cell(i,j).合并_
shpTable.Table.Cell(i+rng.Cells(i,j).MergeArea.Rows.Count-1_
j+rng.Cells(i,j).MergeArea.Columns.Count-1)
如果结束
下一个
下一个
sld.Shapes.Title.TextFrame.TextRange.Text=_
rng.Worksheet.Name&“-”和rng.Address
端接头

这在某种程度上也很有用。。。我已经完成了。。非常感谢你的帮助。
Sub Export_Range()

    Dim pp As New PowerPoint.Application
    Dim ppt As PowerPoint.Presentation
    Dim sld As PowerPoint.Slide
    Dim shpTable As PowerPoint.Shape
    Dim i As Long, j As Long

    Dim rng As Excel.Range
    Dim sht As Excel.Worksheet

    Set rng = Selection

    pp.Visible = True
    If pp.Presentations.Count = 0 Then
        Set ppt = pp.Presentations.Add
    Else
        Set ppt = pp.ActivePresentation
    End If

    Set sld = ppt.Slides.Add(1, ppLayoutTitleOnly)
    Set shpTable = sld.Shapes.AddTable(rng.Rows.Count, rng.Columns.Count)
    For i = 1 To rng.Rows.Count
        For j = 1 To rng.Columns.Count
            shpTable.Table.Cell(i, j).Shape.TextFrame.TextRange.Text = _
                rng.Cells(i, j).Text
        Next
    Next

    For i = 1 To rng.Rows.Count
        For j = 1 To rng.Columns.Count
            If (rng.Cells(i, j).MergeArea.Cells.Count > 1) And _
                (rng.Cells(i, j).Text <> "") Then
                shpTable.Table.Cell(i, j).Merge _
                shpTable.Table.Cell(i + rng.Cells(i, j).MergeArea.Rows.Count - 1, _
                j + rng.Cells(i, j).MergeArea.Columns.Count - 1)
            End If
        Next
    Next

    sld.Shapes.Title.TextFrame.TextRange.Text = _
        rng.Worksheet.Name & " - " & rng.Address

End Sub