普段の仕事では、自分で作った「エクセル写真帳」を使用しているのですが、下請け業務などの時に、元請けさんから使用する写真帳票を指定されるときがありまして、そんなときには自分の写真帳が使えません。
そこで「他所から頂いた写真帳票に簡単に自動貼付け機能をもたせられないだろうか」という動機から作成したのが以前のクラスモジュールです。
実はこれ、ほとんどその場の思いつきで作ったものなので、作りが雑でした。一応は使えるので、このブログ上で公開してみたんですけど、自分が思っていたよりも反響があるようで、紹介した記事は現在でも当ブログのアクセス上位に入ってきます。それが以下の記事です。
エクセルの写真帳票に簡単に写真を自動貼付できるようにするクラスモジュールを作りました
最初は「こんなの使いたい人なんていないよね?」的なノリだったんですけど、地味に質問がきたりするので、使ってくれている方もいるみたいですね。なんだか申し訳ないです。
クラスモジュールを改良
以前のものは前記したように特に深く考えずに作ったものなので、とてもじゃないけど万人受けするような作りではありませんでした。今回はこのクラスモジュールをもう少しわかりやすく、誰でも導入しやすい改良版を作ってみました。当然、自分用でもあります。
基本的なものは以前のクラスモジュールの中身をそのまま使用しています。細かい部分で入力が楽になるように調整しました。主な改良点は以下の通りです。
引数を少なくシンプルに
以前のクラスモジュールは引数が8つもあり、入力が面倒でした。どこに何を入れるんだったか、自分で使用するときですら、自分で書いたブログ記事を参考に入力していました。今回はわかりやすくシンプルに改良しました。
さらに添付のモジュールファイル内に引数の説明を追加したので、それを参考に数値を入力できます。
クラスの実体化コードの省略
以前のクラスモジュールでは、写真帳にクラスを読み込んだ後に、自分で標準モジュールを新規作成し、コードをコピーしてクラスをインスタンス(実体)化する必要がありました。
今回はすでにコード入力済のモジュールを付属しているので、こちらをドラッグ・アンド・ドロップして数字をちょっと変更するだけで簡単に導入できます。
サイズ計算を必要なくした
以前のクラスモジュールは、写真サイズを縦横それぞれ計算により算出する必要がありました。今回は計算過程をなくし、縦横のサイズをセルから自動的に取得する方式に変更しました。
改良版のダウンロード、詳細説明
改良版のダウンロードは、以下のダウンロードボタンよりお願いします。
現在のダウンロード数
ダウンロードファイルの構成
ダウンロードした「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つの数字(引数)を、お使いの写真帳にあわせて修正してください。
以下、サンプル写真帳の帳票を例に説明します。
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、写真枠を選択する
写真サイズは「セルの選択部分から自動取得」します。
マクロを実行前に、写真帳の貼付け部分の枠内を選択状態にしてください。サンプル写真帳の画像例では、1枚目の写真枠をクリックして、セルが選択されている状態です。
8、マクロの実行
【ALT + F8】を押してマクロ名(setpicture)を実行します。
9、写真データが入っているフォルダを指定
マクロを実行するとウィンドウが出てくるので、貼付けしたい写真データが入っているフォルダを指定してOKします。
写真貼付け完了
入力した6つの数値に間違いがなければ、フォルダ内の写真が一気に貼り付きます。
クラス使用時の注意点
このクラスは、あくまでも「簡易的な写真貼付け機能」しか持っていません。表題等の文字入力や写真順番の変更、その他編集については手動でお願いします。
2ページ目以降もすべて同じページ構成にする
マクロは指定された数値を頼りに正確に画像の貼付け作業を行います。2ページ目以降も1ページ目と全く同じ行数、行高にしてください。
貼付けする写真枚数以上のページを用意する
マクロは写真枚数によって自動で印刷ページを判断しますが、写真帳のページ作成は行ってくれません。写真帳のページはご自分であらかじめ必要分以上は作っておいてください。
マクロ実行前にセルの選択を忘れずに
「マクロ実行時のセルの選択範囲を画像サイズとして認識」するので、必ずセル選択してからマクロを実行してください。写真枠のセルが複数の場合(結合をかけていない場合など)は、枠内の全てのセルを選択してください。
また、写真サイズを微妙にかえたい場合には、写真枠とは関係ないセルの部分をあえて選択することで、サイズを指定していただいても良いです。
エクセル写真帳もよろしくおねがいします
このクラスモジュールは僕が個人的に作成している「エクセル写真帳」の写真貼付け機能の部分を抽出して作成されています。
手間なく簡易的に短時間で、他所から頂いた写真帳に画像貼付け機能をもたせるだけ、のプログラムです。その他の写真帳機能をお求めの方は、「エクセル写真帳」をダウンロードして使っていただけると幸せになれるかもしれません。
■エクセル写真帳 説明動画
はじめまして
縦3、横2でエクセルを作りたいんですが
どのようにすればいいんでしょうか
マクロの知識は皆無で全く分かりません
エクセルのシートはメールからお送りできるんですが
改良は可能でしょうか?