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

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

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

COM(Component Object Model)はMicrosoftによるコンポーネントテクノロジーであり、 ソフトウェアの再利用を目的とした技術を指します。

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VBA

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

Q&A

解決済

5回答

1364閲覧

VBA or VBでPowerPointファイルを編集

yhaga

総合スコア6

COM

COM(Component Object Model)はMicrosoftによるコンポーネントテクノロジーであり、 ソフトウェアの再利用を目的とした技術を指します。

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VBA

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

0グッド

0クリップ

投稿2020/07/28 13:15

添付ファイルのようなPowerPointのファイルがあります。
イメージ説明
これを読み込んでファイル名の部分に実際の画像ファイルを表示してくれるようなプログラムを作成したいと考えてます。また、CSVの場合はCSVを読み込んで表を出せたらと考えてます。また、画像ファイルや表を出したファイルを新規ファイルとして保存したいです。すいませんが、お詳しい方いらっしゃいましたらご教授頂きたくよろしくお願いいたします。画像ファイルやCSVファイルはPowerPointのファイルと同じところに配置します。

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

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

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

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

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

guest

回答5

0

自己解決

TextFrameを一旦消して、AddPictureで画像が入ることは確認しました。
ただ、shapeをループして回していた場合に、今回変更したshape(TextからPicture)を参照した際に
PictureではなくTextと判断しておかしな処理を行ってました。そのため、shapeのループを再度やり直すような処理に変えたところうまくいきました。お騒がせしました。

投稿2020/08/06 00:25

yhaga

総合スコア6

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

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

0

エクセル+パワーポイントは初めてなので少し適当で申し訳ありません。
サンプルを作成してみました。
あくまでサンプルですので、画像サイズ調整が甘いなどの問題点があることをご了承ください。

このようなエクセルの表があるとしてパワーポイントを新規起動してタイトルと画像を挿入するという
サンプルになります。参考にならないと思いますが申し訳ありません。

Excel表

<参考サイト>
Qiita
画像一括挿入

VBA

1Sub ExcelToPowerPoint() 2Dim pp, ps, sl As Object 3Dim i, rowCount As Long 4Dim r, c As Object 5Dim rng As Range 6 7’VBA 参照設定でmicrosoft powerpoint XX object Libratyにチェックしてください。 8 9Set rng = Sheets("data").Range("B2:B10") 10 11Set pp = CreateObject("PowerPoint.Application") 12 13i = 1 14 15With pp 16 17 .Visible = True 18 19 Set ps = .Presentations.Add 20 21 For Each r In rng.Rows 22 23 For Each c In r.Columns 24 25 i = i + 1 26 27 With ps.Slides 28 29 Set sl = .Add(Index:=.Count + 1, Layout:=13) ' スライド追加 Layout参考 https://www.relief.jp/docs/ppt-vba-slide-layout-list.html 30 sl.Shapes(1).TextFrame.TextRange.Text = c.Text ' タイトルシェイプにループ時のカレントセルの内容を挿入 31 Set shp = sl.Shapes.AddPicture(Filename:=Sheets("data").Range("C" & i).Value, _ 32 LinkToFile:=False, SaveWithDocument:=True, Left:=0, Top:=0) 33 34 With shp 35 .LockAspectRatio = True '縦横比を固定 36 37 If .Width > .Height Then '挿入した画像を調整 38 .Width = ps.PageSetup.SlideWidth / 1.5 39 Else 40 .Height = ps.PageSetup.SlideHeight / 1.5 41 End If 42 43 '.Select 44 End With 45 46 End With 47 Next c 48 Next r 49 50 Set sl = Nothing 51 Set ps = Nothing 52End With 53Set pp = Nothing 54End Sub

データ便に一式サンプルをUPしておきます。
必要であれば参照ください。下記URLにアクセスし同意するにチェックするとダウンロードできます。

https://www.datadeliver.net/receiver/file_box.do?fb=6b02d5196e3145f3932ec83f56ab16d8&rc=cce64053dc3448cdaf9e86c0dd8b0c78&lang=ja

投稿2020/07/29 12:19

mako1972

総合スコア383

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

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

YAmaGNZ

2020/07/29 12:47

何故、前の回答を編集せずに別に回答するのでしょうか? 前の回答でも「レスします」とコメントされているのでそちらの追加で十分だと思います。
yhaga

2020/07/29 12:51

大変失礼しました。teratailの使い方等理解しておりませんでした。申し訳ございません。
mako1972

2020/07/29 12:54

確かに。その通り。yhagaさんではなく自分です。
yhaga

2020/07/29 13:35

あっ、下の方で回答せよってことですね、認識誤っておりました。 動かしてみました。画像が貼っ付けられることを確認しました。ありがとうございます。 スライドの右側に貼り付ける感じかと思いますが、コンテンツ(画像やCSV、グラフ等を選択して表示できる)のところに画像を出すというのは、やはり難しいですよね。。。これができればサイズ調整しなくても範囲内におさまる想定で考えていたものでして。もし簡単なものなのであれば、ご教授頂けたら助かります。いろいろとやって頂いておいてすいません。
mako1972

2020/07/29 13:54 編集

下記のコードでパワーポイントの基本レイアウトが指定できるようです。 今回がたまたまそういうレイアウトだったということだと思います。 たしかにオートフィットなどの命令があれば難しくないかもしれません。。 この部分のLayout:=13が今回のレイアウトに該当します。 Set sl = .Add(Index:=.Count + 1, Layout:=13) ' スライド追加 レイアウトは30以上あって、定数が下記のサイトに載っています。 Layout参考サイト https://www.relief.jp/docs/ppt-vba-slide-layout-list.html 画像を画面いっぱいにもってくるとか、ネットのサンプルではあったのですが サンプルを解析しきれず、エラーとなったので今回はするーしてしまいました。 ネットでみると、エクセルの表をはりつけるサンプルがありましたが、 少し、頭を整理しないとダメかなという印象です(わたしが)。 作成したオブジェクトをどのように指定するのかなどいまいち分かっていません。 サイズ調整も50%にするとか、いろいろできそうですけど なんとなく、 スライド一枚だけで、いろいろなパターンを整理しないと 難しいという印象でした。 まっさらなスライドのみを追加して自由に部品をレイアウトできれば いいですね。 ネットとエクセルVBAの書籍を見てみますね (理解できるかわかりませんが、このレスに投稿できればいいなという感じです)。 分かる方が回答してくれるといいですね。
yhaga

2020/07/29 14:04

ありがとうございます、お手数をおかけいたします。自分も分からないと思いますが、調べてみます。
mako1972

2020/07/29 14:08 編集

ご要望としては、タイトル・画像・表・グラフ・本文などが自動配置できればいいということで いいでしょうか。 今回のサンプルを拡張してやってみますね。 少しお時間をいただきますね。
yhaga

2020/07/29 23:51

回答遅くなりすいません、powerpointのスライドの中にコンテンツが入っているものがあります。コンテンツはテキスト未入力状態の場合、中心に6つのアイコンが出てるのでそれを選択して画像やら表やらがコンテンツ枠内に自動で出るかと思います。今回、テキスト未入力状態のところに、jpgのファイル名があればそのファイルを表示、csvなら表を表示みたいなことができたら嬉しいと思っております。
yhaga

2020/07/30 01:27

回りくどい表現でした。プレースホルダーに画像や表等が出せれば嬉しく思います。すいません。
yhaga

2020/07/30 06:38

わかったことメモ。 プレースホルダーに文字が入力されていない状態でaddpictureするとサイズを気にせず画像が入ってくれる。文字を一旦切り取ってから画像を埋め込めばいけるかもしれないが、そのapiまで分かっておらず。
mako1972

2020/07/30 07:14

なるほど 引き続き、調べてみますね
guest

0

PowerPointのVBAで以下の操作がわかれば、画像の追加ぐらいはできそうですね。
CSV→表はCSVの解析が必要なので、対象のCSVの形式によって難度が変わりそうです。

  • PresentationSlideの取得方法
  • Shape(図形)の取得方法(画像を見る限りプレースホルダーを取得してもいいかも?)
  • 図形の中の文字列の取得方法
  • 図形の追加方法

PowerPointのVBA操作参考サイト

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

投稿2020/07/29 10:25

imihito

総合スコア2166

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

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

yhaga

2020/07/29 12:52

ありがとうございます。参考にさせていただきます。
guest

0

直接の回答ではありませんが。

ファイル名とそれ以外はどのように区別しようと考えておられますか?
目的によっては、Marp for VSCode など、PowerPoint 以外の手段も視野に入れた方が良いかもしれません。

これだと csv は表にしたいは実現できないかもしれませんが。

投稿2020/07/28 14:33

Yasumichi

総合スコア1773

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

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

yhaga

2020/07/29 00:19

ありがとうございます。理由は話せませんが、powerpointでしか作れないので、すいません、せっかくのご提案なのですが。
Yasumichi

2020/07/29 11:36

元データも Power Point でなければならない感じですか?Marp でも Power Point 出力はできます。(まあ、編集はしづらいですが。) Power Point でやるにしても画像ファイルを表す場合は [画像ファイル名] のように [] で囲むなどの何かしらのルールを決めた方が良いでしょう。元データを Power Point にこだわらなければ、色々、選択肢がありそうです。
yhaga

2020/07/29 14:01

はい、画像ファイルが分かるようなルールは必要と思います。まずは、コンテンツに画像やCSVを出せたら良いな程度で考えていた次第でした。
guest

0

もともと質問がpythonでなかったですか?
そこまでpowerpointを自動化する必要がありますか?

世の中A41枚にまとめるとか、会議をしないとか
分厚い提案書を読まないとか色々ありますので、

個人的はどうでもいい話題です(すみません)。

投稿2020/07/29 00:02

編集2020/07/29 00:04
mako1972

総合スコア383

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

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

yhaga

2020/07/29 00:16

ご確認ありがとうございます。もともとはpythonですが、comオブジェクトを使って作成したいので、vbaでも質問させて頂きました。 はい、自動化できればと思います。
mako1972

2020/07/29 00:17

そういう回答がいいと思います。自分もレスないようなら調べてみますね。
yhaga

2020/07/29 00:21

ありがとうございます。いろいろと至らないところが多く申し訳ございません、よろしくお願いいたします。
mako1972

2020/07/29 00:23

いい回答!解決済みになるかもしれませんが、!調べた結果はレスしますね!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問