[[20200421103347]] 『Pictures.Insertが画像のリンクになっている』(katanohosi) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『Pictures.Insertが画像のリンクになっている』(katanohosi)

 この構文で セルC7から1行間隔で、指定したフォルダ内の全部の写真を貼りつけていく作業をしました。
 s = 7
 tmp = Dir(ppath & "*.jpg")
       Do While tmp <> ""
            With ActiveSheet.Pictures.Insert(ppath & tmp)
                .Top = Range("C" & s).Top
                .Left = Range("C" & s).Left
                .Width = Range("C" & s & ":C" & s).Width
                .Height = Range("C" & s & ":C" & s).Height
            End With
            s = s + 2
           tmp = Dir()
       Loop
 結果は意図したように指定したセルの場所とサイズに合わせて貼りついたのですが、保存したファイルを開いた時、
 貼りつけ元のフォルダに写真が無いと、
「リンクされたイメージを表示できません。ファイルが移動または削除された可能性があります。
 リンクに正しいファイル名と場所が指定されていることを確認してください。」と表示されます。
 この内容は指定したセルに画像とリンクを貼っていることなんだと理解しました。
 しかし、手作業で挿入→画像→写真を選択して挿入したものは、マクロの記録でも
 ActiveSheet.Pictures.Insert("C:\Users\katan\Desktop\s\写真\IMG_2422.JPG"). _
とPictures.Insertで同じ構文ですが、リンクを貼ったのではなく写真を貼り付けているので、
 貼りつけ元のフォルダに写真が無くても写真は表示されます。
同じPictures.Insertを使っているのですが、VBAではどうすればリンクではなく貼り付けられるのか、教えてください。

< 使用 Excel:Excel2019、使用 OS:Windows10 >


https://excel-ubara.com/excelvba5/EXCELVBA226.html
m(_ _)m

(隠居じーさん) 2020/04/21(火) 11:11


 隠居じーさん さま

 早速教えていただき、ありがとうございます。

 Pictures.InsertをShapes.AddPictureをそのまま入れ替えるのではだめなんですね;
 もう少し考えてやってみます。
 上手くいくように頑張ってみます。

 とりあえずお礼申し上げます。ありがとうございます!
(katanohosi) 2020/04/21(火) 11:33

https://docs.microsoft.com/ja-jp/office/vba/api/excel.shapes.addpicture
こちらも参考になるかと。
設定方法等はよく似ていると思います。m(_ _)m
(隠居じーさん) 2020/04/21(火) 12:18

 え〜と、今ちょこっといじってみました ^^;
とりあえず、高さ、幅は-1、-1で読み込んで ← 実寸。。。多分
高さだけセルの高さを指定すれば同じような感じ
に成ったような気が。。。A^^;
m(_ _)m
でわ
Option Explicit
Sub AAA()
    Dim s, tmp, ppath, tate, buf
    ppath = "画像の有る実際のパス\"
    s = 7
    tmp = Dir(ppath & "*.jpg")
    With Worksheets(1)
        Do While tmp <> ""
            tate = .Cells(1).Height
            Set buf = .Shapes.AddPicture(ppath & tmp, False, True, _
                                         .Range("C" & s).Left, _
                                         .Range("C" & s).Top, -1, -1)
            With buf
                .LockAspectRatio = True
                .Height = tate
            End With
            s = s + 2
            tmp = Dir()
        Loop
    End With
End Sub
(隠居じーさん) 2020/04/21(火) 13:01

 隠居じーさん さま

 なんと!正解をいただいていたんですね!!

 今までパズル合わせのように没頭していました;
tmp = Dir(ppath & "*.jpg")
       Do While tmp <> ""
    Worksheets("拾得物件一覧簿").Shapes.AddPicture _
                fileName:=ppath & tmp, _
                LinkToFile:=False, _
                SaveWithDocument:=True, _
                Left:=Range("C" & s).Left, _
                Top:=Range("C" & s).Top, _
                Width:=Range("C" & s & ":C" & s).Width, _
                Height:=Range("C" & s & ":C" & s).Height
            s = s + 2
           tmp = Dir()
 ここまでやって、動作を確認したところでした。
 しかし、やはり上級者の方の構文はスッキリキレイですね。
 頂いた構文を使わせていただき、内容を勉強させていただきます。
 本当にご丁寧にありがとうございました。
 おかげさまでスッキリしました!!
(katanohosi) 2020/04/21(火) 15:04

 隠居じーさん さま

 縦横比率を保つこれが有りがたいです。

 .LockAspectRatio = True
(katanohosi) 2020/04/21(火) 15:41

 ごていねいに 。。。^^
ありがとうございます。
何気に、tateをA1セルの高さにしてしまいましたが、
"C" & s の 高さに合わせるべきでしたですね。
スンマソ、適当に変更してくださいね、でわでわ。
m(_ _)m ← 決して上級者ではございません。(#^.^#)v
(隠居じーさん) 2020/04/21(火) 15:46

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.