ここから本文です

VBA写真貼付けについての質問なのですが

yui********さん

2013/5/2016:53:25

VBA写真貼付けについての質問なのですが

エクセル2003で下記コードを使用して写真を貼り付けていたのですが
最近エクセル2010で下記マクロを使って写真を貼り付けた所
添付写真のように写真が貼り付きませんでした。
(エクセル2010の画面上ではちゃんと貼り付けられてます)
コード修正すれば写真を2003のエクセルでも見れるようになりますか?
ご教授よろしくお願いします。


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim myF As Variant
Dim mySP As Object
Dim myAD1 As String, myAD2 As String
Dim myHH As Single, myWW As Single
Dim myHH2 As Single, myWW2 As Single
If Intersect(Range("K7,K13,K19"), Target) Is Nothing Then Exit Sub
Cancel = True

Application.ScreenUpdating = False

'===============画像選択
myF = Application.GetOpenFilename _
("jpg bmp tif png gif,*.jpg;*.bmp;*.tif;*.png;*.gif", , "画像の選択", , False)
If myF = False Then
MsgBox "画像を選択してください(終了)"
Exit Sub
End If

'===============画像の掃除
For Each mySP In ActiveSheet.Shapes
myAD1 = mySP.TopLeftCell.MergeArea.Address
myAD2 = Target.Address
If myAD1 = myAD2 Then mySP.Delete
Next

'===============画像の貼り付け
Set mySP = ActiveSheet.Pictures.Insert(myF)
mySP.ShapeRange.LockAspectRatio = False


'===============タテヨコの縮尺を保持
myHH = Target.Height / mySP.Height
myWW = Target.Width / mySP.Width
If myHH > myWW Then
mySP.Height = mySP.Height * myWW
mySP.Width = Target.Width
Else
mySP.Height = Target.Height
mySP.Width = mySP.Width * myHH
End If

'===============中央へ調整
myHH2 = (Target.Height / 2) - (mySP.Height / 2)
myWW2 = (Target.Width / 2) - (mySP.Width / 2)
mySP.Top = Target.Top + myHH2
mySP.Left = Target.Left + myWW2

Set mySP = Nothing

Application.ScreenUpdating = True

End Sub

補足説明が下手ですみません。
エクセル2010でマクロを使って写真を貼り付けて
(2010では写真は表示されています)
エクセル2003で開くと添付写真のように
写真が表示されません。
他の画像・他の記録形式(j拡張子が異なるもの)でも同じ現象が起こります。

mySP.Height,mySP.Width,Target.Height,Target.Width,Set mySP,Pictures.Insert,Excel2010

閲覧数:
415
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

bch********さん

2013/5/2100:16:30

Excel2010と2003が別のPCではありませんか?
Excel2010でPictures.Insert メソッドを使用するとリンクオブジェクトになるため、同じフォルダに画像ファイルが存在しないと表示されません。
http://support.microsoft.com/kb/2396509/ja?wa=wsignin1.0

Pictures.Insert メソッドをShapes.Add メソッドに置き換えてみてください。
同じような処理なので http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1210304972... が参考になるかもしれません。

質問した人からのコメント

2013/5/21 13:39:33

降参 bchlr_esmjk様
Shapes.Add に書き換えて、見事解決しました。
ありがとうございました。

train_benoist様
互換性のダウンロードは、まだしてませんでした。
ありがとうございました。

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

tra********さん

編集あり2013/5/2019:37:44

> 添付写真のように写真が貼り付きませんでした。
Excel2003で試しました。
なんの問題もなく、セルサイズに合せられた画像が確認できます。
「張り付かない」ということはないですね。
他の画像・他の記録形式(j拡張子が異なるもの)でも同じ現象が起きるのでしょうか?

<補足への返信>
上に書いた2003のブックを2010で開きましたが、問題ありません。

Microsoft Office 互換機能パック
http://www.microsoft.com/ja-jp/download/details.aspx?id=3
を2003の使用PCに、インストールしていますよね?

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる