エクセルの写真帳票に簡単に写真を自動貼付できるようにするクラスモジュールの改良版

エクセル写真帳5.3

普段の仕事では、自分で作った「エクセル写真帳」を使用しているのですが、下請け業務などの時に、元請けさんから使用する写真帳票を指定されるときがありまして、そんなときには自分の写真帳が使えません。

そこで「他所から頂いた写真帳票に簡単に自動貼付け機能をもたせられないだろうか」という動機から作成したのが以前のクラスモジュールです。

実はこれ、ほとんどその場の思いつきで作ったものなので、作りが雑でした。一応は使えるので、このブログ上で公開してみたんですけど、自分が思っていたよりも反響があるようで、紹介した記事は現在でも当ブログのアクセス上位に入ってきます。それが以下の記事です。

最初は「こんなの使いたい人なんていないよね?」的なノリだったんですけど、地味に質問がきたりするので、使ってくれている方もいるみたいですね。なんだか申し訳ないです。

スポンサーリンク

クラスモジュールを改良

エクセル簡易写真帳クラス 改良

以前のものは前記したように特に深く考えずに作ったものなので、とてもじゃないけど万人受けするような作りではありませんでした。今回はこのクラスモジュールをもう少しわかりやすく、誰でも導入しやすい改良版を作ってみました。当然、自分用でもあります。

基本的なものは以前のクラスモジュールの中身をそのまま使用しています。細かい部分で入力が楽になるように調整しました。主な改良点は以下の通りです。

引数を少なくシンプルに

以前のクラスモジュールは引数が8つもあり、入力が面倒でした。どこに何を入れるんだったか、自分で使用するときですら、自分で書いたブログ記事を参考に入力していました。今回はわかりやすくシンプルに改良しました。

さらに添付のモジュールファイル内に引数の説明を追加したので、それを参考に数値を入力できます。

クラスの実体化コードの省略

以前のクラスモジュールでは、写真帳にクラスを読み込んだ後に、自分で標準モジュールを新規作成し、コードをコピーしてクラスをインスタンス(実体)化する必要がありました。

今回はすでにコード入力済のモジュールを付属しているので、こちらをドラッグ・アンド・ドロップして数字をちょっと変更するだけで簡単に導入できます。

サイズ計算を必要なくした

以前のクラスモジュールは、写真サイズを縦横それぞれ計算により算出する必要がありました。今回は計算過程をなくし、縦横のサイズをセルから自動的に取得する方式に変更しました。

改良版のダウンロード、詳細説明

改良版のダウンロードは、以下のダウンロードボタンよりお願いします。


現在のダウンロード数
3928 Downloads

ダウンロードファイルの構成

SetPicturesクラスの内容

ダウンロードした「SetPictures.zip」を解凍すると、以下の3つのファイルが出てきます。

  • サンプル写真帳.xlsm
  • SetPictures.cls
  • Module1.bas

サンプル写真帳はすでに今回の改良版の機能を組み込んである写真帳です。2枚帳票ですが、練習用、適当にいじる用など、ご自由にお使いください。

お使いの写真帳への導入方法

「SetPictures.cls」と「Module1.bas」の2つのファイルを、お使いの写真帳にインポートします。

1、VBEの立ち上げ

お使いの写真帳ファイル(エクセル)を起動後、「Alt+F11」キーを押してVBE(Visual Basic Editor)を立ち上げます。VBEはVBA(マクロ)の操作をするためのエディタで、全てのエクセルに標準で搭載されています。

2、ふたつのファイルをドラッグ・アンド・ドロップ

VBEが立ち上がったら、左側にあるプロジェクトウィンドウ内にご自分の写真帳のファイル名がカッコ書きされた部分(画像の例ではBook1)があるので、2つのファイルをドラッグ・アンド・ドロップで放り投げます。

エクセル簡易写真帳クラス導入方法

3、コード部分の書き換え

標準モジュール内にあるModule1をダブルクリックすると、右側のウィンドウにプログラムコードが出現します。赤枠の()内の6つの数字(引数)を、お使いの写真帳にあわせて修正してください。

エクセル簡易写真帳クラス導入方法2

以下、サンプル写真帳の帳票を例に説明します。

エクセル簡易写真帳クラス導入方法3

1、1ページ内の全行数

写真帳の1ページ内の全ての行数を入力します。
(※画像例:36行)

2、1ページ内の全列数

写真帳の1ページ内の全ての列数を入力します。
(※画像例:A列~I列 = 9列)

3、1枚目の写真枠の一番上の行

1枚目の写真枠部分の一番上にくる行を指定します。
(※画像例:2行目)

4、1枚目の写真枠の一番左の列

1枚目の写真枠部分の一番左にくる列を指定します。
(※画像例:B列 = 2列目)

5、1ページの写真枚数

ページ内に貼付けする写真枚数を指定します。
(※画像例:2枚)

6、1枚目と2枚目の間の行数

写真帳の写真間の行数を指定します。1枚帳票などの場合には行間が存在しないので0を入力します。
(※画像例:2行)

写真枠部分を選択してマクロ実行

7、写真枠を選択する

写真サイズは「セルの選択部分から自動取得」します。

エクセル簡易写真帳クラス導入方法4

マクロを実行前に、写真帳の貼付け部分の枠内を選択状態にしてください。サンプル写真帳の画像例では、1枚目の写真枠をクリックして、セルが選択されている状態です。

8、マクロの実行

エクセル簡易写真帳クラス導入方法5

【ALT + F8】を押してマクロ名(setpicture)を実行します。

9、写真データが入っているフォルダを指定

エクセル簡易写真帳クラス導入方法6

マクロを実行するとウィンドウが出てくるので、貼付けしたい写真データが入っているフォルダを指定してOKします。

写真貼付け完了

入力した6つの数値に間違いがなければ、フォルダ内の写真が一気に貼り付きます。

クラス使用時の注意点

クラスモジュール使用時の注意点
フリー写真素材ぱくたそ

このクラスは、あくまでも「簡易的な写真貼付け機能」しか持っていません。表題等の文字入力や写真順番の変更、その他編集については手動でお願いします。

2ページ目以降もすべて同じページ構成にする

マクロは指定された数値を頼りに正確に画像の貼付け作業を行います。2ページ目以降も1ページ目と全く同じ行数、行高にしてください。

貼付けする写真枚数以上のページを用意する

マクロは写真枚数によって自動で印刷ページを判断しますが、写真帳のページ作成は行ってくれません。写真帳のページはご自分であらかじめ必要分以上は作っておいてください。

マクロ実行前にセルの選択を忘れずに

「マクロ実行時のセルの選択範囲を画像サイズとして認識」するので、必ずセル選択してからマクロを実行してください。写真枠のセルが複数の場合(結合をかけていない場合など)は、枠内の全てのセルを選択してください。

また、写真サイズを微妙にかえたい場合には、写真枠とは関係ないセルの部分をあえて選択することで、サイズを指定していただいても良いです。

エクセル写真帳もよろしくおねがいします

このクラスモジュールは僕が個人的に作成している「エクセル写真帳」の写真貼付け機能の部分を抽出して作成されています。

手間なく簡易的に短時間で、他所から頂いた写真帳に画像貼付け機能をもたせるだけ、のプログラムです。その他の写真帳機能をお求めの方は、「エクセル写真帳」をダウンロードして使っていただけると幸せになれるかもしれません。

エクセル写真帳ダウンロードページ(Vector)

■エクセル写真帳 説明動画

エクセル写真帳の使い方
この記事をお届けした
satoの雑技術ノートの最新ニュース情報を、
いいねしてチェックしよう!
スポンサーリンク

フォローする

『エクセルの写真帳票に簡単に写真を自動貼付できるようにするクラスモジュールの改良版』へのコメント

  1. 名前:あやな 投稿日:2018/06/05(火) 14:48:27 ID:57de8d2f4 返信

    はじめまして
    縦3、横2でエクセルを作りたいんですが
    どのようにすればいいんでしょうか
    マクロの知識は皆無で全く分かりません
    エクセルのシートはメールからお送りできるんですが
    改良は可能でしょうか?

    • アバター画像 名前:sato001 投稿日:2018/06/06(水) 00:11:44 ID:c121ae86c 返信

      あやな さま。
      コメントありがとうございます。
      もしよろしければどのような帳票か、一度送ってみてください。
      lopspve@gmail.com まで。

      改良、というより、おそらく頂いた帳票でイチからマクロ組んで作ることになります。
      すいませんが、いくらかの作業料はいただくことになると思います。
      ただし、お急ぎの場合にはお受けできません。
      よろしくおねがいします。

  2. 名前:鈴木正巳 投稿日:2018/08/07(火) 15:52:11 ID:8a1a37ade 返信

    こんにちわ。
    いつも便利に使わせて頂き、大変助かっております。
    突然の愚問にて大変恐縮なのですが
    先日同僚が使用していた際、横向きの写真なのに
    貼り付けると縦向きで横にスパンされてしまうという現象に見舞われました。
    聞くとスマホで撮影した写真との事。
    使用していたのがVer.3.1というのもあるかと思われますが
    スマホで撮影した時のセンサーが検知した縦横の情報が
    影響するという事もありますでしょうか?

    • アバター画像 名前:sato001 投稿日:2018/08/07(火) 19:08:21 ID:037f479bd 返信

      鈴木正巳 さま。
      ver3.1ということは「エクセル写真帳」のことでしょうか。
      エクセル写真帳はスマホの縦横の情報は検知しておりません。
      エクセル写真帳ver3.1では、写真のサイズは関係なく単純に枠に合わせて引き伸ばす仕様でした。

      現在の最新版では写真サイズの縦横比を維持したまま配置するように改良しています。
      よろしくおねがいします。

  3. 名前:tomo 投稿日:2018/09/23(日) 11:23:26 ID:2b5e27980 返信

    はじめまして
    いつも使用しています。大変助かっています。
    写真なんですが、JPEGでしか出来ないのですが、iPhoneを使って写真を撮ると、JPEGではなくHEICなんですが、こちらのHEICでも読み込む事はできないでしょうか ?

    • アバター画像 名前:sato001 投稿日:2018/09/24(月) 00:33:24 ID:9a4fb6443 返信

      tomo さま。
      エクセル写真帳をお使い頂き、ありがとうございます。
      すいませんが、エクセル写真帳は現状ではJPEG形式以外の形式には対応しておりません。

      HEICからJPEGに変換するフリーソフトはいろいろあるようなので、すでにお使いかもしれませんが、そちらをお使い頂ければ、と思います。
      よろしくおねがいします。

      • 名前:作業員 投稿日:2020/01/24(金) 20:36:48 ID:b6f1073bc 返信

        sato様

        作業報告書を作成するのに今までは100枚ほどの画像を1枚づつ貼ってました。
        サイトに説明してある通りやってみましたが貼り付けたい写真のフォルダ(名前に写真No変更済み)を貼り付けると写真の順番が変わってます。
        なにか私の設定が良くないのでしょうか?
        お手数お掛けしますが宜しくお願い致します。

        • アバター画像 名前:sato001 投稿日:2020/01/24(金) 22:07:29 ID:0eca66e59 返信

          コメントありがとうございます。
          写真が枠内に貼り付いているなら設定は問題ないです。
          このクラスモジュールは写真の貼り付け順番を変更することは出来ません。

          写真に数字をつけているなら、桁数を揃えてあげれば順番どおりになるかもしれません。

          1、2、3、4 ~ 10、11
          数字がこうなっていて想定通りに並ばない場合は

          01、02、03、04 ~ 10、11
          こうすると並ぶと思います。

          もし可能なら「エクセル写真帳」も検討してみてください。
          こちらは自分で順番を指定できます。

  4. 名前:石川修 投稿日:2020/01/26(日) 19:04:41 ID:e37c148a5 返信

    sato様

    早々にご返信ありがとうございます。
    写真を001.002…と言うようにリネームし直したら順番に貼り付くようになりました。

    これから今まで時間の掛かっていた作業報告書が半分以下の時間で終わるようになります。

    本当にありがとうございました。

    • アバター画像 名前:sato001 投稿日:2020/01/26(日) 21:02:18 ID:350906789 返信

      石川修 さま。
      無事に貼り付けできて良かったですね。
      クラスモジュールをお使いいただきありがとうございます。

  5. 名前:あいうち 投稿日:2020/04/12(日) 18:48:26 ID:b718ea59f 返信

    はじめまして、サンプル写真帳を使わせていただいております。
    お言葉に甘えて素人ながら内容をいじらせていただいております:)
    私だけに起こっている現象なのか分かりませんが、二枚目の写真から順に少しづつ上にずれて張り付けられてしまいます。
    写真の大きさは2592×1944 96dpiです。
    対処法があったら教えて頂けないでしょうか?

    • アバター画像 名前:sato001 投稿日:2020/04/12(日) 19:43:10 ID:7358f1eff 返信

      あいうち さま。
      コメントありがとうございます。
      >内容をいじらせていただいております
      というのが少し気になりますが、どのような内容をいじってますでしょうか。

      マクロ貼り付けなので、1枚目と2枚目の写真でセルの行数が一つでも違えばズレが生じます。
      すべて1枚目の写真と同じ配置にする必要があります。

      サンプル写真帳の、初期状態で一度お試し頂けますか。

      僕が作っている「エクセル写真帳」ではもっと高度なことができます。
      サンプル写真帳のような2枚帳票もあります。
      よろしければこちらもお試しいただければと思います。

      エクセル写真帳ダウンロード
      https://www.vector.co.jp/soft/winnt/business/se495259.html

  6. 名前:あいうち 投稿日:2020/04/12(日) 21:18:29 ID:b718ea59f 返信

    再ダウンロードしたところ正常になりました。
    ありがとうございます。
    手を加えたときにどこか破壊してしまったようです(汗)
    素人なもので・・・

    いじったところはコメント欄にジオタグなどを自動記入するように変更を加えました。
    勿論私的利用が目的です。
    本当にきれいなソースで読みやすく、分からないところはGoogle先生に尋ねながら勉強させていただいています。
    完成したら写真整理の作業時間が大幅に短縮できそうです。

    また、エクセル写真帳にもEXIFの情報から必要事項を選択して記入できるようになったら需要も増えるのではないかと思います。

    • アバター画像 名前:sato001 投稿日:2020/04/13(月) 20:13:36 ID:4935235f9 返信

      あいうち さま。
      無事に利用できたようで安心しました。
      エクセル写真帳の件、検討してみますね。
      ありがとうございます。

  7. 名前:mii 投稿日:2021/07/07(水) 20:27:53 ID:634b46c14 返信

    はじめまして
    A4に縦3枚の写真を選んだ順番に縦横比保のまま貼り付けたいと思って「エクセル写真帳」と「クラスモジュール」にたどり着きました。選んだ順番に貼付けたいので写真の部分については「エクセル写真館」が合っていそうなのですが、写真右側の表題部の(大見出し)は写真1枚目から25枚目までそれぞれに決まった文言があったり、細目欄の行数の面などの都合で「クラスモジュール」が合っているのでそれぞれを併せ持つVBAをお持ちでしたら教えていただきたいと思っております。よろしくお願い致します。

    • アバター画像 名前:sato001 投稿日:2021/07/07(水) 23:35:37 ID:060e4fc35 返信

      mii 様
      コメントありがとうございます。
      残念ながらエクセル写真帳以外のものを持っていません。
      クラスモジュールに関しては、改良して使っていただいて構いません。
      宜しくおねがいします。

  8. 名前:つかさ 投稿日:2021/09/20(月) 13:02:28 ID:9b672c3c7 返信

    はじめまして

    一括で画像を貼り付けできるものをさがしていた時にここを見つけて使用させていただいております。
    今まで何時間も何日もかかっていた作業がすぐ終わり大変感激しております。

    これを使用させていただいて作ったエクセルデータを久々に開いてみたところ画像が”リンクされたイメージが表示できません。”という表示だけがされており画像が見れない状態になっています。
    恐らくコードを一部変更するしかないと思うのですが変に触って使えなくなるのが怖いのでご相談させていただくことにしました。
    素人でも分かるようにどこをどう変更すればよいのか教えていただけないでしょうか?
    申し訳ございませんがよろしくお願いいたします。

    • アバター画像 名前:sato001 投稿日:2021/09/20(月) 14:53:56 ID:bb4d2cb2d 返信

      リンク貼り付けになっているので、元のJPEGデータの場所が変わる、フォルダやファイル名が変わるなどをすると読み込めなくなります。

      修正したい場合は、以前に貼り付けした時のJPEGデータのフォルダの場所、名前、ファイル名に直せば読みこめると思います。
      もしくは新たに貼り付け直すしかないです。

      • 名前:つかさ 投稿日:2021/09/20(月) 16:51:40 ID:9b672c3c7 返信

        satoさま

        お早い回答ありがとうございます。
        そうなんですね。
        ありがとうございます。
        また今後もいろいろとご参考にさせていただきます。