エクセルのマクロでコンタクトシート作成

このQ&Aのポイント
  • エクセルのマクロを使用して、フォルダ内の画像を一覧リスト化するコンタクトシートを作成したいです。
  • A列に画像を表示し、B列以降に画像の情報(ファイル名、画像サイズなど)を表示したいです。
  • 画像のサイズをセルに合わせるか固定するかについてもアドバイスをいただきたいです。
回答を見る
  • ベストアンサー

エクセルのマクロでコンタクトシートを作成したいです

はじめまして、 タイトルの通り、エクセルのマクロでコンタクトシートを作成したく質問しました。 コンタクトシートの内容としては、 ●フォルダ内にある画像(今回の場合はPNG)すべてを一覧リスト化する(A列)。 ●A列に配置された画像の情報(ファイル名、画像サイズ等)をB列以降に表示。 の以上がやりたい事です。   A列   B列    C列 1 画像 ファイル名 画像サイズ 2 画像 ファイル名 画像サイズ 3 画像 ファイル名 画像サイズ        ・        ・        ・ と、続く様な表示にしたいです。 できれば、 A列の画像は、セルにあわせてしまうと小さく表示されてしまうようなので、 ・元の画像の50%などといったように表示される? ・またはセルのサイズの最大値(50px x 50px)を固定する? のようになると、とてもありがたいです。 他の質問等を探してみましたが、 photoshopでのコンタクトシートは求めているものと違いました。 また、エクセル等での回答がありましたが、画像のみの表示でしたので、 上記の様な事が1度にできればと思い、ココに質問させていただきました。 知識レベルとしては、 マクロ初心者です。 どうか みなさんの知識をお借りしたいと思いますので、 よろしくお願いいたします。 pc環境: windows XP Excel 2000

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

Sub Pict_Addは、A列にPNG画像、B列にファイル名、C列に画像サイズ、D列に画像作成日 を表示させるサンプルです。 以下は、標準モジュールにコピペしてください。 下記マクロを実装したエクセルのファイルは、必ずPNG画像を置いてあるフォルダーに保存してください。 保存してから実行してください。 Sub Pict_Deleteは、表示されたデータを消去するマクロです。 Sub Pict_Add()   Dim myPic As Shape, myC As Range, i As Long   Cells.RowHeight = 50   Columns(1).ColumnWidth = 8.38   With Application.FileSearch     .NewSearch     .LookIn = ThisWorkbook.Path     .SearchSubFolders = False     .Filename = "*.png"     If .Execute() > 0 Then       For i = 1 To .FoundFiles.Count         Set myC = ActiveSheet.Range("A" & i)         Set myPic = ActiveSheet.Shapes.AddPicture _         (.FoundFiles(i), msoTrue, msoFalse, myC.Left, myC.Top, myC.Width, myC.Height)         myC.Offset(0, 1).Value = Dir(.FoundFiles(i))         myC.Offset(0, 2).Value = FileLen(.FoundFiles(i))         myC.Offset(0, 3).Value = FileDateTime(.FoundFiles(i))       Next i     End If   End With   Rows(i & ":" & Rows.Count).AutoFit   Columns("B:D").EntireColumn.AutoFit End Sub Sub Pict_Delete()   Dim myPic As Shape   For Each myPic In ActiveSheet.Shapes     If myPic.Type = msoLinkedPicture Then       myPic.Delete     End If   Next   Columns("B:D").ClearContents End Sub

zieonweb
質問者

お礼

merlionXX さま 回答ありがとうございます。 このマクロを実行したトコロ、問題なく、思い通りのエクセルシートが出来上がりました。 スマートな回答ありがとうございます。 この回答を実行するタイミングが遅くなり、返事が遅くなって申し訳ありませんでした。 また、質問を投稿した際に、ご縁があればまたよろしくお願いします。

関連するQ&A

  • エクセルでマクロを作りたいのですが上手くいきません

    エクセルで会社で使うファイルを作成していますが、ファイルサイズが大きくなりすぎたので、こういうマクロが作れないかと調べていたのですが、やり方がわからないので困っています。 わからないのは、入力シートのA列にデータを入力して、シート2のB列に自動的に表示する ことを自動的にやってくれるマクロです。 今はIF関数をシート2に入力している状態ですが、セルに関数を入れる方法だとファイルサイズが大きくなりすぎてしまいます。 (IF関数をあらかじめ入力しておくセル数がとてもたくさんある為) なお、入力シートA列がブランクの場合は、シート2のB列には何も表示されないようにしたいです。 大変困っております。よろしくお願いします。 

  • 【マクロ】Excelでコンタクトシートを作成

    Excelを用いコンタクトシートのような配列で 画像を挿入(複数)させるマクロを作成したいのですが 「縦5枚×横3枚」のような配列にする時に 「横3枚」挿入させる方法がわかりません。 ご教授お願い申し上げます。 Q:下記のような配列で画像を挿入するには? -------------------------------------------    A   B   C   D   E   F 1     01.jpg    02.jpg    03.jpg 2 3     04.jpg    05.jpg    06.jpg 4 5     07.jpg    08.jpg    09.jpg 6 7     10.jpg    11.jpg    12.jpg 8 9     13.jpg    14.jpg    15.jpg 10        ---次ページ--- 11    16.jpg    17.jpg    18.jpg 12 13    19.jpg    20.jpg    21.jpg 14 15    22.jpg    23.jpg    24.jpg 16 17    25.jpg    26.jpg    27.jpg 18 19    28.jpg    29.jpg    30.jpg 20        ---次ページ--- 21    31.jpg    32.jpg    33.jpg 22 23    34.jpg    35.jpg    36.jpg 24 25    37.jpg    38.jpg    39.jpg ・ ・ ・ ・ ------------------------------------------- ※画像挿入のマクロに関してはこちら↓の質問を参考にしています。  質問番号:4676078  「エクセルで写真挿入 マクロ」  http://oshiete1.goo.ne.jp/qa4676078.html ※画像はJPG形式に限りません。(BMP、GIF等も) ※コンタクトシート作成ソフトは使いませんので  必ずExcelでマクロを使用する方法をご回答願います。

  • 複数のエクセルファイルを1つのエクセルファイルのシートにコピーをマクロ

    複数のエクセルファイルを1つのエクセルファイルのシートにコピーをマクロで行いたい。 マイドキュメントのデーターというフォルダ内に エクセルファイルA(シート名みかん) エクセルファイルB(シート名りんご) エクセルファイルC(シート名バナナ) エクセルファイルD(シート名ぶどう) エクセルファイルE(シート名いちご) があります。 雛形は同じです。すべてA列~F列までデータが入っています。 行数はファイルによって違います。 また毎日自動で上書き更新され、毎日行数が変わります。 エクセルファイルZがあります。シートが7個あります。 ・変換 ・集計 ・みかん ・りんご ・バナナ ・ぶどう ・いちご エクセルファイルZを開きます。(各シートには昨日のデータが貼り付けてあります。) マイドキュメントのデーターフォルダも開いておきます。 エクセルファイルZにおいて「マクロの記録」を起動。 エクセルファイルZの 【みかん】~【いちご】までの5シートを全データDELETEします。 開いてあるフォルダ「データー」の中からエクセルファイルAを開きます。 (タスクバーにいます) ファイルAのシート【みかん】の全データ選択して エクセルファイルZの【みかん】というシートのA1セルにカーソルを あわせて貼り付けします。 開いてあるフォルダ「データー」の中からエクセルファイルBを開きます。 (タスクバーにいます) ファイルBのシート【りんご】の全データ選択して エクセルファイルZの【りんご】というシートのA1セルにカーソルを あわせて貼り付けします。 これと同じ操作を【バナナ】【ぶどう】【いちご】も行います。 エクセルファイルZにおいて「マクロの記録」を終了させます。 マクロができあがりました。 ファイルZを上書き保存して終了。再立ち上げで記録したマクロを実行。 エラーにはなりませんが、ファイルZの5種類各シートに ファイルA~Eのデータが貼りつきません。 何か無理な事をしているのでしょうか? もしかしてシート名が同じだと駄目?とためしにファイルZのシート名【みかん】~【いちご】を 【みかんZ】~【いちごZ】に変更してマクロを再記録しても 駄目でした。 よろしくお願いします。

  • エクセルのマクロについての質問です。

    エクセルのマクロについての質問です。 長文申し訳ございません。 Excelマクロが何度作り直してもうまく作動せず非常に困っております。 (1)ファイルAのシート1のDB列3行目に1の値をいれます。 (2)ファイルAのDC列172行目の値をファイルBのシート名が「1」のシートのD列4行目に入れます。 (3)ファイルAのDC列2733行目の値をファイルBのシート名が「1」のシートのD列6行目に入れます。 (4)ファイルAのDC列3128行目の値をファイルBのシート名が「1」のシートのD列7行目に入れます。 (5)ファイルAのシート1のDB列3行目に1.2の値をいれます。 (6)ファイルAのDC列172行目の値をファイルBのシート名が「1.2」のシートのD列4行目に入れます。 (7)ファイルAのDC列2733行目の値をファイルBのシート名が「1.2」のシートのD列6行目に入れます。 (8)ファイルAのDC列3128行目の値をファイルBのシート名が「1.2」のシートのD列7行目に入れます。 (9)以上のようにファイルAのシート1のDB列3行目に入れる値を0.2ずつ増やしていき、その値に対応したファイルBのシートに上記のように値を入れていくという動作を20まで繰り返す。 以上のようなマクロを作る事は可能でしょうか? マクロについて勉強はしているのですが上手く使いこなせず苦労しております。 長文の質問で大変申し訳ございませんがよろしければ皆さまのお知恵をお貸しください。 宜しくお願い致します。

  • エクセルマクロで特定シートの特定セルの中身取得

    エクセルのマクロで、ファイル選択(GetOpenFilename)で取得したファイルの特定のシート(sheet1等固定のシート名)とそのシートの特定のセル(A1等固定のセル)にある数値を取得し、マクロ起動したエクセルのあるセルに貼り付けたいのですが、どうすればよいでしょうか。 かなり略してますが、 nama=GetOpenFilename で選択したファイルのファイル名を Range("A1") = Dir(name) で貼り付け、その横のセル(A2)に name#sheet!A1を貼り付けたいのです。 ご存知な方、すみませんが教えていただけますでしょうか。 (エクセルは2003です。)

  • エクセルマクロで日付検索について

    エクセルのマクロで日付を検索するマクロについて質問です。 ブックAのシート1のA列に A1 2017/3/13 A2 2017/4/1 A3 2017/4/19 A4 2017/5/16 A5 2017/7/17 A6 2017/9/5 というような日付が入っています。 ブックBのシート1のA1セルに2017/6/3と入力してマクロを実行した際に その日付に一番近い一つ前の日付を探し、見つけた日付のB列のセルを ブックBのシート1のA2セルに表示したいです。 今回の例であれば2017/6/3に対してブックAのシート1のA列はA4セルが当てはまり その当てはまったA4セルの1つ横のB4セルの内容をブックBのシート1のA2セルに表示するということです。 よろしくお願いします。

  • エクセル・マクロ・・・シート名の取得等

    エクセル・マクロ・・・シート名の取得等 エクセルのマクロで質問です。 ほぼ初心者です。 社内データの処理をしたいと考えています。 マクロを組みたいエクセルブックの構成としては・・・ シート名一覧 集計シート 操作 という3つのシートがあり、 その後ろに各社員のデータシートがあります。 山田太郎 田中花子 ・ ・ ・ 部署により社員数が異なるためシートの4枚目以降は そのエクセルファイルによりシート数が異なります。 やりたいことは以下の2点です。 (1)シート名(社員名)の取得 シート名一覧に各シート名を一行ずつ入れて 一覧を作りたいです。 シート名取得&リスト化のマクロは大体わかりますが、 「シート名一覧」、「集計シート」、「操作」の3つのシート名は 一覧から外したく、どうしたらいいのかわかりません。 また、各シート名を取得した列の横の列に 各社員のシートにあるデータの一部(セルC5:C8)を 貼り付けたいです。 (2)集計シートに各社員のシートのD列の情報(D6:D43)を順に貼り付けていく。 シート名や数が固定されたものであれば何とかできそうなのですが、 不特定になるとどうしたらよいかさっぱりわかりません。 どなたかご教授お願いいたします。

  • Excelのシートへのリンク

    Excelのブックにあるシート名をA列のセルに入れてあります。これをシートにリンクさせたいのですが、マクロで簡単にできませんか?現状は、1つ1つ、ハイパーリンクしています。

  • EXCELのマクロでテキストを読み込む方法

    EXCELのマクロを使って、テキストファイルから、ある文字列を検索し、コピーしEXCELのシートのセルにペーストするマクロの書き方をご存知の方は、ご教示願います。 例えば、テキストファイル中の「dog」という文字列を検索して、EXCELの決まったセル(A、1)にコピペするというマクロです。 よろしくお願い申し上げます。

  • エクセルのマクロ

    あるエクセルのファイルにLIST(A列に呼びだすエクセルファイル名、B列からD列に呼びだしたエクセルに貼り付ける文字列があり、それが100行程度ある)があり、そのLIST A列に書かれているエクセルファイルを開き、その開いたエクセルファイルのある特定のセルにB列からD列にあるセルをそれぞれに貼りつける作業を繰り返すようなマクロはできないでしょうか? [流れ] LISTに書いてあるエクセルファイルを呼び出す→文字列を貼りつける→保存(できれば名前を変えて保存(その場合は、LISTのE列に名称を記載)→閉じる→次のLISTのエクセルファイルを開く→それをLISTの最後の行まで終わるまで繰り返す。 よろしくお願いします。

専門家に質問してみよう