Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Microsoft 365)
「リンクされたイメージを表示できません」の対処法について
投稿日時: 24/03/28 13:48:28
投稿者: デイビーダック

エクセル2019での「リンクされたイメージを表示できません」の対処法について
エクセル365でマクロを使用して画像を挿入しました。
下記のコードでを挿入したデータを送ったのですが
相手のパソコンでは画像が表示されず、「リンクされたイメなにかージを表示できません」と表示されるそうです。
なにか解決策はないでしょうか。よろしくお願い致します。
 
Sub 画像挿入()
    Dim shName As String: shName = "資料" 'シート名を記述
    Dim folderName As String: folderName = "画像" 'フォルダ名を記述
    With Worksheets(shName)
        Dim lastRow As Long
        lastRow = .Cells(Rows.Count, 1).End(xlUp).Row
        Dim i As Long
        For i = 2 To lastRow
            Dim id As String: id = .Cells(i, 1).Value
            .Rows(i).RowHeight = 100
            Dim myFileName As String: myFileName = Dir(ThisWorkbook.Path & "\" & folderName & "\*" & id & "*")
            If myFileName <> "" Then
                 With .Pictures.Insert(ThisWorkbook.Path & "\" & folderName & "\" & myFileName)
                    Const toClm As Long = 2 '画像を挿入は2列目
                    .Top = Worksheets(shName).Cells(i, toClm).Top
                    .Left = Worksheets(shName).Cells(i, toClm).Left
                    .Height = Worksheets(shName).Cells(i, toClm).Height
                    .Placement = xlMoveAndSize
                End With
            End If
        Next i
    End With
End Sub

投稿日時: 24/03/28 14:29:54
投稿者: デイビーダック

追伸
画像が表示されないという相手のファイルを送りなおしてもらいましたが、こちらでは普通に表示されました。
なにか相手側の設定の問題なのでしょうか。
 

回答
投稿日時: 24/03/28 15:03:36
投稿者: simple

あなたのPCにある画像にリンクされており、
相手のPCからはそれにアクセスできないことが原因です。
 
https://www.moug.net/tech/exvba/0120020.html
(の最後のあたり)を参考にして、画像そのものをシートに挿入する方法に変更することを
推奨します。

回答
投稿日時: 24/03/28 17:22:18
投稿者: simple

説明が後先になりましたが、一応説明しますと次のとおりです。
 
リンクする方式で画像をブックに挿入すると、
画像の情報はそのブックには含まず、
リンク先の情報を常に読み込んで表示することになります。
 
そのメリットは、ブックの容量が小さくて済む(画像情報を持たないため)ということです。
 
一方で、今回のように、リンク先のファイルを同時に送ったりしなければ、
そのブックを受け取った人は、リンク先の情報にアクセスできないので、
結果として画像が表示できないのです。
 
そのあたりの得失を考えて、
・リンク方式にするか、
・画像をブックに取り込む方式にするか、
を選択する必要があります。
今回の場合は、後者にするとよいでしょう。
 
画像をブックに取り込む方式については、
即効テクニックの記事(URLを書きました)を参考にして、
同じようにするとよいでしょう。(先述したとおりです)

回答
投稿日時: 24/03/29 08:12:33
投稿者: simple

念のためコードも書いておきます。
挿入部分のコードは以下のとおりです。

        With .Pictures.Insert(ThisWorkbook.Path & "\" & folderName & "\" & myFileName)
            .CopyPicture
            .Delete
            Worksheets(shName).Paste
        End With
        With Selection
            .Top = Worksheets(shName).Cells(i, toClm).Top
            .Left = Worksheets(shName).Cells(i, toClm).Left
            .Height = Worksheets(shName).Cells(i, toClm).Height
            .Placement = xlMoveAndSize
        End With

投稿日時: 24/03/29 10:32:17
投稿者: デイビーダック

simple様
 
ご回答ありがとうございます。
返答が遅くなり申しわけありません。無事に解決致しました。
ありがとうございました!