VBAでExcelからPowerPointファイルを生成することはできますか?


Excelファイル(2003)のセル内の値を元にして、
PowerPointファイル(2003)を生成したいと考えています。

Excel VBA または PowerPoint VBA を使って、可能でしょうか?

可能ならば、以下の場合にどのようなプログラムになるか
コードの実例を挙げて、ご教示いただけないでしょうか。

・Excelファイル名: sause.xls
 ・シート名: Sheet1
  ・セルA1の値: "テスト文字列"
・PowerPointファイル名: output.ppt
 ・スライド1は空っぽ
 ・スライド2にテキストオブジェクトがあり、セルA1の値が設定されている

よろしくお願いします。

回答の条件
  • 1人3回まで
  • 13歳以上
  • 登録:2012/05/01 16:10:44
  • 終了:2012/05/02 11:26:12

ベストアンサー

id:taknt No.2

きゃづみぃ回答回数13539ベストアンサー獲得回数11982012/05/01 17:03:20

ポイント500pt

こちらは ファイルを生成します。

Sub Macro1()
Dim objPpt As Object  '実行時バインディングなのでPowerPointの参照設定は不要
Dim objFile As Object

strPPTFullPath = "C:\test\output.ppt"
Set objPpt = CreateObject("PowerPoint.Application")

objPpt.Visible = True

objPpt.Presentations.Add
Set objFile = objPpt.ActivePresentation
Set pslide1 = objFile.Slides.Add(1, 12)
Set pslide2 = objFile.Slides.Add(1, 12)
objPpt.Presentations(1).Slides(2).Shapes.AddTextbox(msoTextOrientationHorizontal _
        , 100, 100, 200, 50).TextFrame.TextRange.Text = Range("A1")
        
objFile.SaveAs strPPTFullPath
objFile.Close

objPpt.Quit

End Sub
id:jetta_swingin

まさに、希望通りの挙動です!
ありがとうございました!

2012/05/02 11:24:57

その他の回答(1件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982012/05/01 16:40:50

ポイント100pt
Sub Macro1()
Dim objPpt As Object  '実行時バインディングなのでPowerPointの参照設定は不要
Dim objFile As Object

strPPTFullPath = "C:\test\output.ppt"
Set objPpt = CreateObject("PowerPoint.Application")

objPpt.Visible = True

objPpt.Presentations.Open Filename:=strPPTFullPath, ReadOnly:=msoFalse
Set objFile = objPpt.ActivePresentation


objFile.Slides(2).Shapes(1).TextFrame.TextRange = Range("A1")
objFile.Save
objFile.Close

objPpt.Quit

End Sub



objFile.Slides(2).Shapes(1).TextFrame.TextRange = Range("A1")

ここの箇所ですが
Slides(2)は 2番目のスライド
Shapes(1)は1番目のテキスト(などのような類のもの)を 表しています。

うまくいかない場合は、ここの値を調整してみてください。

あと
strPPTFullPath = "C:\test\output.ppt"
は パワーポイントのファイルのフルパスを指定してください。

id:taknt

あと このプログラムでは 既存のPowerPointファイルのテキストに セルA1の値をセットするだけのことを やっています。

もし、PowerPointのファイル自体、生成するならば また別ですが・・・。

2012/05/01 16:43:03
id:jetta_swingin

はい、PowerPointのファイル自体を新規生成するのが目的でした。
書き方が曖昧ですいませんでした。

2012/05/02 11:23:16
id:taknt No.2

きゃづみぃ回答回数13539ベストアンサー獲得回数11982012/05/01 17:03:20ここでベストアンサー

ポイント500pt

こちらは ファイルを生成します。

Sub Macro1()
Dim objPpt As Object  '実行時バインディングなのでPowerPointの参照設定は不要
Dim objFile As Object

strPPTFullPath = "C:\test\output.ppt"
Set objPpt = CreateObject("PowerPoint.Application")

objPpt.Visible = True

objPpt.Presentations.Add
Set objFile = objPpt.ActivePresentation
Set pslide1 = objFile.Slides.Add(1, 12)
Set pslide2 = objFile.Slides.Add(1, 12)
objPpt.Presentations(1).Slides(2).Shapes.AddTextbox(msoTextOrientationHorizontal _
        , 100, 100, 200, 50).TextFrame.TextRange.Text = Range("A1")
        
objFile.SaveAs strPPTFullPath
objFile.Close

objPpt.Quit

End Sub
id:jetta_swingin

まさに、希望通りの挙動です!
ありがとうございました!

2012/05/02 11:24:57
  • id:kajironpu
    横から失礼します。
    EXCELの列に、文字が入っていて(100行くらい)、
    これらを1つ1つ、パワーポイントに連続で貼り付ける方法を
    教えてください。宜しくお願いします

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません