電子書籍の厳選無料作品が豊富!

ご覧いただきありがとうございます。
以前、「ダイアログボックスを開き画像ファイルを選択、1行目が見出し行になっている表のB2から6行ごとに結合したセルに画像を挿入し、隣のC列(6行ごと結合)に画像ファイル名(拡張子なし)が入る表を作る」という件で以下のコードを作成していただいたのですが、
画像がリンク貼り付けになってしまい、メール等で送信すると見れなくなってしまいます。
リンクではなく画像として挿入するためにはどうしたらいいでしょうか?
詳しい方、よろしくお願いいたします。

Sub Sample()
Dim i As Long, fileName As String
Dim rng As Range, sItems

With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Select Image Files"
.Filters.Clear
.Filters.Add "Image Files", "*.GIF; *.JPG; *.BMP; *.PNG; *.TIF", 1
.AllowMultiSelect = True
If .Show = 0 Then Exit Sub
Set sItems = .SelectedItems
End With

For i = 1 To sItems.Count
fileName = Dir(sItems(i))
Set rng = Cells(i * 6 - 4, 2)
rng.Offset(, 1).Value = Left(fileName, InStrRev(fileName, ".") - 1)
Set rng = rng.MergeArea

With ActiveSheet.Pictures.Insert(sItems(i))
.Left = rng.Left
.Top = rng.Top
.Placement = xlMoveAndSize
.ShapeRange.LockAspectRatio = msoFalse
.ShapeRange.Width = rng.Width
.ShapeRange.Height = rng.Height
End With
Next i
End Sub

A 回答 (2件)

No1です。



もともとはこれ(↓)ですよね?
https://oshiete.goo.ne.jp/qa/13930981.html
質問者様がご提示の方法をそのまま踏襲した回答にしてありますので、Pictures.Insertでの挿入方法を取っていました。


>Shapes.AddPictureの場合は画像サイズの指定しなければいけないので。。。
全体でセルサイズに合わせるように指定しているのですから、そのまま指定すれば良いだけです。
 With ~~ End With
の内容をまとめて、以下の1文で済ませられます。

ActiveSheet.Shapes.AddPicture sItems(i), False, True, rng.Left, rng.Top, rng.Width, rng.Height

あるいは
>Set rng = rng.MergeArea
のセンテンスも含めてしまって、

With rng.MergeArea
ActiveSheet.Shapes.AddPicture sItems(i), False, True, .Left, .Top, .Width, .Height
End With

でも良いでしょう。

ただし、上記では .Placement の属性設定はしていないので、そちらも必要であるなら追加で設定してください。
    • good
    • 0
この回答へのお礼

ご丁寧に詳細ありがとうございます!
こちら参考にさせていただきます!!

お礼日時:2024/11/18 12:10

こんばんは



ひょっとすると、私が回答したものかもしれませんね。

後からリンク形式を変更する方法は見つからなかったのですが、挿入する際に指定する方法に変えることで可能と思います。

具体的には、Pictures.Insertではなく、Shapes.AddPictureを用いて、第二、第三引数にFalse、Trueを指定しておけばリンクにはならないはずです。
この結果、ファイルに画像が埋め込まれるようになるので、容量は増加すると思います。
https://learn.microsoft.com/ja-jp/office/vba/api …
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
容量の増加は全く問題なく、Shapes.AddPictureの使用まではたどり着けたのですが、初心者のためそのあとのコードが全く分かりません。
上手くいかず、エラーになってしまいます。
Shapes.AddPictureの場合は画像サイズの指定しなければいけないので。。。
もう少し粘ってみようと思います。

お礼日時:2024/11/15 11:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A