- ベストアンサー
エクセルをマクロを使用してパワーポイントへ
エクセルのいくつかのセルのデータをパワーポイントへマクロを使用して転記したいと考えています。 例> エクセルの A1:名前 B1:ふりがな C1:番号 この3つをパワーポイントの表紙と各スライドのフッターのあたりに転記したい。 条件として パワーポイントファイルはエクセルと同じディレクトリにある。 パワーポイントのページ数は、そP都度変わる。 このため、 パワーポイントファイルを相対パスで指定する。 パワーポイントのページ数を取得する。 表紙にデータを転記する 各スライドにデータを転記する。 こういった作業をエクセルのマクロで実現したいのです。 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは Sub test1() Dim a As String Dim p As String Dim f As Long Dim o As Object Dim pa As Object Dim s As Object Dim i As Long a = ThisWorkbook.Path & "\test.pptx" Set o = CreateObject("PowerPoint.Application") o.Visible = True Set pa = o.Presentations.Open(a) p = Range("A1") & "--" & Range("B1") & "--" & Range("C1") i = pa.Slides.Count For Each s In pa.Slides With s.HeadersFooters If s.Slideindex = 1 Then o.Presentations(1).Slides(1).Shapes.AddTextbox(msoTextOrientationHorizontal _ , 280, 250, 200, 50).TextFrame.TextRange.Text = p ElseIf s.Slideindex <> i Then With .Footer .Visible = True .Text = p End With End If End With Next pa.Save pa.Close o.Quit Set o = Nothing End Sub 「表紙のみ中央に配置」はテキストボックスとかになりますね。 位置は適当です。
その他の回答 (2)
- misatoanna
- ベストアンサー率58% (528/896)
補足してください。 >A1:C1のデータを‥‥ すべてのスライドに同じデータを表示させるのですか? どのような配置で表示させるのですか? >表紙と各スライドのフッターのあたりに転記 「表紙」と「各スライドのフッター」なのですか? 「表紙と各スライド」のフッターなのですか?
補足
すいません。分かずらかったですね。 表紙はスライド中央 他のスライドは下の方 最終ページは表記なし というふうに考えております。 特にフッターを使用してできればそれがいいですが、フッターで無くても同様の表記ができればそれでいいと考えております。 宜しくお願いします。
- ushi2015
- ベストアンサー率51% (241/468)
こんにちは Sub test() Dim a As String Dim p As String Dim f As Long Dim o As Object Dim pa As Object Dim s As Object a = ThisWorkbook.Path & "\test.pptx" Set o = CreateObject("PowerPoint.Application") o.Visible = True Set pa = o.Presentations.Open(a) p = Range("A1") & "--" & Range("B1") & "--" & Range("C1") If pa.HasTitleMaster Then With pa.TitleMaster.HeadersFooters With .Footer .Text = p .Visible = True End With End With End If With pa.SlideMaster.HeadersFooters With .Footer .Text = p .Visible = True End With End With For Each s In pa.Slides With s.HeadersFooters With .Footer .Visible = True .Text = p End With End With Next pa.Save pa.Close o.Quit Set o = Nothing End Sub こんな感じでしょうか?
補足
ありがとうございます。 試してみました。 ただ、表紙は、フッターではなく、スライドの中央に表記したいと考えております。 また、最終ページはフッターなしで、できるでしょうか? あるいは、 表紙のみ中央に配置 他のスライドは下の方に配置 最終ページはなし、 といった具合にできるでしょうか? 宜しくお願いします。
補足
ありがとうございました。 大変助かります。 ただ、フッターの文字の位置調整がわかりません。 また、後出しで申し訳ないのですが、 p = Range("A1") & "--" & Range("B1") & "--" & Range("C1") この部分を p1 = Range("B4") & ":" & Range("C4") p2 = Range("B5") & ":" & Range("C5") p3 = Range("B6") & ":" & Range("C6") としてフッターを ElseIf s.SlideIndex <> i Then With .Footer .Visible = True .Text = p1 & p2 & p3 としたところ、3行になりました。 フッターの文字のや行の位置調整やフォントサイズなどの指定はできるのでしょうか? 宜しくお願いします。