エクセルからマクロでパワーポイントを開く方法

このQ&Aのポイント
  • エクセルでUserFormに配置したボタンをクリックするとパワーポイントスライドショーが開始される方法について教えてください。
  • エクセルとパワーポイントのバージョンは2003です。
  • マクロでパワーポイントを開く際の指定方法について試行錯誤していますが、エラーが発生しています。解決方法をご教示ください。
回答を見る
  • ベストアンサー

エクセルからマクロでパワーポイントを開きたい。

エクセルでUserFormに配置したボタンをクリックすると"AAA.pps"という名のパワーポイントスライドショーが始まる、としたい。 次の形でパワーポイントを開くところまでは参考書で見つけたが その先の名前の指定方法がわかりません。ご教示乞う。 エクセル、パワーポイントともに2003。 Private Sub CommandButton1_Click() Application.ActivateMicrosoftApp xlMicrosoftPowerPoint End Sub 試行錯誤でマクロの記録で取得した次のコードでは頭の「Presentations」で「変数が定義されていません」と断られました。 sub aaaaa() Presentations.Open FileName:="C:\Documents and Settings\user\My Documents\AAA.pps", ReadOnly:=msoFalse With ActivePresentation.SlideShowSettings .ShowType = ppShowTypeKiosk .LoopUntilStopped = msoTrue .ShowWithNarration = msoTrue .ShowWithAnimation = msoTrue .RangeType = ppShowAll .AdvanceMode = ppSlideShowUseSlideTimings .PointerColor.SchemeColor = ppForeground .Run End With End Sub

  • ksrnt
  • お礼率82% (14/17)

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 >具体的にどのように書けばいいのかわかりません。 私は、パワーポイントは持っていませんが、このようにすればよいと思っています。 sub aaaaaR() Dim pptApp As Object Set pptApp = CreateObject("PowerPoint.Application") With pptApp .Presentations.Open FileName:="C:\Documents and Settings\user\My Documents\AAA.pps", ReadOnly:=msoFalse   With .ActivePresentation.SlideShowSettings     .ShowType = ppShowTypeKiosk     .LoopUntilStopped = msoTrue     .ShowWithNarration = msoTrue     .ShowWithAnimation = msoTrue     .RangeType = ppShowAll     .AdvanceMode = ppSlideShowUseSlideTimings     .PointerColor.SchemeColor = ppForeground     .Run   End With End With End Sub

ksrnt
質問者

お礼

ありがとうございました。 ご教示いただいたもので実行したところ「Presentations.Open:無効な要求です PowerPoint のフレームウインドウは存在しません」とのエラーになりました。 そこで頭に Application.ActivateMicrosoftApp xlMicrosoftPowerPoint を加えましたところ指定のスライドショーが始まるようにできました。 但し、いったん何もないパワーポイントが開き、おもむろにスライドショーを開始するという形のためあまり格好よくありません。 蛇足ながらWithの中の RangeType PointerColor.SchemeColor は「エミュレーション値が無効です」とかでエラーになるため削除しました。 初心者で訳も分からずやっておりますが、どうぞ今後ともよろしくお願いいたします。 (お礼のポイントのつけ方もわかりません。ご勘弁ください。)

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 >Presentations これは、パワーポイントのオブジェクトです。だから、Excelの親オブジェクトとは違いますから、オートメーション・オブジェクトを作ってあげないといけないのではありませんか? たとえば、 Set pptApp = CreateObject("PowerPoint.Application") または、 Set pptApp = GetObject(,"PowerPoint.Application") もしくは、参照設定で、Microsoft PowerPoint 11.0 Object Library  で、指定してもよいです。この場合も、pptのApplicationオブジェクトは、作ってください。 そして、 pptApp.Presentations.Open としてあげればよいと思います。ただし、そのふたつの内のGetObject は、ファイル名を入れられるのですが、親オブジェクト(Application)は、そこから取り出さないといけないから、面倒なので、親オブジェクトを指定したほうがよいと思います。なお、GetObject で、Applicationを呼び出す場合は、すでに立ち上がっていないと、エラーになります。ファイルを呼び出す場合は、エラーにならないはずです。

ksrnt
質問者

お礼

早速ありがとうございます。 せっかくご回答いただきましたが、全くの初心者のため内容を理解できませんでした。 具体的にどのように書けばいいのかわかりません。 「pptApp」の定義の仕方すらわからないのです。 申し訳ありません。 もう少し修行してから出直します。

関連するQ&A

  • PowerPointスライドショーのマクロ

    Office XPのPowerPointのマクロで2つのスライドショーを制御したいと考えています。 <想定している動作> 1)スライドショーAはエンドレスで流れている 2)スライドショーA内にあるリンクボタンを押すと、スライドショーBが流れ始める(マクロを実行) 3)スライドショーBは1回流れるとスライドショーAに切り替わる 4)スライドショーAがエンドレスで流れ始める マクロを途中まで作成したのですが、4)で、スライドショーAがリンクボタンを押した状態のまま固まってします。 ソースは以下です。 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub slide()   PowerPoint.Presentations.Open ("C:\スライドB.ppt") With     ActivePresentation.Slides.Range.SlideShowTransition .AdvanceOnClick = msoFalse .AdvanceOnTime = msoTrue       '表示秒数  .AdvanceTime = 30000 End With With ActivePresentation.SlideShowSettings .ShowType = ppShowTypeSpeaker .LoopUntilStopped = msoFalse '繰り返し上映はしない .ShowWithNarration = msoTrue .ShowWithAnimation = msoTrue .RangeType = ppShowAll .AdvanceMode = ppSlideShowUseSlideTimings .PointerColor.SchemeColor = ppForeground .Run End With   Sleep (1000) SlideShowWindows(Index:=1).View.Next Sleep (1000) SlideShowWindows(Index:=1).View.Next Sleep (1000) SlideShowWindows(Index:=1).View.Exit Sleep (1000) ActivePresentation.Close PowerPoint.ActiveWindow.Activate End Sub どなたかお分かりになる方いらっしゃいますか? 上のソースをベースにしなくても良いので、ぜひアドバイスお願いします!

  • パワーポイント オブジェクトへ複数の動作設定を実行させたい

    複数のスライド(フォルダの階層アリ)をリンクして資料を作成しています。 しかし、その資料を閲覧していると、たくさんのパワーポイントファイルが開いたままになり、それの解消策を考えています。 単純にまず2つのファイルの例で考えてみます。 1.Aスライド → Bスライドへ ハイパーリンクで飛びます。 2.Bスライドの最後のページにAスライドへ戻るリンクボタンが あります。 このBスライドのボタンにBスライドの終了と、Aスライドへのリンクを登録したいのです。 通常パワーポイントの「オブジェクトの動作設定」では、1つのことしか選べません。 ですので、マクロでやってみようと思いました。 しかし記録マクロの知識しかなく、2回に分けて記録したマクロを いろいろ編集してみましたが、今度は何も動かなくなります。 最後の黒い画面までいけば終了するのですが、そうでなくリンクして いければと思っています。 マクロで可能でしょうか?他にアイデアなどありましたら、ご指導 アドバイスをどうぞよろしくお願いします。 office2003 winXP HE 資料は最終的にプレゼンテーションパックにてCDにします。 記録マクロ1 Sub 終了() ActiveWindow.Selection.SlideRange.Shapes("AutoShape 26").Select With ActiveWindow.Selection.ShapeRange.ActionSettings(ppMouseClick) ActivePresentation.Close .SoundEffect.Type = ppSoundNone .AnimateAction = msoTrue End With With ActiveWindow.Selection.ShapeRange.ActionSettings(ppMouseOver) .Action = ppActionNone .SoundEffect.Type = ppSoundNone .AnimateAction = msoFalse End With End Sub 記録マクロ2 Sub リンク2() ActiveWindow.Selection.SlideRange.Shapes("AutoShape 26").Select With ActiveWindow.Selection.ShapeRange.ActionSettings(ppMouseClick) .Hyperlink.Address = "D:\スライドA.pps" .SoundEffect.Type = ppSoundNone .AnimateAction = msoTrue End With With ActiveWindow.Selection.ShapeRange.ActionSettings(ppMouseOver) .Action = ppActionNone .SoundEffect.Type = ppSoundNone .AnimateAction = msoFalse End With End Sub

  • パワーポイントの一括置換:複数の単語をエクセルリストから読み込む

    はじめまして、トフィーです。 色々と皆様の置換方法や、パワーポイントの操作、エクセルの操作を参考にしてパワーポイントの一括置換プログラムを作成しようとしていますが、 下記のコードですと、一括置換が出来ますが10単語を一括置換するだけで約10分掛かります。 何か、もっと早く置換が出来るプログラミングは出来ないのでしょうか? (エクセルのマクロから書きました。) 宜しくお願い致します。 Private Sub run_click() translate '下記のコードから置換 End Sub Private Sub translate() c = 0 myFLD = loc.Text ' 複数のパワーポイントを同じフォルダーで探し、一つずつ開きます Set myApp = CreateObject("PowerPoint.Application") myApp.Visible = True With myApp.FileSearch .LookIn = myFLD .FileName = "*.ppt" If .Execute > 0 Then For Each myF In .FoundFiles With myApp.Presentations.Open(myF) 'エクセルから単語読み込み 列1の単語を列2の単語で置換 On Error Resume Next For c = 0 To 10 myWD1 = Range("B" & c + 3) myWD2 = Range("C" & c + 3) '置換開始 For Each myS In myApp.ActivePresentation.Slides For Each mySP In myS.Shapes mySP.TextFrame.TextRange _ = Replace(mySP.TextFrame.TextRange, myWD1, myWD2) Next Next Next c .Save .Close 'パワーポイントを閉じる End With Next End If End With myApp.Quit Set myApp = Nothing MsgBox "END" End Sub

  • エクセルから表をパワーポイントへ貼り付けたときの、位置調整がうまくいきません

    エクセルから表をパワーポイントへ貼り付けたときの、位置調整がうまくいきません。宜しくお願いします。 -------------------- sub test1() Dim pptApp As Object Dim pptPre As Object Dim tempFileName As String Dim macrofile As String 'エクセルの貼り付け元のファイル名 Dim sht As String 'エクセルの貼り付け元のシート名 Dim page As Integer 'パワーポイントへの貼り付けたいページ Dim picPos_yoko As Long 'パワーポイントへの貼り付け横位置 Dim picPos_tate As Long 'パワーポイントへの貼り付け縦位置 macrofile = "sample001.xls" sht = "sheet1" tempFileName = ThisWorkbook.Path & Application.PathSeparator _ & macrofile Set pptApp = CreateObject("powerPoint.Application") With pptApp .Visible = True Set pptPre = .Presentations.Open(tempFileName) End With Workbooks(macrofile).Worksheets(sht).Activate Range("A1").CurrentRegion.Copy '表のコピー With pptPre.Slides(page) .Shapes.Paste.Name = "hyou1" With .Shapes("hyou1") .Top = picPos_yoko .Left = picPos_tate End With End With End Sub ------------------------ .Shapes.Paste.Name = "pic1" ↑この行で名前をつけたかったがうまく名前がついていない。  貼り付けた表の名前をパワーポイントのマクロの記録で確認したところ "Group 288"と名前がついていた With .Shapes("hyou1") ↑当然この行で"hyou1"は見つからないというエラーが出てしまう。 表をエクセルからコピーして、パワーポイントへ位置を指定して張り付けるかもしくは貼り付けた後に移動ができるかを実現したい。 何かいい方法はありませんか?パワーポイントへエクセルからグラフを貼り付けた場合はうまくいきました。 また。パワーポイントの表の名前のつけ方には規則性があるのでしょうか。規則性があれば、それに則ってコードをかけるのですが・・・。

  • パワーポイントVBAでグラフのサイズ・位置を統一

    パワーポイントVBAに貼付けた複数のグラフサイズを統一したいと思っています。 1~20枚目のスライドに、それぞれ2つのグラフが貼付けてあります。 全てのグラフサイズ・位置を統一したいと思い、以下の様なVBAを書いてみました。 ---------- Sub 表サイズの統一() Dim myTop1, myLft1, myHgt1, myWdt1, cnt, i, myTop2, myLft2, myHgt2, myWdt2 With ActivePresentation.Slides(1).Shapes(1) myTop1 = .Top myLft1 = .Left myHgt1 = .Height myWdt1 = .Width End With With ActivePresentation.Slides(1).Shapes(2) myTop2 = .Top myLft2 = .Left myHgt2 = .Height myWdt2 = .Width End With cnt = ActivePresentation.Slides.Count For i = 2 To cnt With ActivePresentation.Slides(i).Shapes(1) .Top = myTop1 .Left = myLft1 .Height = myHgt1 .Width = myWdt1 End With Next For i = 2 To cnt With ActivePresentation.Slides(i).Shapes(2) .Top = myTop2 .Left = myLft2 .Height = myHgt2 .Width = myWdt2 End With Next End Sub ---------- 各スライドにある1つ目のグラフのサイズは統一出来たのですが、2枚目のグラフは何の変化もおきません。 どこが悪いのか、どなたかご教示頂ければ幸いです。 どうぞよろしくお願い致します。

  • Excelの罫線に関するマクロ

    Excelの罫線に関するマクロ 罫線を引き、それを赤くするマクロを作ったのですが、赤罫線の下にもうひとつ罫線が表示されてしまいます。どこを削除すればよいのでしょうか。 ご教示お願いいたします。 Sub 罫線() Dim T1 As Single, L1 As Single Dim T2 As Single, L2 As Single Dim myShp As Shape With Range("c15") T1 = .Top L1 = .Left End With With Range("d14") T2 = .Offset(1, 1).Top L2 = .Offset(1, 1).Left End With Set myShp = ActiveSheet.Shapes.AddLine(L1, T1, L2, T2) ActiveSheet.Shapes.AddLine(L1, T1, L2, T2).Select With Selection.ShapeRange.Line .Visible = msoTrue .Style = msoLineSolid .Weight = 5# .ForeColor.SchemeColor = 10 End With End Sub よろしくお願いします。

  • エクセルのマクロについて

    OS:XP Excel:2007 お世話になります。 マクロ初心者ですが宜しくお願いします。 エクセルにワードの文字を挿入するマクロを組んでみたのですがセルのサイズの取得方法が解りません。 挿入したオブジェクトのサイズを数値にて指定するところまでは出来たのですが、選択されているセルのサイズに合わせる為にはどうしたら良いでしょうか? 宜しくお願いします。 Sub 起動コピー() Call word起動 Call wordコピー Call 形式を選択して貼付 Call セルに合わせる End Sub Sub word起動() Set wd = CreateObject("word.Application") wd.Visible = True wd.Documents.Open Filename:= _ "C:\Documents and Settings\aaa.docx" End Sub Sub wordコピー() Dim wdApp As Word.Application Set wdApp = GetObject(, "word.application") wdApp.Run "copy" wdApp.quit End Sub Sub 形式を選択して貼付() ActiveSheet.PasteSpecial Format:="Microsoft Office Word 文 書 オブジェクト", Link:= _ False, DisplayAsIcon:=False End Sub Sub セルに合わせる() Selection.ShapeRange.ScaleHeight 1.08, msoFalse, msoScaleFr omTopLeft Selection.ShapeRange.ScaleWidth 0.93, msoFalse, msoScaleFro mTopLeft End Sub

  • エクセルのマクロでパワーポイントについて

    エクセルでマクロを使用してパワーポイントを開くマクロについて質問です。 下記ののようなマクロを実行すると、目的のファイルは開くのですが 最小化で開かれてしまいアクティブになりません。(タスクバーのところで光っているだけ) このマクロ組んだPCで実行するとスライドショーが開かれるのですが 他のPCからこのマクロが組んであるエクセルを開いて実行すると上記のような 状態になってしまいます。 どのようにすれば、どのPCでもスライドショーから始まるのか教えて下さい。 Sub コール() Set objPpt = GetObject("V:\テスト\コール_20170711.pptx") '' スライドショー実行 objPpt.SlideShowSettings.Run End Sub

  • エクセルマクロ

    OS:WINDOWS7 SOFT:EXCELL 2007 PC:VAIO VGN-FW73JGB です。マクロで図形入り文字を入れると、文字の右側が切れます。中央に配置するように設定すれば良いですが、その都度変更する必要があるので、教えて頂きたいです。よろしくお願いします。 If CheckBox5 = True Then Set sp = ActiveSheet.Shapes.AddTextbox(msoTextOrientationVertical, 290, 212.5, 20, 45) With sp .TextFrame.Characters.Text = "延 長" sp.Select Selection.ShapeRange.Fill.Visible = msoFalse With sp With .Line .Weight = xlThin .ForeColor.SchemeColor = 8 End With End With End With End If

  • C#からパワーポイントを表示

    C#でパワーポイントの資料を立ち上げて表示したいと思っていますが、 うまくいきません。 どうかアドバイスをよろしくお願いします。 使用している環境は Windows XP Office 2003 Visual Studio 2005 です。 私が書いたソースは下記の通りです。 これを実行すると、パワーポイントのからっぽのものが 立ち上がりpptpathでしているファイルの中身が表示されない 状態となります。 よろしくお願いいたします。 以下、内容------------------- 「参照」でMicrosoft Object Libraryを読み込んでおり、 また以下をusingで指定します。 using System; using System.IO; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Microsoft.Office.Interop.PowerPoint; using Microsoft.Office.Core; ・・・・以下が関数の該当部分です。 ApplicationClass app = new ApplicationClass(); app.Visible = MsoTriState.msoTrue; Presentation ppt = app.Presentations.Open(pptpath, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse); app.Activate(); よろしくお願いします。

専門家に質問してみよう