[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA画像挿入「リンクされたイメージを表示できません」』(たかふみ)
お世話になります。
VBAの画像挿入についてご質問致します。
環境情報(VBA初心者。Excel2016 Win10)VBAは改めて勉強しようと思います・・。
◆経緯
(1)ネットから探り、「特定のセルが変更(入力)されたとき、別の指定セルに入力された名称と同じ名称の画像を指定のフォルダからエクセルに貼り付けする」という、VBAをエクセルシートに用意。
(2)前述VBAを使ってファイルを複数個別に「xlsx」で保存。
(3)しかし、後日「Pictures.Insert」ではリンク貼り付けになることを知る。
◆質問
1.前述でリンク貼り付けされた画像を、通常の画像として修正できないでしょうか。(2)によって既に幾つかファイルが独立しているためです。
2.「Pictures.Insert」を別の方法で、画像として貼り付けできないでしょうか。条件は、貼り付けセル位置と、縦横サイズが指定です。
下記、使用したコードです。
Dim buf As String
If Target.Address(0, 0) = trgR Then
For Each shp In ActiveSheet.Shapes '既に表示されている画像を削除する処理
If Not Intersect(Range(insR), Range(shp.TopLeftCell, _
shp.BottomRightCell)) Is Nothing Then
shp.Delete
End If
Next
Range(insR).Select
buf = Dir(path & Target.Value & pic)
If buf <> "" Then '入力したファイル名があるかチェック
ActiveSheet.Pictures.Insert (path & Target.Value & pic)
Else
MsgBox "指定したファイルがありません"
End If
End If
Target.Offset(1, 0).Select
End Sub
< 使用 Excel:Excel2016、使用 OS:Windows10 >
VBAのお勉強で作ってみました(^^) 自分の環境下では動きましたが…(Excel2010、windows7)
↓参考にしたサイト https://www.moug.net/tech/exvba/0120020.html
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range) '画像自動挿入だけど関数は無効
Const trgR As String = "セル" '地図通し番号を入力するセル
Const insR As String = "セル" '挿入画像の左上のセル
Const path As String = "\\フォルダ\" 'ファイルの格納フォルダ
Const pic As String = ".jpg" '「.(半角)」+ファイルの拡張子"
Dim shp As Shape
Dim buf As String
Dim mypic As Shape '追加
If Target.Address(0, 0) = trgR Then
For Each shp In ActiveSheet.Shapes '既に表示されている画像を削除する処理
If Not Intersect(Range(insR), Range(shp.TopLeftCell, _
shp.BottomRightCell)) Is Nothing Then
shp.Delete
End If
Next
Range(insR).Select
buf = Dir(path & Target.Value & pic)
If buf <> "" Then '入力したファイル名があるかチェック
' ActiveSheet.Pictures.Insert (path & Target.Value & pic)
Set mypic = Me.Shapes.AddPicture(Filename:=path & Target.Value & pic, _
linktofile:=msoFalse, _
savewithdocument:=msoTrue, _
Left:=Range(insR).Left, _
Top:=Range(insR).Top, _
Width:=0, _
Height:=0)
With mypic
.ScaleHeight factor:=1, relativetooriginalsize:=msoTrue
.ScaleWidth factor:=1, relativetooriginalsize:=msoTrue
End With
Else
MsgBox "指定したファイルがありません"
End If
End If
Target.Offset(1, 0).Select
End Sub
(虎) 2019/06/05(水) 12:02
(たかふみ) 2019/06/05(水) 13:32
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.