パワーポイント 2010 for Mac を使用しています。
毎週作成する必要がある 100 枚のスライドのプレゼンテーションがあります。各スライドには同一のテンプレートがあります。各スライドの要素は、5 つのテキスト フィールドと 1 つの画像で構成され、各スライドは Excel テーブルのデータ列に対応しています。
この Excel ファイルの行をループしてプログラムでこれらのスライドを作成する方法のコード例または詳細なチュートリアルを教えてもらえますか?
パワーポイント 2010 for Mac を使用しています。
毎週作成する必要がある 100 枚のスライドのプレゼンテーションがあります。各スライドには同一のテンプレートがあります。各スライドの要素は、5 つのテキスト フィールドと 1 つの画像で構成され、各スライドは Excel テーブルのデータ列に対応しています。
この Excel ファイルの行をループしてプログラムでこれらのスライドを作成する方法のコード例または詳細なチュートリアルを教えてもらえますか?
これは間違いなく可能で、とても楽しいです:-)
私の最初の推奨事項は、マスター ビューを使用して、プレースホルダーとタイトルをすべて準備して、PowerPoint テンプレートを作成することです。次に、次の PowerPoint マクロを実行して、ページ上のすべての図形の名前とインデックス/ID を取得できるようにします。
Sub nameshapes()
Dim sld As Slide
Dim shp As Shape
Set sld = Application.ActivePresentation.Slides(1)
For Each shp In sld.Shapes
shp.TextEffect.Text = shp.name & " " & shp.ID
Next
End Sub
これは、テンプレート ページの各アイテムのインデックスと名前をシェイプ自体に配置する、簡単で汚いコードです。これらを覚えて、記録してください。これらは、どこに行きたいかの基準点です。ループなどの基本については説明しませんが、キー コード ピースについては説明します。
1) Excel から PowerPoint を開いて制御します。
Set ppt = CreateObject("PowerPoint.Application")
ppt.Visible = True
Set myPPT = ppt.Presentations.add
myPPT.ApplyTemplate ("Your template here.potx")
次に、必要なすべてのページを追加します (これは、アプリケーションと行数によって異なります。これを最初に行うか、プロセス中に行うかは、どのページをマップしたかによって異なります)。あなたのデータにデータを置く必要があります)
For x = 1 To NumberOfPages
myPPT.Slides.AddSlide x, myPPT.SlideMaster.CustomLayouts(2) '2 is the index of the template I wish to use (in master views, the index is the order they're in (starting from 1)
Next
各行で更新するページがわかっていると仮定しているので、次のようにします。
For Each dr In .rows 'I'm storing my data in a special collection, you will need to adapt this
Set currSlide = myPPT.Slides(dr.cell("OutputPage").Value) 'go to the right page
Sheets(dr.cell("SheetName").toString).Activate 'make sure the data you want is active
ActiveSheet.Range(Names(dr.cell("ChartID").Value)).CopyPicture 'copy the table as a picture, this is easiest for formatting in powerpoint, but you can do lots of things here
currSlide.Select
currSlide.Shapes("Content Placeholder " & dr.cell("Output Position").toString).Select 'the output position is the index from the first bit of code,
ppt.ActiveWindow.View.Paste
next
さて、あなたのアプリケーションは間違いなくこれとは異なりますが、基本的な必需品がすべて揃っていることを願っています。これが良い出発点になるはずです。