• 締切済み

ExcelVBA 縦横比を固定した画像の挿入

ExcelVBAを勉強している者です 早速ですが質問させて頂きます。 指定したファイルにある画像を挿入する際、 縦横比を固定して挿入したいのですが上手くいきません。 画像の横巾は300に指定したいので、縦の長さはソレが基準となります。 調べていくうちに LockAspectRatioプロパティをTrueにすると 比率を固定できるのは分かったので、組み込もうと試行錯誤して見ましたが 上手く動かせる所まで至りませんでした。 作成したコードのドコにそれを入れ込んだら上手く動くのかご指導頂きたく、 よろしくお願い致します。 当方はExcel2002を使用しております。 目的の動作 ●指定フォルダの中からセルG2と同じ名前の画像を挿入 ●セルG2の内容が変更されると発生するイベント ●画像はシートの左から100、上から50の位置に配置 ●画像の巾は300に設定。縦は比率を守り巾の300に合わせて調整 現在のコード Private Sub Worksheet_Change(ByVal Target As Range) Const foldnm = "C:\Documents and Settings\●●●\My Documents\My Pictures\抽出用写真\" Application.ScreenUpdating = False '画面の更新を停止 With ActiveSheet.Pictures.Insert(foldnm & Range("G2").Value & ".jpg") .Left = 100 '左位置100 .Top = 50 '上位置50 .Width = 300 '画像巾300 End With Application.ScreenUpdating = True '画面の更新を再開 End Sub

みんなの回答

  • turuzou
  • ベストアンサー率33% (15/45)
回答No.1

下記が参考になりそうですよ エクセル技道場>マクロ http://www2.odn.ne.jp/excel/waza/macro.html の マクロで画像挿入 http://www2.odn.ne.jp/excel/waza/macro.html#SEC27

souko3
質問者

お礼

ご回答有難う御座います。 お返事が遅くなってしまい、大変申し訳有りません。 今までご紹介頂きましたサイトを拝見しつつ、他にも調べておりました。 結果、ようやく目的の動作が出切る様になりました。 しかし・・・なぜ上手く動いたのかがよく理解できておりません(泣 実際のところ、前回のコードと表記方法は違いますが、内容に大した 違いは無いはずなのですが。 もう脳みそが煮えてしまいましたorz 一体どうして上手くいったのでしょうか・・・ Private Sub Worksheet_Change(ByVal Target As Range) Const foldnm = "C:\Documents and Settings\●●●\My Documents\My Pictures\抽出用写真\" Application.ScreenUpdating = False '画面の更新を停止 With ActiveSheet.Pictures.Insert(foldnm & Range("G2").Value & ".jpg") Dim Obj As Object '変数obj宣言、オブジェクト型 For Each Obj In ActiveSheet.DrawingObjects '選択中シートにある全オブジェクトで If TypeName(Obj) = "Picture" Then 'オブジェクト種が"Pictuer"だったら以下を実行 Obj.ShapeRange.Width = 300 '横幅300 Obj.ShapeRange.Left = 100 '左位置100 Obj.ShapeRange.Top = 50 '上位置50 '(★↑画像のデフォルト設定なのか、今回は横幅を変更した時点で縦も修正された) '(★でも、デフォルトなら何故に前回のコードでは修正されなかったのか・・・?) End If Next Obj End With Application.ScreenUpdating = True '画面の更新を再開 End Sub

関連するQ&A