1
私はすでに内容があるプレゼンテーションスライドを1つ持っています。私の目標は、新しいスライドをPowerPointファイルに追加するのではなく、Excelから新しいものを同じスライドに貼り付けることです。私が使っている言語はVBAです。ExcelからPowerpointにセル範囲を貼り付けるには
は、ここに私のコードです:
Sub CreatePowerPoint()
'-------------------------------------------
'ADD A REFERENCE TO THE MICROSOFT POWERPOINT LIBRARY BY:
'1. Go to Tools in the VBA menu
'2. Click on Reference
'3. Scroll down to Microsoft PowerPoint X.0 Object Library, check the box, and press Okay
'-------------------------------------------
'FIRST WE DECLARE THE VARIABLES WE WILL BE USING
Dim newPowerPoint As PowerPoint.Application
Dim activeSlide As PowerPoint.Slide
'Dim tbl As ListObject
Dim rng As Range, row As Long
Dim sht As Worksheet
row = 1
'-------------------------------------------
'LOOK FOR EXISTING INSTANCE
On Error Resume Next
Set newPowerPoint = GetObject(, "PowerPoint.Application")
On Error GoTo 0
'-------------------------------------------
'LET'S CREATE A NEW POWERPOINT
If newPowerPoint Is Nothing Then
Set newPowerPoint = New PowerPoint.Application
End If
'-------------------------------------------
'MAKE A PRESENTATION IN POWERPOINT
If newPowerPoint.Presentations.Count = 0 Then
newPowerPoint.Presentations.Add
End If
'-------------------------------------------
'SHOW THE POWERPOINT
newPowerPoint.Visible = True
'-------------------------------------------
'LOOP THROUGH EACH RANGE DATA SET IN THE EXCEL WORKBOOK AND PASTE THEM INTO THE POWERPOINT
For Each sht In ThisWorkbook.Worksheets
'For Each tbl In sht.ListObjects
LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).row
Do Until row >= LastRow
For I = row To LastRow
If Cells(I, 1) = "|" Then
LastCol = ActiveSheet.Cells(row, Application.Columns.Count).End(xlToLeft).Column
Set rng = Range(Cells(row, 1), Cells(I - 1, LastCol))
'Note: xlUp, xlToLeft = Returns a Range object that represents the cell at the end of the region that contains the source range.
'Equivalent to pressing END+UP ARROW, END+DOWN ARROW, END+LEFT ARROW, or END+RIGHT ARROW. Read-only Range object.
'-------------------------------------------
'ADD A NEW SLIDE WHERE WE WILL PASTE THE TABLE
newPowerPoint.ActivePresentation.Slides.Add newPowerPoint.ActivePresentation.Slides.Count + 1, ppLayoutText
newPowerPoint.ActiveWindow.View.GotoSlide newPowerPoint.ActivePresentation.Slides.Count
Set activeSlide = newPowerPoint.ActivePresentation.Slides(newPowerPoint.ActivePresentation.Slides.Count)
'Note: ppLayoutText = the layout of the slide
'-------------------------------------------
'COPY THE TABLE AND PASTE IT INTO THE POWERPOINT AS DEFAULT (EDITABLE FORM IN PPT)
'tbl.Range.Copy
rng.Copy
activeSlide.Shapes.PasteSpecial(DataType:=ppPasteDefault).Select
'Note:ppPasteEnhancedMetafile/ppPasteOLEObject = if want to edit in Excel form
'-------------------------------------------
'ADJUST THE POSITIONING OF THE TABLE ON POWERPOINT SLIDE
With newPowerPoint.ActiveWindow.Selection.ShapeRange
.Left = 20
.Top = 125
.Width = 675
End With
activeSlide.Shapes(2).Width = 200
activeSlide.Shapes(2).Left = 505
row = I
Exit For
End If
'Next tbl
Next I
row = row + 1
Loop
Next sht
'-------------------------------------------
'CLEANUP
Set activeSlide = Nothing
Set newPowerPoint = Nothing
End Sub
代わりに新しいスライドを追加するので、私はすでにその中にいくつかのコンテンツを持っているアクティブなPowerPointスライドの内側に貼り付けしたいと思います。誰かが私を助けてくれる?前もって感謝します。
こんにちはMoosemanを参照され スライドは、問題が特定のテーブルで特定のスライドに貼り付けなければなりません。特定のテーブルを特定のスライドに参照するにはどうすればよいですか?何か方法はありますか? –
さて、私は、特定のスライドを定義する方法を示しました。特定のテーブルを定義するだけです。ブック( "Excelファイル名"。シート(シート名またはインデックス番号).table( 'テーブル名')。コピーそのようなもの。 – mooseman