プロが教える店舗&オフィスのセキュリティ対策術

エクセル2010です。
下記のマクロで、グラフを切り取り、形式を選択して貼り付けることはできました。
次に、この画像をオブジェクト変数に代入するにはどのようにSet文を書けばいいのでしょうか?
よろしくお願いします。

Sub Test()
Dim objChart As ChartObject
With Sheets("Sheet1")
Set objChart = .ChartObjects(1)
objChart.Cut
.PasteSpecial Format:="図 (拡張メタファイル)"
End With
End Sub

A 回答 (2件)

貼り付けた直後に数を数えます。


(例1)
Dim objChart As ChartObject
Dim shp As Shape
With Sheets("Sheet1")
Set objChart = .ChartObjects(1)
objChart.Cut
.PasteSpecial Format:="図 (拡張メタファイル)"
Set shp = .Shapes(.Shapes.Count)
End With
MsgBox shp.name
    • good
    • 0
この回答へのお礼

さっそくありがとうございます。
なるほど、貼り付けた直後ならShapeの数の最後で判定できるわけですね。

例1)と書かれているのを見ると。ほかにも方法があるのでしょうか?

お礼日時:2014/03/05 22:42

≫No.1 この回答へのお礼


>例1)と書かれているのを見ると。ほかにも方法があるのでしょうか?
スマートとは言えませんが
(例2)
Dim pic As Picture
With Sheets("Sheet1")
.ChartObjects(1).Cut
.PasteSpecial Format:="図 (拡張メタファイル)"
End With
If TypeName(Selection) = "Picture" Then
Set pic = Selection
End If
MsgBox pic.name

#余談
Sheets("Sheet1").PasteSpecial Format:="図 (拡張メタファイル)"
としても効き目がなく
ActiveSheetにPasteされるようです。
注意が必要です。
    • good
    • 0
この回答へのお礼

xls88 さん、なんどもありがとうございます。
貼り付けるとその画像が選択されたことになるのでSelectionを利用するわけですね。

シート名を指定してるのにActiveSheetにPasteされるのは不思議ですね。
ありがとうございました。

お礼日時:2014/03/07 23:33

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