
Sheets("Sheet1")に貼り付けたJ-pegの画像(=シンボルマーク)を別なシートに貼り付けるのは下記のVBAで出来ました。ただ、これでは貼り付け先のシートのセルK12が、貼り付け元のK12と同じ位置でないと思った場所に張り付きません。
そこでセルで場所を指定するのではなく、座標のようなもので指定する方法はないものかと考えた次第です。
オートシェイプなどは座標指定で作成できるのですが、J-pegのような画像はどうすればいいのでしょうか?
Sub TEST()
Sheets("FACE").Shapes("シンボルマーク").Copy
ActiveSheet.Range("K12").Select
ActiveSheet.Paste
End Sub
No.4ベストアンサー
- 回答日時:
#1です。
>この場合、ファイルをエクセルにくっつけて渡すなんてこと
>はできないものでしょうか?(別々にではなくあくまでエク
>セルのブックに付属した形で)
Excelのブックに付属した形にするなら、コピーペーストする方がいいと思います。一旦挿入した画像を別途保存するのは、簡単には出来ないと思います。
複数のシートで同じような作業をするなら、次のような方法も考えられます。
Function CpyMrk(MrkNM As String, myTop As Single, myLeft As Single)
Sheets("FACE").Shapes(MrkNM).Copy
ActiveSheet.Paste
ActiveSheet.Shapes(MrkNM).Top = myTop
ActiveSheet.Shapes(MrkNM).Left = myLeft
End Function
Sub test()
CpyMrk "シンボルマーク", 10, 10
End Sub
No.3
- 回答日時:
#1です。
お礼の中でのご質問の件ですが、>それともオートシェープのように一行で座標指定する書き方
>もあるのでしょうか?
ペーストでは、直接座標を指定できないと思います。
AddPictureメソッドを使ったらどうでしょうか?
ActiveSheet.Shapes.AddPicture "フルパスファイル名" _
, msoFalse, msoTrue, 100, 200, 100, 100
AddPictureメソッドという手もあるんですね。
この場合、ファイルをエクセルにくっつけて渡すなんてことはできないものでしょうか?(別々にではなくあくまでエクセルのブックに付属した形で)
No.2
- 回答日時:
>それともオートシェープのように一行で座標指定する書き方もあるのでしょうか?
ないと思います。
本題から少し離れ、関連して
(数値指定するとき)
もし垂直に5つ並べるなら、コピーでなく、いっそのことAddメソッドを繰り返して
Sub TEST01()
Dim myTop As Single, myLeft As Single
For i = 1 To 5
mleft = 100
mtop = (i - 1) * 100 + 50
ActiveSheet.Shapes.AddShape(msoShapeSun, mleft, mtop, 50#, 50#).Select
Next i
End Sub
水平に並べるならmleftを
mleft = (i - 1) * 100 + 50
mtop = 100
にしてはどうでしょう。
(カーソル位置指定)
1個1個指定しては、実行となりますが
#1のコードを実行すると、どうも
アクチブセルの置き所と貼りつけられたシェイプの位置は
相関関係がありそうですが、良く判りません。初めにコピーする時のアクチブセルの置き所とシェイプとの位置関係を引きずるようでもありますが、自信なし。
セルの位置と関連ずけるなら、
For i = 1 To 5
mleft = Cells(i, 1).Left
mtop = Cells(i, 1).Top
ActiveSheet.Shapes.AddShape(msoShapeSun, mleft, mtop, 50#, 50#).Select
Next i
なども可能です。
またTopLeftCellと言うプロパティがあるようですが、値の取得のみで、設定はさせてくれません。
ご参考までに。ご質問と
ピントがずれていた場合はご免。
No.1
- 回答日時:
COPY,PASTEでやるなら、一旦元の座業位置を保存し、ペースト後のshapeに適用するのが普通かと思います。
Sub TEST()
Dim myTop As Single, myLeft As Single
myTop = Sheets("FACE").Shapes("シンボルマーク").Top
myLeft = Sheets("FACE").Shapes("シンボルマーク").Left
Sheets("FACE").Shapes("シンボルマーク").Copy
ActiveSheet.Paste
ActiveSheet.Shapes("シンボルマーク").Top = myTop
ActiveSheet.Shapes("シンボルマーク").Left = myLeft
End Sub
さっそくありがとうございました。これならオリジナルと寸分違わない位置に配置できますね。勉強になりました。
ところで、オートシェープだと
ActiveSheet.Shapes.AddShape(msoShapeSun, 509.25, 47.25, 141#, 138#).Select
のように、直接、座標を入れられますが、Copyで持ってくるものは、この場合、myTopやmyLeftに代入するしか方法はないですか?
それともオートシェープのように一行で座標指定する書き方もあるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
電子書籍プレゼントキャンペーン!
最大2万円超分当たる!マンガや小説が読める電子書籍サービス『Renta!』で利用できるギフトコードプレゼント実施中!
-
エクセルVBA 画像を貼り付けるセル位置を指定する方法
Excel(エクセル)
-
エクセルvbaでの図形のカット(コピー)ペーストについて
Excel(エクセル)
-
VBA Shapes コピーと名前
Excel(エクセル)
-
4
マクロで貼り付け位置を可変させる方法が知りたいです。
Excel(エクセル)
-
5
マウスで選択した図形のみVBAで移動したい。
Visual Basic(VBA)
-
6
Excel VBAでセル内の画像を選択したい
Excel(エクセル)
-
7
マクロを実行すると画像がズレてしまいます
その他(Microsoft Office)
-
8
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
9
VBAによるセル内の画像の位置調整
Excel(エクセル)
-
10
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
11
エクセルマクロでシート内にある画像のみを選択する
Excel(エクセル)
-
12
Excelで挿入した図をセルの中央に配置したいです
Excel(エクセル)
-
13
VBAで図形同士をコネクタで繋いでいく方法
Visual Basic(VBA)
-
14
マクロで画像挿入→エラー「リンクされたイメージを表
Excel(エクセル)
-
15
エクセルマクロで指定範囲内の図形を削除
Excel(エクセル)
-
16
【VBA】3個の図形をコピーしてSheet2に貼り付けたい
Excel(エクセル)
-
17
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
18
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
19
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
20
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
エクセルVBAで画像を貼り付ける...
-
5
外付ディスプレイで AutoHotkey...
-
6
マウスイベントが動かない
-
7
DirectXの画面サイズについて
-
8
UWSC画像認識で座標の位置がず...
-
9
UWSCのCHKIMG関数について
-
10
アクセスVBAのMe!と[ ]
-
11
PowerPoint VBA で画像の鮮明度...
-
12
「ご処理進めて頂きますようお...
-
13
VBAにてメッセージボックスを最...
-
14
エクセルの画面にユーザーフォ...
-
15
【Excel】特定の文字を含むセル...
-
16
EXCEL VBA マクロ 実行する度に...
-
17
ユーザーフォーム「frm_基本❶」...
-
18
メルカリのメルカードで買い物...
-
19
UPS警告音を止めたい
-
20
C#のForm内に複数画像を繰り返...
おすすめ情報
公式facebook
公式twitter