エクセル マクロ 画像 挿入 セル 指定

Mon, 29 Jul 2024 22:23:36 +0000

ワークシート上に画像を挿入するには、次のようにします。 Sub Macro1() "C:\Work\" End Sub 画像を、アクティブシートに挿入するときは、必ず アクティブセル に挿入されます。正確に言うと、アクティブセルの左上に画像の左上がくるように挿入されます。 次のように、シートを指定すれば、アクティブシートではない(表示されていない)シートに画像を挿入することもできます。 Sub Macro2() Sheets("Sheet1"). "C:\Work\" このように、挿入するシートがアクティブシートではなかった場合、画像は常にセルA1に挿入されます。そりゃそうですね。だって、アクティブシートではないシートに、アクティブセルはありませんから。 指定した位置に画像を挿入する 上述のように、挿入される画像は、基本的に「アクティブセルを左上」とした位置に挿入されます。もし、任意のセルに画像を挿入するのなら、まず挿入したい位置にアクティブセルを移動して・・・なんてことはしません。発想を変えます。挿入した画像を、指定した位置に移動すればいいんです。ちなみに、挿入した画像を、手動で移動する操作をマクロ記録すると、次のようなコードが記録されます。 Sub Macro3() (Array("Picture 1")) crementLeft 74. VBA - 画像を指定セルに貼り付けたい|teratail. 25 crementTop 35. 25 ほとんどの人は、このコードを見て絶句するでしょう。「なんじゃ、これは・・・」って。1行目からツッコミどころ満載です。しかも、移動に関するコードには、74. 25とか訳の分からない数値が出てくるし。よしんば、このコードを理解したところで、これを応用して"指定したセルに画像を移動する"なんてのは、相当に難しいです。 簡単です。画像を表すPictureオブジェクトには、その左位置を表すLeftプロパティと、上位置を表すTopプロパティが用意されています。それを指定すればいいんです。次のコードは、すでに挿入されている画像を、セルB3の位置に移動します。 Sub Macro4() ("Picture 1") = Range("B3") もし、挿入している画像が1枚しかないのでしたら、次のようにインデックスで指定した方が簡単です。 Sub Macro5() (1) = Range("B3") なんか、同じようなコードが2行並んで美しくないですから、Withでくくりましょうか。 Sub Macro6() With (1) = Range("B3") End With 挿入すると同時に、指定した位置に移動するのでしたら、次のようにします。 Sub Macro7() With ("C:\Work\") Insertの後ろに括弧を付けました。意味が分からない人は「 括弧はどんなときに使うの?

Vba - 画像を指定セルに貼り付けたい|Teratail

ScaleHeight 1, msoTrue. ScaleWidth 1, msoTrue End With End Sub ソースコードの解説 画像をExcelの指定の場所に貼り付ける 画像を貼り付ける位置を設定しているのは、dPictureメソッドのLeftとTopパラメーターです。 名前 データ型 説明 Left Single 文書の左上隅を基準にして図の左上隅の位置をポイント単位で指定します。 Top Single 文書の左上隅を基準にして図の左上隅の位置をポイント単位で指定します。 上のソースコードでは、LeftとTopパラメーターをB2セルのLeftとTopに設定しているので、ExcelのB2セルに合わせて画像が貼り付けられます。 そのため、画像を貼り付ける場所を変更したい場合には、Set targetRange = Range("B2") のB2を変更してください。 参考 Shapes. AddPicture メソッド (Excel) Microsoft Docs 画像をそのままの大きさで貼り付ける ShapesオブジェクトのScaleWidthとScaleHeightメソッドを使用します。Factor = 1、RelativeToOriginalSize = msoTrueに設定することで、図をそのままの大きさで貼り付けられます。 名前 データ型 説明 Factor Single 現在の高さと変更後の高さの比率、または元の高さと変更後の高さの比率を指定します。 たとえば、四角形を 50% 拡大する場合は、この引数に 1. 5 を指定します。 RelativeToOriginalSize MsoTriState 元のサイズを基準にして図形を拡大または縮小する場合は msoTrue 。 現在のサイズを基準にして拡大または縮小する場合は msoFalse を指定します。 msoTrue を指定できるのは、図形が図または OLE オブジェクトのときだけです。 参考 ScaleWidth メソッド (Excel) Microsoft Docs マクロを実行する キーボードの【F5】を押す、または画面上部の【▶】を押して、マクロを実行します。 ExcelのB2セルの左上に合わせてに画像が表示されていれば完了です!

LockAspectRatio = msoTrue. ScaleWidth 1, msoTrue ' 画像の大きさを設定する With picture ' 指定範囲の左上に仮置きする = ' 指定範囲よりも画像の縦横両方が小さい場合 If < targetRangeWidth And < targetRangeHeight Then = + ( -) / 2 Else ' 画像の幅を指定範囲に仮設定する = targetRangeWidth ' If > targetRangeHeight Then = targetRangeHeight End If End Sub ごりごりと処理を書いているので、あまり説明できる部分はないのですが、このソースのポイントとしては、Shape. LockAspectRatioプロパティをTrueにしている箇所です。 Shape. LockAspectRatioとは、図の縦横比を一定にするプロパティで、これを設定することで、画像がゆがまないようになっています。 参考 Shape. LockAspectRatio プロパティ (Excel) Microsoft Docs マクロを実行する キーボードの【F5】を押す、または画面上部の【▶】を押して、マクロを実行します。 仕様の説明の①のように画像が貼り付けられれば成功です! なお罫線(黒い線)は、分かりやすいように筆者は手動で書きました。自動的に書かれないのでご注意ください。 ここまで完成したら、ソースコード内の範囲を指定する箇所を変更して、きちんと仕様通りに動くか確認してみるといいでしょう。 メモ 範囲をしていしているのは、ソースコード内の以下の部分になります。H22をF10にしたり、E20に変更すれば仕様の動きを確認できます。 Set targetRange = Range("B2:H22")