[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『画像一覧表示(Shapes.Add メソッド)』(AURYU)
はじめて投稿させていただきます。
VBAについて無知のものですが、できましたら教えていただけますと
大変助かります。よろしくお願いします。
【質問内容】
エクセルで画像ファイル名(必要ならパス含む)一覧を作り、
その横にセルの枠に収まるように画像を挿入させて画像一覧の表を作りたいです。
画像は使わないものも含めて全て同じフォルダに入っています。
下記のコードを見つけ、試してみたところ、希望通りのことができましたが、
他のPCで画像が表示されず、困っています。
リンクとして挿入されているので、他PCで共有できないから「Shapes.Add メソッド」を使用してください。と検索では出てきたのですが、コードを編集できるほど知識がないので、お力をお貸しいただけませんでしょうか?
ーーー↓見つけたVBAですーーー
Sub 画像挿入リンク()
Application.OnKey "^%{B}", "image_paste"
End Sub
Function image_paste()
Dim w_address As String
Dim hako As Variant
Dim i As Long
Dim start_row
Dim start_column
w_address = Selection.Address
start_row = Selection(1).Row
start_column = Selection(1).Column
hako = Selection
If Selection.Count = 1 Then
If hako <> "" Then If IsError(hako) = False And IsNumeric(hako) = False Then If Dir(hako) <> "" Then ActiveSheet.Pictures.Insert(hako).Select Selection.Left = Range(Cells(start_row + i - 1, start_column + 1), Cells(start_row + i - 1, start_column + 1)).Left Selection.Top = Range(Cells(start_row + i - 1, start_column + 1), Cells(start_row + i - 1, start_column + 1)).Top End If End If End If Else For i = 1 To UBound(hako) If IsError(hako(i, 1)) = False And IsNumeric(hako(i, 1)) = False Then If Dir(hako(i, 1)) <> "" Then
ActiveSheet.Pictures.Insert(hako(i, 1)).Select Selection.Left = Range(Cells(start_row + i - 1, start_column + 1), Cells(start_row + i - 1, start_column + 1)).Left Selection.Top = Range(Cells(start_row + i - 1, start_column + 1), Cells(start_row + i - 1, start_column + 1)).Top End If End If Next i End If Range(w_address).Select End Function
End Function
ーーーここまでーーー
以上です。
よろしくお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows10 >
>試してみたところ、希望通りのことができましたが、
本当ですか?
(マナ) 2019/03/09(土) 18:54
Option Explicit
Sub test() Dim c As Range Dim r As Range
For Each c In Selection If Dir(c.Value) <> "" Then Set r = c.Offset(, 1)
With ActiveSheet.Shapes.AddPicture( _ Filename:=c.Value, _ LinkToFile:=False, SaveWithDocument:=True, _ Left:=r.Left, Top:=r.Top, _ Width:=-1, Height:=-1)
If r.Width / .Width < r.Height / .Height Then .Height = .Height * r.Width / .Width .Top = r.Top + (r.Height - .Height) / 2 Else .Width = .Width * r.Height / .Height .Left = r.Left + (r.Width - .Width) / 2 End If End With End If Next
End Sub
(マナ) 2019/03/09(土) 19:55
いただいたもので試してみたところ、理想通りの結果になりました。
大変助かりました!
お早い回答ありがとうございました!
(AURYU) 2019/03/09(土) 20:25
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.