質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.63%

PPtをVBAで操作したい

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,325

i_hope_sticky7

score 11

パワーポイントをVBAで操作することについて質問させて頂きたく存じます(主に勉強方法について)。
EXCEL-VBAとPythonの簡単な基礎だけ学んだ段階のものです。
仕事でパワーポイントを使用していつも行う作業の自動化を希望し、それを通じて同様の操作について自力で作成できるように勉強したいと思っています。
具体的には研究で得た画像A、画像B、およびそれらの重ね合わせ画像Cという組み合わせが大量にあるのですが、それらを同じファイルに入れておいて、それをあるファイルにドラッグ&ドロップするとパワーポイントのスライドの特定の位置に3つの画像が配置されるというプログラムを作成したいと考えております。
Pythonを用いて行うにはPython-pptxなどのパッケージを使用し、VBAの場合にはhttps://tonari-it.com/excel-vba-powerpoint/などのサイトを
参考にさせて頂く方法があるのではないかと思っています。この二つを比較すると、私の力ではPython-pptxを使いこなすには難易度が高すぎでまたテンプレートとするパワーポイントの情報を取得する方法を知らず、VBAを使用した方が容易ではないかと考えております。
このVBAを用いてパワーポイントを操作する方法について(系統立って)書いてある日本語の本や良い教材・勉強法などをご存知ないでしょうか?
やや漠然とした質問で申し訳ありませんが、もし良い方法などがあればご教示のほど何卒よろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m.ts10806

    2018/12/05 19:15

    要件が直接Python関係がないのでしたらタグは外されたほうが良いです。

    キャンセル

  • i_hope_sticky7

    2018/12/05 19:27

    失礼致しました。修正を行わせて頂きました。

    キャンセル

回答 2

checkベストアンサー

+2

私は利用したことがありませんが、下記サイトが参考になると思います。
http://www.geocities.jp/msjti157/IWT/macro_presen

ただし、実現に向けては、かなりの時間と労力をVBAの学習に費やす
必要があると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/12/05 23:43

    このサイトには自分では決してたどり着けなかったと思います。誠にありがとうございます。
     もしも可能で御座いましたら、TanakaHiraki殿のご意見で構いませんで教えて頂きたいのですが(1)パワーポイント作成の自動化は一般的にあまりされていない(2)パワーポイント作成の自動化はしばしばされているが、VBA以外の他の方法でやることが多いのどちらでしょうか?あるいはどちらとも言えないでしょうか?
    同じようなことをやりたい方はたくさん居られると思いますので、他にVBAにこだわらず、簡単な方法あるいは一般的にされている方も多いのではと考えておりました(私の勤務先が小さな研究室のためあまりこの課題について話せる方がおりません)。もしも、お時間があればよろしくお願いいたします。

    キャンセル

  • 2018/12/05 23:52

    私の意見は(1)(2)のどちらでもなく、PowerPointの自動化は
    VBAが最も近道です。
    ただし、普段ExcelVBAを扱っており、PowerPointの自動化は、
    私にとってはハードルが高いと感じています。

    キャンセル

  • 2018/12/05 23:59

    切れ味の良い回答をありがとうございました。非常に参考になりました。

    キャンセル

+2

系統立って、となると中々難しいですね。

「いつも隣にITのお仕事」以外でそこそこ情報があるのは、自分の知っている範囲だと以下のサイトです。

インストラクターのネタ帳(Tips系)

パワーポイントマクロ・PowerPoint VBAの使い方

Powerpoint VBAを使おう!(個人ブログなのでそこまで情報は多くない)

Powerpoint VBA 基本② オブジェクトの取得 - Powerpoint VBAを使おう!


画像の追加を適当に書くと以下のような感じですかね。

Private Sub teratail162266()
    '最前面にあるプレゼンテーションを取得
    Dim pres As PowerPoint.Presentation
    Set pres = PowerPoint.Application.ActivePresentation

    '1個目のスライド
    Dim sld As PowerPoint.Slide
    Set sld = pres.Slides.Item(1)

    Dim heightOfSld As Single 'スライドの縦幅
    heightOfSld = sld.Master.Height 'スライドマスター経由で高さを取得

    Dim imgPath As String
    imgPath = "画像ファイルのパス"

    'スライドの左上に、ファイル内に埋め込む形で画像を追加
    Dim picShp As PowerPoint.Shape 'PowerPointの汎用図形オブジェクト
    Set picShp = sld.Shapes.AddPicture( _
            FileName:=imgPath, _
            LinkToFile:=msoFalse, _
            SaveWithDocument:=msoTrue, _
            Left:=0, _
            Top:=0)

    'アスペクト比を維持しつつ、スライドの縦いっぱいまで大きくする
    picShp.LockAspectRatio = msoTrue
    picShp.Height = heightOfSld

    Stop 'ブレークポイント

End Sub

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/12/05 23:17

    丁寧に御回答頂き誠にありがとうございます。また、具体的なサンプルまで頂き深謝いたします。
     もしも可能で御座いましたら教えて頂きたいのですが、imihito殿が上記のようなサンプルが記載できるようになられた理由は(1)上記の文献などを参考に学ばれた結果(2)Access-VBAなど他のVBAも勉強された結果(3)HTMLなど他のプログラミング言語を勉強された(+上記の文献を勉強された)結果のどれが要因として強いとお考えになられますでしょうか?あるいは全部でしょうか?
    というのは、Access-VBAを全く勉強しておらず、その点がどれほど影響しているのか、あるいはそちらを勉強したほうが急がば回れで早道なのか知りたいという気持ちがあるからです。もしも、お時間がございましたらよろしくお願いいたします。

    キャンセル

  • 2018/12/05 23:36

    しいて言うなら(2)、(1)ですね。
    ExcelのVBA→PowerPointのVBAの流れです(Accessはろくに触ったことがありません)。
    私の職場ではインターネットが閲覧できないため、ローカルのヘルプやVBAのデバッグ機能で調べ、ピンポイントでわからない部分は家で「インストラクターのネタ帳」さんで確認、としていました。

    VBAのデバッグ機能としては、「ローカルウィンドウ」がシンプルかつ強力だと思います。
    [表示]→[ローカル ウィンドウ]から表示しておけば、自動でローカル変数(プロシージャの中で宣言した変数)の一覧および中身を確認できるものです。
    オブジェクトの中身も簡単に覗けるので、オブジェクトの階層構造の把握に役立ちます。

    キャンセル

  • 2018/12/05 23:48

    ご多忙のところ迅速に回答を頂き誠にありがとう御座います。ご教示頂いた内容をぜひ実践させて頂こうと思います。夜遅くまで本当にありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.63%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る