• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA 画像貼り付けのオプション指定法)

VBA画像貼り付けのオプション指定法

このQ&Aのポイント
  • Excelに画像を貼り付けるVBAマクロのオプション指定法について学びましょう。
  • アスペクト比を保って幅を指定し、位置をセルの位置で指定する方法を紹介します。
  • また、画像に名前を付ける方法も解説します。初心者でも簡単に使えるVBAコードです。

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (793/1659)
回答No.1

With Selection にして下さい。 .Select で画僧が指定されているので、 Selection で張り付けた画像が指定されます。

furafurax
質問者

お礼

ありがとうございました。うまくいきました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

こんにちは。 挿入する(挿入後の)オブジェクトの捉え方、 というテーマで、2通りお応えします。 Pictures.Insertメソッドの場合は、戻り値として、 Picture型のオブジェクトを返します、ので、 挿入した画像をシェイプとして捉えるには、   ActiveSheet.Pictures.Insert(myFile).ShapeRange という書き方が出来ます。 ' // Sub try() Dim myFile As String   myFile = "画像ファイルパス"   With ActiveSheet.Pictures.Insert(myFile).ShapeRange '    .Left = Range("A6").Left ' ★A列であれば省略可     .Top = Range("A6").Top ' ★     .LockAspectRatio = True     .Width = 160     .Name = "Pict01" ' ★名前はPict01   End With End Sub ' // オブジェクトを挿入するメソッドは、 挿入するオブジェクト毎にそれぞれ用意されていますが、 大抵、".Insert"とか".Add"等の名前のメソッドなのですが、 戻り値として、挿入後のオブジェクトを返さないものも 多くあります。 挿入後のオブジェクトを返さないメソッドの場合や、 どちらだか(VBAの編集者が)判らない場合には、   最後に挿入した図形(Shapeオブジェクト) という意味で、   ActiveSheet.Shapes(ActiveSheet.Shapes.Count) のような捉え方を覚えておけば、 都度悩むことなく、汎用的に活用できるようになります。 ' // Sub try2() Dim myFile As String   myFile = "画像ファイルパス"   ActiveSheet.Pictures.Insert myFile   With ActiveSheet.Shapes(ActiveSheet.Shapes.Count) '    .Left = Range("A6").Left ' ★A列であれば省略可     .Top = Range("A6").Top ' ★     .LockAspectRatio = True     .Width = 160     .Name = "Pict01" ' ★名前はPict01   End With End Sub ' // 一般論として、記録マクロでは、 ユーザー操作を忠実に再現する意味で、 SelectやSelection等といった記述が残ることが多いのですが、 これを実用のマクロへと編集する際には、 SelectやSelection等の記述を使わない記述に 書換えるように心掛けておいた方が、 意図しない挙動を招くことや無駄なエラー停止が減らせますので、 今後の課題にしてみてください。 尚、上掲スクリプト中、★でマークした行には、 実行を繰り返す度に変動するであろう指定値が含まれていますので、 必要に応じて適宜工夫してみてください。 以上です。

furafurax
質問者

お礼

ありがとうございました。大変に参考になる事柄をご丁寧に書いてくださり,感謝いたします。ベストアンサーにしたいところですが,最初の方のもありがたいご回答でした。順番から最初の方の方を「ベストアンサー」にさせていただきました。すみません。

すると、全ての回答が全文表示されます。

関連するQ&A