三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

Excel複数画像ファイルリスト から パワポのスライドに図・画像を貼り付ける パワポ図を作成

Excelシートのイメージ

B2にフォルダー
B6~ファイル名、C,D,E,F列にセット位置
に記載されたExcelの画像ファイル名リスト・表 から
パワポのスライドを複数ページ作成する

QAサイト
teratail.com
の質問に答えてみた。

いつもの あのあの そのその イライラ動画解説
www.youtube.com
https://www.youtube.com/watch?v=ELYLw9dn5Y4
↑こんな感じでテストしてみました。
目次
00:00 あいさつ、やりたいこと
00:34 実行結果を先に見せる
02:35 コードの説明
05:23 ポイントはShapes.AddPictureで画像の追加
07:18 テスト実行

ポイント
.Shapes.AddPicture で パワポのスライドに画像ファイル指定で図を挿入できるので、
google:Shapes AddPicture PowerPoint をぐぐってみてください。

#ExcelVBA #PowerPointVBA #マクロ #画像ファイル #パワポ #貼り付け #デバッグ #Shapes #AddPicture

コードをアレンジして使ってみてください。
ソースコード

'Excelの画像ファイルリストから、
'パワポのスライドを作成してみます。
Sub ExcelからPowerPointへ画像ファイルをセット20220823()

    Dim ppApp As Object   'PowerPoint.Application
    Set ppApp = CreateObject("PowerPoint.Application")
    ppApp.Visible = True
    '新規プレゼンファイルの追加 https://www.youtube.com/watch?v=5ZQMhv0s9qs
    ppApp.Presentations.Add '新規プレゼンの追加
    
    Dim objSlide As Object   'スライドオブジェクト
    Dim objPicture As Object '図 Picture

    Dim r As Range    'ファイルの表、基準の位置 表の左上 B5
    Dim p As Integer  'パワポ側Page と Excel表の行カウンタ
    Dim strFNAME As String  '画像ファイル名
    
    Set r = Range("B5")  'セット開始位置 B6からセット
    p = 1   'スライドのPページ目、兼、画像のP枚目として使用

    While Trim(r.Offset(p, 0) & "") <> "" 'ファイル名が空になるまでループ
        'パワポのスライドを追加する https://www.youtube.com/watch?v=0oHFihJNTLo
        'p枚目のスライド追加 レイアウトは12 ppLayoutBlank
        Set objSlide = ppApp.ActivePresentation.Slides.Add(p, 12)
        'ActiveWindow.Selection.SlideRange.Layout = 12  '12:ppLayoutBlank
             
        '画像ファイル名はB2のフォルダ+ファイル名です b2は\xxxxx\と\で終わってね
        strFNAME = Trim(Range("B2")) & r.Offset(p, 0) 'ファイル名
     
        '画像ファイルを挿入 画像ファイル名を指定してとりあえず0,0に挿入
        Set objPicture = objSlide.Shapes.AddPicture(strFNAME, False, True, 0, 0)
    
        '図 画像 の プロパティをセット ↑上で挿入された画像のプロパティを調整
        With objPicture
            .Top = r.Offset(p, 1)    '位置 上
            .Left = r.Offset(p, 2)   '位置 左
            .Width = r.Offset(p, 3)  '幅
            .Height = r.Offset(p, 4) '高さ
        End With
    
        '次のデータ、次のスライドページへ
        p = p + 1
    Wend
    
    MsgBox "処理終了 パワポを確認してください"
    'ここまで

End Sub

Sub B2のフォルダからファイル名を取得()

    
    Rows("6:999").Delete Shift:=xlUp  '決め打ちはよくないけど、データ行削除
    
    Dim r As Range
    Set r = Range("B6")  'セット開始位置 B6からセット
    
    Dim n As Integer
    n = 0
    
    Dim strFNAME As String  'ファイル名
    
    strFNAME = Dir(Trim(Range("B2").Text) & "*.*")  'B2のフォルダからファイル名取得
    While strFNAME <> ""  'ファイル名が無くなるまでループ
        r.Offset(n, 0) = strFNAME
        n = n + 1
        strFNAME = Dir()
    Wend

End Sub

コードをアレンジして、使ってみてください。



過去記事
下記、VBSで似た処理をやってみたパターン
ken3memo.hatenablog.com

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)