こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

回答受付中の質問

Excel VBA 図をクリップボード介さずコピー

Excelシートのアイコンの画像をクリップボードを使わずにコピーするVBAコードを教えてください。
(Windows10,Excel2016)

具体的には、

1) Sheet1を選択する。
2) 挿入タブのアイコンをクリックする。
3) しばらくするとアイコンの挿入のウインドウが表示される。
4) アクセシビリティに9つのアイコンが表示されているので
  一番左のアイコンをクリックしてチェックマークを付けて
  右下の挿入ボタンをクリックする
5) Sheet1に車椅子のアイコンが挿入される(左側の図参照)。
6) このアイコンを選択すると左上のボックスにグラフィックス 1と表示される。

VBAで、Sheet1のシートの車椅子のアイコンをコピーして、
Sheet2のシートの同じ位置に貼り付ける場合、
以下のようなコードでは、
四角形全体が塗りつぶされたアイコンになってしまいます(右側の図参照)
車椅子のアイコンにするにはどのように記述すればよいでしょうか。


-------------------------------------
Sub test()

 Dim myType As MsoAutoShapeType
 Dim myLeft As Integer
 Dim myTop As Integer
 Dim myWidth As Integer
 Dim myHeight As Integer

 Sheets("sheet1").Select
 Sheets("sheet1").Shapes("グラフィックス 1").Select
 
 myType = Selection.ShapeRange.AutoShapeType
 myLeft = Selection.ShapeRange.Left
 myTop = Selection.ShapeRange.top
 myWidth = Selection.ShapeRange.Width
 myHeight = Selection.ShapeRange.Height

 Sheets("sheet2").Select
 ActiveSheet.Shapes.AddShape(myType, myLeft, myTop, myWidth, myHeight).Select

End Sub
-------------------------------------

投稿日時 - 2019-06-26 10:45:11

QNo.9629299

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

クリップボードを使わない、という事は、下のコードでは駄目なんですよね? そうなると、難しいと思います。
Sub test2()
 Worksheets("sheet1").Shapes("グラフィックス 1").Copy
 Worksheets("sheet2").Paste
End Sub

同シート内でなら、Duplicateで複製して移動という方法が使えるんですが、別シート間ではこの方法も使えませんし。

画像のファイル名が分かれば、worksheets("sheets2").Pictures.Insert(ファイルのパス)で、図の挿入は可能なのですが。

投稿日時 - 2019-06-26 13:27:44

お礼

Copy,Pasteだとクリップボード経由になります。
クリップボードを使わずに図(オブジェクト)自体をコピーするのは難しいように思います。
test()は、図(オブジェクト)自体をコピーするのではなく、図(オブジェクト)のパラメーターのみをコピーして、改めて同じものを描画するという感じです。重要なパラメーターが欠落しているなどの原因で、元の図(アイコン)と同じにはならないのではないかと思います。何か分かりましたらよろしくお願いします。

投稿日時 - 2019-06-26 14:24:21

あなたにオススメの質問