Excel住所録に写真画像を取込む方法を教えて?

このQ&Aのポイント
  • Excel2007で作った住所リストのDBに顔写真などのjpeg画像を取り込む方法について教えてください。
  • 他のQ&Aサイトでの解答例を見ても、マクロを使わず画像を貼り付ける方法がわかりません。
  • 中級レベルでも理解できる具体的な手順を教えていただけると助かります。
回答を見る
  • ベストアンサー

Excel住所録に写真画像を取込む方法を教えて?

Excel2007で作った住所リストのDBのセルに、顔写真などのjpeg画像を取り込みたいのですが、他のQ&Aサイトにおける似た質問での解答例などを見ても、マクロを使わず“画像としての貼り付けは可能”なようですが、実際自分で試すと思うような結果が得られません。 高級なテクニックなど備わっていない中級レベルの者にも手順が理解できるように、具体にわかりやすく教えていただけたら、助かります。 たとえば、「DBlist」シートのA1からA5までの各セルにAA_aa,BB_bb,CC_cc,DD_dd,EE_eeの名前データがあり、 同シートのC1からC5までのセルに、「JpegData」シートのA1からA7までのセル欄にそれぞれがランダムにセル内貼り付けコピーされたjpeg画像(phAA_aa,phBB_bb,…,phGG_ggのファイル名を持つ画像が順不同で並んでいる)を、 名前に該当するセル欄に正しく読み込みコピー貼り付けする処理が、マクロを使わずC列にどういった関数処理式をあてはめればよいのでしょうか。 そしてそれは、、「DBlist」シートのA1からA6までの名前リストの順番が、たとえば≪A,B,C,F,E,D≫などと変わった場合でも、画像が連動してC列で正しく入れ替えられるのでしょうか。 慣れない質問で画像も添付できず、まどろっこしい表現で申し訳ございませんが、よろしくご教示ください。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

曖昧な書き方だったかもしれません。失礼しました。 「綺麗になる」は,「挿入の図のファイルから画像を挿入する」にかかります。 「挿入の図のファイルから」を,手動でやってもマクロで行っても,綺麗さは一緒です。 対比として「綺麗ではない」のは,たとえば「画像を画像ソフトなどで開いた画面からコピーしてエクセル画面に貼り付ける」などになります。 >出来上がった写真画像つきの住所リストをプリントすると、写真がこころもち幅が伸び、太った顔つきになる 元々エクセルは「実寸で印刷する」機能がとても弱いので,多くの場合にそういう事が起こります。 たとえば一般に使われているエクセルの設定のまま,セルのマス目を正方形のカタチに調整したり,オートシェイプで正方形(あるいは正円)を描いたり,あるいは「正方形を描いた画像」をエクセルシート上に配置して印刷すると,印刷結果はどれも正方形になっていません。 これも手動操作やマクロとは無関係に,エクセルの設定の問題になります。 お話が最初のご質問内容からだいぶどんどんズレまくっていきますが,この問題を改善するには 1)エクセルの標準フォントをMS明朝に変えてエクセルを再起動する 2)ブックの標準スタイルのフォントをMS明朝に変える 3)画像を最初から挿入し直す という段取りが必要です。

Ata-bo-yo
質問者

お礼

keithin様、素人発想の質問にも丁寧にお答えいただき、重ね重ねありがとうございました。 たしかに、小生にも“元々エクセルは「実寸で印刷する」機能がとても弱い”のは実態として感じており、これまでも大分泣かされてきておりますので、ま、エクセルの生まれつきの個性と、あきらめるよりほかにないのでしょうね。 今回の住所録は、多くのデータをコンパクトにレイアウトするために通常の表スタイルでない仕様をしている関係上、フォントをMS明朝に統一できないため、画像の少々のゆがみは十分我慢の範疇として受け入れる所存です。 今回はおかげさまで、とりあえず、70件近くのある名簿をその写真画像添付の住所リストとして、トライし実現できましたので、手持ちの1500件オーダーのリストもおいおいそれに切り替えようと思っております。 それにしても、このエクセルの持つ画像の課題の解決に、標準フォントをMS明朝にする策などをお知りになっている匠には、まさに敬服の一語です。改めて、エクセルは奥深い、そしてまた、それを極めているエキスパートもまた、奥深い…。感謝、感謝。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

正直マクロを使った方が遙かに簡単なので,だれか親切な人がマクロを書いてくれたら,それをうまうまといただいてしまった方がお薦めです。 頑張って自分でやってみたいのでしたら,次のような段取りになります。判りやすく説明はしますが手順自体複雑なので,よく理解して進めてください。 基本の参考資料: http://officetanaka.net/excel/function/tips/tips14.htm まず一度ご自分のヤリタイ事を離れて資料の手順のその通りに実施してみて,完全に資料の通りに実現できるよう練習してください。 ここできちんとマスターしておくべき事は,次の4点です 1.図を置いたセル範囲に名前を定義すること 2.画像を切り替えるシクミの名前を定義すること 3.図のリンク貼り付けをすること 4.表示領域の式を書き換えること 実際の手順: 添付図右はそれぞれ丸や三角の絵を配置してあり,それぞれのセルに「maru」「sankaku」「shikaku」と名前が定義してあります。 添付図左は各行B列に名前をセルのデータとして記入し,更にC列には「図のリンク貼り付け」を各行に配置してあります。 画像を切り替えるシクミの名前の定義は, 画像1 =INDIRECT(Sheet1!$B$2) 画像2 =INDIRECT(Sheet1!$B$3) 画像3 =INDIRECT(Sheet1!$B$4) のように定義します。 C2セルのリンク図の表示領域の式を =画像1 C3セルのリンク図の表示領域の式を =画像2 C4セルのリンク図の表示領域の式を =画像3 のようにそれぞれ書き換えます。 さらにC列各セルの図を右クリックして図の書式設定のプロパティで ○セルに合わせて移動やサイズ変更をしない に設定しておきます。 以上の段取りを間違いなく作成すると,リストの並べ替えに追従して画像が自動で差し替わってくれます。 #補足 綺麗に画像を表示するには,手動やマクロを使って「画像の挿入」(挿入タブの図)を行います。 どういう意図からご質問でそういう言葉を使ったのか不明ですが,シートに「画像を貼り付ける」と画質が劣化したり,ブックの容量が非常に大きくなってしまうなどの不都合の原因になります。

Ata-bo-yo
質問者

お礼

keithin様、早速の丁寧なご回答ありがとうございました。 記載されている参考資料にあるofficetanakaの例もトライし、それ自体は実現できるのですが、いざ自分の作業にあてはめようとすると暗礁に乗り上げておりました。 今回の丁寧な手順のアドバイスをいただき、気持ちを入れなおしてこの何日か再度挑戦してみようと思っております。 結果はまたご報告し改めての御礼をと思いますが、まずは取り急ぎ、懇切丁寧なご教示へのとりあえずの御礼まで。 ありがとうございました。

Ata-bo-yo
質問者

補足

keithin様、震災後の心落ち着かぬ日々が多かったこともあり、大分時間を置いてしまいましたが、ご教示された内容にしたがって再挑戦してみましたら、完璧に実現しました。その時は実際、小躍りしたかのような感激だったのを覚えております。丁寧なご指導ありがとうございました。 この間何度かの試行例で試したあとで、100件ほどの住所リストに、写真のないデータ欄には空白画像を適用するなど、リストデータの入れ替え等にも連動できる期待通りの内容に出来上がりました。感謝でいっぱいです。 仕組みを作る上では、オートリフィル的なことができない、件数データごとに名前を定義することが少々大変ですが、一度作っておけば他にも準用できるので、これからも重宝しそうです。 本当にありがとうございました。 当然《ベストアンサー》に選ぶつもりですが、ご縁を活かして、一点アドバイスをいただけますよう、よろしければ以下、補足質問をさせていただきます。 keithin様が解答の補足にお書きになりました…、 “綺麗に画像を表示するには,手動やマクロを使って「画像の挿入」(挿入タブの図)を行います” というご指摘は、マクロでの取り扱いのほうが画像がきれいということなのでしょうか。 確かに、今回のマクロを使わないケースでは、出来上がった写真画像つきの住所リストをプリントすると、写真がこころもち幅が伸び、太った顔つきになる傾向が若干気になっております。 マクロで扱うと例えばその不都合を無くせるのでしょうか。その理屈がよくわかりません。素人にもわかる内容でその背景を一言でも教えていただけたらありがたいのですが…。 それによっては別途、折を見てマクロへのトライにも、挑戦してみようとおもいますので。

関連するQ&A

  • Excel2003で他の列のデータをドロップダウンリストに

    質問のし直しです。 下記の場合、B列でのドロップダウンリストに(aa bb cc dd ee)と表示させるには、どうしたら良いのでしょうか? A列  B列 bb     dd aa     ee bb     ee cc    dd aa bb 実際には文字列なのですが、1300行で、A列のデータは300個位在ります。 宜しくお願い致します。

  • エクセルの集計計算について教えてください

    期間を指定するとデータを引っ張ってきます データは1000~2000件程存在します Aセル=名前 Bセル=略号 Cセル=日時 Dセル=場所 Eセル=不良合計 名前    略号       日時            場所    不良合計 A0001     AA   2014/06/01 00:04:28   1     7 A0010     BB   2014/06/01 00:18:10   2     3 A0011     DD   2014/06/01 00:29:35   4     8 A0001     EE   2014/06/01 00:24:55   2     9 A0005     CC   2014/06/01 00:29:35   3     4 A0010     BB   2014/06/01 00:27:09   2     6 A0020     AA   2014/06/01 00:32:13   1     4 A0001     AA   2014/06/01 00:33:26   3   3 A0020     EE   2014/06/01 00:37:31   5  17 A0016     FF   2014/06/01 00:47:22   6   7 A0030     BB   2014/06/01 00:54:35   2   3 A0015     AA   2014/06/01 01:01:11   1   2 A0001     DD   2014/06/01 01:03:01   4   8 A0020     EE   2014/06/01 01:06:21   5   11 A0011     BB   2014/06/01 01:08:19   2   4 A0005     DD   2014/06/01 01:17:20   4     13 A0011     BB   2014/06/01 01:22:41   2   8 A0016     AA   2014/06/01 01:23:47   1   2 A0010     CC   2014/06/01 01:25:08   3   11 .... 名前が同じ物でも、場所が異なると略号が変わってしまいます。 流れとしてはA001の物が場所1→2→3と進んで行きます。    名前   略号         日時         場所      不良合計 A0001   AA   2014/06/01 00:04:28   1   2 A0001   BB   2014/06/01 01:04:28   2   4 A0001   CC   2014/06/01 02:04:28   3   8 A0001   DD   2014/06/01 03:04:28   4   10 不良合計に関しては、前の物が加算されていく形になっています。 数千あるこのようなデータを今手計算で、場所毎の不良数を求めています。 例を挙げますと、上の4つのデータの場合 DDの不良合計とCCの不良合計を引いて、DDの不良合計は2 CCの不良合計とBBの不良合計を引いて、CCの不良合計は4 BBの不良合計とAAの不良合計を引いて、BBの不良合計は2 A0001   AA   2014/06/01 00:04:28   1   2 A0001   BB   2014/06/01 01:04:28   2   2 A0001   CC   2014/06/01 02:04:28   3   4 A0001   DD   2014/06/01 03:04:28   4   2 と言う形に手計算で置き換えてします。 ただ、数が膨大であり、名前に関しても同じ名前が1つではなく複数使われている事もあり計算が大変です。 何とか楽に計算する方法はないでしょうか? VBA?を使用してでもいいので、短時間で出来る集計方法があれば教えてください。

  • Accessで2つのカラムからユニークに抽出

    inusrとoutusrからメールアドレスの一覧として aa@aa.com bb@bb.com cc@cc.com dd@dd.com ee@ee.com が取得できるようにするためのSQLを教えてください。 select b,c from inusr left join outusr on b=c ? に似たようなSQLになると思います。 テーブルは以下のようなものです。 できれば上に書きましたSQLのようにbとcに分かれてしまうのではなく 1つの変数で結果を取得したいです。 inusr a b 1 aa@aa.com 2 bb@bb.com 3 aa@aa.com 4 dd@dd.com 5 ee@ee.com outusr a c 1 cc@cc.com 2 bb@bb.com 3 ee@ee.com 4 aa@aa.com 5 ee@ee.com

  • sheet1(1月)からsheet12(12月)をsheet13(H17年度)に集計したい

    sheet1(1月) A   B  C 1 得意先  銀行  金額 2 aa社 xx 50 3 cc店 yy 30 4 ee社 xx 20 sheet2(2月)   A B C 1 bb zz 50 2 ee xx 30 3 cc yy 50 4 dd ww 30 目的のsheet sheet13(H17年度) A     B    C    D 1 得意先  1月   2月   3月 2 aa社   50   3 bb社 50 4 cc社 30 50 5 dd社 30 6 ee社 20 30

  • 条件成立時に列Cの値を列Aにコピーしたい

    同一行の列Bの値が、ある値(後述例の場合、"○")と完全一致のとき、 列Cの値を列Aにコピーさせたいのですが、マクロでどのようにループを 組むか教えてください。 Excelのバージョンは2007です。 マクロ実行前 <列A>   <列B>   <列C> 項目A    項目B    項目C ああああ          AA いい     ○      BB ううう           CC ええええ   ○      DD お             EE マクロ実行後 <列A>   <列B>   <列C> 項目A    項目B    項目C ああああ          AA BB     ○      BB ううう           CC DD     ○      DD お             EE

  • C#でのリストへの変数の格納

    namespace HtmlCreater { public partial class Form1 : Form { public Form1() { InitializeComponent(); } string aa = "xxx"; string bb = "xxx"; string cc = "xxx"; string dd = "xxx"; string ee = "xxx"; //リスト作成 ArrayList list = new ArrayList(); フォーム作成 aaForm form = new aaForm(aa, bb, cc, dd, ee); list.Add(form); string firstItem = (string)list[0]; Console.WriteLine(firstItem); } class aaForm(string aa, string bb, string cc, string dd, string ee) { String a = "aa"; String b = "bb"; String c = "cc"; String d = "dd"; String e = "ee"; } } } 以上のようなプログラムを使って、リスト list に変数aa,bb,cc,dd,eeを格納したいと考えています。 が、コンパイルすると以下のようなエラーメッセージが表示されます。 識別子が必要です。キー ワードは 'string' です。 無効なトークン '(' が クラス、構造体またはインターフェイスのメンバ宣言で使用されています。 波線はString a = "aa" String b = "bb" String c = "cc" String d = "dd" String e = "ee"にかかっています。 ここで必要な識別子とはなんでしょか?また、その他おかしいところはあるのでしょうか? ご存知の方がいたらご教授宜しくお願いします。

  • エクセルのセル分けについて教えてください。

    エクセルで、1つのセルに  aa,"bb","cc,"dd","ee" というように入力されています。 それをaa bb cc のようにそれぞれのセルに分けたいのですが、方法が分かりません。 ご存知の方がいらっしゃいましたら、教えてください。宜しくお願いします。

  • 二つのデータを一つにデータにしたい

    題名の通りです。 二つのシートに、個人のデータが入っています。 二つのシートの両方に入力されている人もいれば、片方にしか入力されてない人もいます。 この二つのシートのデータから、一つの、全員のデータの入ったシートを作りたいのですが、何か良いやり方はないでしょうか? もちろん、両方に入力されている人は、一つのデータです。 また、項目も片方にしかない項目と、両方にある項目があります。 数が多いため、手入力だと時間がかかってしまいますので・・・ 文だと説明しにくいので、図を書いてみます。 シート1 ID 名前 住所 〒 1   A  AA 111-11 2   B  BB 222-22 4   D  DD 444-44 シート2 ID 名前 住所 年齢 1   A  AA 11 3   C  CC 33 5   E  EE 55 これを シート3 ID 名前 住所 〒   年齢 1   A AA 111-11  11 2   B BB 222-22 3   C CC      33 4   D DD 444-44 5   E EE       55 としたいので、『データの統合』機能は試してみたのですが、数字じゃないと、うまくいかないようだったので・・ すみませんが、宜しくお願いします。 また、長い文、読んでくれてありがとうございます。

  • 2つのデータベースを連結させたい

    下記のように2つのデータベースを連結させたいのですが うまくいきません。 仕事で緊急なのでわかる方教えてください。 データベースはACCESSです。 テーブル1 A | B(日付) ---|---------- aa |2004/01/01 bb |2004/02/02 テーブル2 C | D(日付) ---|---------- cc |2004/03/03 dd |2004/04/04 ee |2004/05/05 結果 A | BD(日付) | C ---|----------|---- aa |2004/01/01| bb |2004/02/02| |2004/03/03| cc |2004/04/04| dd |2004/05/05| ee 宜しくお願いします

  • Google Chromeの同期について

    パソコンを2台使っていて、両方とも全く同じブックマークだった場合に同期をしたらブックマークは重複してしまうのでしょうか? PC1:A,B,C,D,E PC2:A,B,C,D,E を同期したら PC1:AA,BB,CC,DD,EE PC2:AA,BB,CC,DD,EE となりますか?