こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

エクセルのいくつかのセルのデータをパワーポイントへマクロを使用して転記したいと考えています。

例>
エクセルの
A1:名前
B1:ふりがな
C1:番号
この3つをパワーポイントの表紙と各スライドのフッターのあたりに転記したい。

条件として
パワーポイントファイルはエクセルと同じディレクトリにある。
パワーポイントのページ数は、そP都度変わる。

このため、
パワーポイントファイルを相対パスで指定する。
パワーポイントのページ数を取得する。
表紙にデータを転記する
各スライドにデータを転記する。

こういった作業をエクセルのマクロで実現したいのです。
宜しくお願いします。

投稿日時 - 2016-04-22 03:33:33

QNo.9162097

困ってます

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

こんにちは
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
「表紙のみ中央に配置」はテキストボックスとかになりますね。
位置は適当です。

投稿日時 - 2016-04-22 14:56:36

補足

ありがとうございました。
大変助かります。

ただ、フッターの文字の位置調整がわかりません。
また、後出しで申し訳ないのですが、
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行になりました。

フッターの文字のや行の位置調整やフォントサイズなどの指定はできるのでしょうか?

宜しくお願いします。

投稿日時 - 2016-04-22 20:08:20

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

補足してください。

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

投稿日時 - 2016-04-22 10:19:54

補足

すいません。分かずらかったですね。

表紙はスライド中央
他のスライドは下の方
最終ページは表記なし

というふうに考えております。

特にフッターを使用してできればそれがいいですが、フッターで無くても同様の表記ができればそれでいいと考えております。

宜しくお願いします。

投稿日時 - 2016-04-22 11:04:13

ANo.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
こんな感じでしょうか?

投稿日時 - 2016-04-22 08:57:06

補足

ありがとうございます。
試してみました。

ただ、表紙は、フッターではなく、スライドの中央に表記したいと考えております。

また、最終ページはフッターなしで、できるでしょうか?

あるいは、
表紙のみ中央に配置
他のスライドは下の方に配置
最終ページはなし、

といった具合にできるでしょうか?

宜しくお願いします。

投稿日時 - 2016-04-22 10:59:56

あなたにオススメの質問