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

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

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

4851閲覧

PPtをVBAで操作したい

i_hope_sticky7

総合スコア11

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

1グッド

0クリップ

投稿2018/12/05 10:06

編集2018/12/05 10:27

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

papinianus👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/12/05 10:15

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

2018/12/05 10:27

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

回答2

0

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

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

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

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

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

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


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

vba

1Private Sub teratail162266() 2 '最前面にあるプレゼンテーションを取得 3 Dim pres As PowerPoint.Presentation 4 Set pres = PowerPoint.Application.ActivePresentation 5 6 '1個目のスライド 7 Dim sld As PowerPoint.Slide 8 Set sld = pres.Slides.Item(1) 9 10 Dim heightOfSld As Single 'スライドの縦幅 11 heightOfSld = sld.Master.Height 'スライドマスター経由で高さを取得 12 13 Dim imgPath As String 14 imgPath = "画像ファイルのパス" 15 16 'スライドの左上に、ファイル内に埋め込む形で画像を追加 17 Dim picShp As PowerPoint.Shape 'PowerPointの汎用図形オブジェクト 18 Set picShp = sld.Shapes.AddPicture( _ 19 FileName:=imgPath, _ 20 LinkToFile:=msoFalse, _ 21 SaveWithDocument:=msoTrue, _ 22 Left:=0, _ 23 Top:=0) 24 25 'アスペクト比を維持しつつ、スライドの縦いっぱいまで大きくする 26 picShp.LockAspectRatio = msoTrue 27 picShp.Height = heightOfSld 28 29 Stop 'ブレークポイント 30 31End Sub

投稿2018/12/05 12:44

imihito

総合スコア2166

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

i_hope_sticky7

2018/12/05 14:17

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

2018/12/05 14:36

しいて言うなら(2)、(1)ですね。 ExcelのVBA→PowerPointのVBAの流れです(Accessはろくに触ったことがありません)。 私の職場ではインターネットが閲覧できないため、ローカルのヘルプやVBAのデバッグ機能で調べ、ピンポイントでわからない部分は家で「インストラクターのネタ帳」さんで確認、としていました。 VBAのデバッグ機能としては、「ローカルウィンドウ」がシンプルかつ強力だと思います。 [表示]→[ローカル ウィンドウ]から表示しておけば、自動でローカル変数(プロシージャの中で宣言した変数)の一覧および中身を確認できるものです。 オブジェクトの中身も簡単に覗けるので、オブジェクトの階層構造の把握に役立ちます。
i_hope_sticky7

2018/12/05 14:48

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

0

ベストアンサー

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

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

投稿2018/12/05 12:39

TanakaHiroaki

総合スコア1063

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

i_hope_sticky7

2018/12/05 14:43

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

2018/12/05 14:52

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

2018/12/05 14:59

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問