• ベストアンサー

エクセルをマクロを使用してパワーポイントへ

エクセルのいくつかのセルのデータをパワーポイントへマクロを使用して転記したいと考えています。 例> エクセルの A1:名前 B1:ふりがな C1:番号 この3つをパワーポイントの表紙と各スライドのフッターのあたりに転記したい。 条件として パワーポイントファイルはエクセルと同じディレクトリにある。 パワーポイントのページ数は、そP都度変わる。 このため、 パワーポイントファイルを相対パスで指定する。 パワーポイントのページ数を取得する。 表紙にデータを転記する 各スライドにデータを転記する。 こういった作業をエクセルのマクロで実現したいのです。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.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 「表紙のみ中央に配置」はテキストボックスとかになりますね。 位置は適当です。

manolozq
質問者

補足

ありがとうございました。 大変助かります。 ただ、フッターの文字の位置調整がわかりません。 また、後出しで申し訳ないのですが、 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行になりました。 フッターの文字のや行の位置調整やフォントサイズなどの指定はできるのでしょうか? 宜しくお願いします。

その他の回答 (2)

回答No.2

補足してください。 >A1:C1のデータを‥‥   すべてのスライドに同じデータを表示させるのですか?   どのような配置で表示させるのですか? >表紙と各スライドのフッターのあたりに転記   「表紙」と「各スライドのフッター」なのですか?   「表紙と各スライド」のフッターなのですか?

manolozq
質問者

補足

すいません。分かずらかったですね。 表紙はスライド中央 他のスライドは下の方 最終ページは表記なし というふうに考えております。 特にフッターを使用してできればそれがいいですが、フッターで無くても同様の表記ができればそれでいいと考えております。 宜しくお願いします。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは 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 こんな感じでしょうか?

manolozq
質問者

補足

ありがとうございます。 試してみました。 ただ、表紙は、フッターではなく、スライドの中央に表記したいと考えております。 また、最終ページはフッターなしで、できるでしょうか? あるいは、 表紙のみ中央に配置 他のスライドは下の方に配置 最終ページはなし、 といった具合にできるでしょうか? 宜しくお願いします。

関連するQ&A