[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『社員リストに社員番号に応じた画像を挿入したい』(hishimatsu)
教えてください。
150名ほどの社員一覧リストを作成したいのですが、社員番号に応じて顔写真を表示したいと思っています。
具体的にはB列に社員番号を入力すると、同じ行のA列に写真がセルのサイズ内におさまって挿入されるようにしたいです。(小さすぎずセルの中で縦横の比率を変えず最大化)
顔写真のファイルはC:\Users\ユーザー名\Desktop\社員画像\というフォルダの中に
「社員番号.jpg」の形式で格納されています。
A列 B列
社員画像 社員番号
1111.jpg 1111
1112.jpg 1112
1113.jpg 1113
こんな感じで画像を表示したいのですが、良い方法はないでしょうか?
< 使用 Excel:Excel2010、使用 OS:Windows7 >
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count = 1 And Target.Column = 2 Then With Pictures.Insert("C:\Users\ユーザー名\Desktop\社員画像\" & Target.Text & ".jpg") .Left = Cells(Target.Row, "A").Left .Top = Cells(Target.Row, "A").Top .Width = Cells(Target.Row, "A").Width If Cells(Target.Row, "A").Height < .Height Then .Height = Cells(Target.Row, "A").Height End If End With End If End Sub (???) 2014/03/07(金) 14:59
衝突しましたが、ボタン押下げのほうが私もいいと思う、ということでそっちの提案。 Sub hishimatsu() Dim last_row As Long Dim i As Long Dim tmpPic As Shape last_row = Range("A" & Cells.Rows.Count).End(xlUp).Row Const P_Path = "C:\エクセルの学校\hishimatsu\" For i = 1 To last_row Set tmpPic = ActiveSheet.Shapes.AddPicture( _ Filename:=P_Path & Cells(i, "B").Value & ".jpg", _ LinkToFile:=True, _ SaveWithDocument:=False, _ Left:=Cells(i, "A").Left, _ Top:=Cells(i, "A").Top, _ Width:=0, _ Height:=0) With tmpPic .LockAspectRatio = True .ScaleHeight 1!, True If .Height / Cells(i, "A").Height > .Width / Cells(i, "A").Width Then .Height = Cells(i, "A").Height Else .Width = Cells(i, "A").Width End If End With Next i End Sub (稲葉) 2014/03/07(金) 15:24
ご教授ありがとうございます。
稲葉様
当方VBAのことはまるで分らず、初歩的な質問ですみませんが、
「押下げで一気に」とはどういう意味でしょうか?
また「"C:\エクセルの学校\hishimatsu\"」のところを変更してマクロを実行してみたのですが
「400」というエラーが返ってきて途方に暮れております。
どのようにすればよいのか、もう一歩教えてください。
よろしくお願いします。
(hishimatsu) 2014/03/07(金) 17:29
「押下げで一気に」は私の言葉ではないが・・・ フォームボタンや図にマクロを登録し、クリックした時に1度だけ実行されるマクロのことです。
400エラーについては、2010で互換性ブックを使用していると推測・・・ http://plaza.rakuten.co.jp/mscrtf/diary/201303120000/ こちらを試してみてください。
分からなければステップ実行で何行目にエラーが出るとかもう少し情報頂かないとこちらも対応 出来ません。 (稲葉) 2014/03/10(月) 08:55
お邪魔します。 400エラーとは別件ですが、下記は、A列でなくB列? >last_row = Range("A" & Cells.Rows.Count).End(xlUp).Row (マナ) 2014/03/10(月) 20:44
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.