セルに画像を埋め込むExcelVBA新機能の制約

ExcelVBAに新機能がつきました。MS365だけの新機能で、RangeオブジェクトのInsertPictureInCellメソッドです。Activeにしたセルに直接画像を貼り付けることが出来、しかもセルの行高・幅を操作しても自動で拡大縮小してくれる優れものです。商品リスト等、大量の商品画像を貼り付けて使いたいような場合にはとても重宝する機能ではないかと思います。
これまでは写真画像をワークシートに取り込むにはShapesオブジェクトを操って、位置指定など、なにかと細々した指定をしてやる必要がありました。特にセル内に画像を収めたいときが不便で、セル範囲にピンポイントで貼り付けねばならず、しかもセルの高さ・幅をいじってしまうと位置がずれてきて大変煩雑でした。
この煩雑さを解消してくれるだけではなく、セルの範囲に合わせて自動で拡大縮小してくれ、しかもセルのサイズでは小さくてよく見えないといった場合には、セル横に現れるプロパティボタンをクリックすれば画像が拡大して表示され、もう一度クリックすると元のサイズに戻るという優れものです。Excelの可能性を大きく広げる機能であることはまず間違いないでしょう。
ところがこのInsertPictureInCellは一工夫しなければ動いてくれません。 現在ネットでは、特定のセルを選択した状態、つまりActiveCellに対して操作する形にしないとInsertPictureInCellは使えないという情報が出回っています。しかし何度試してもActiveCellにメソッドを付けるだけではVBAが言うことを聞いてくれません。
いろいろ試行錯誤をくり返した結果、一度手動で画像セル貼り付けを行わなければこの機能が覚醒しないことが解りました。
即ち、あらかじめひとつ以上の画像を Alt + n + p + i + d でセルに実際に貼り付けてやらないと、InsertPictureInCellは覚醒しないようなのです。
何もせず、サンプルコードに習って
Range(“A1”).Select
ActiveCell.InsertPictureInCell “商品写真260522.jpg”
などやってもRangeオブジェクトのメソッドエラーが返って来るだけで画像自動貼り付けは失敗に終わります。
まだこの新機能はベータ版という位置づけだと割り切って使いましょう。
ついでにいうと、VBAでサクサク貼り付けられるので調子に乗って10000枚とか貼り付け、一気にブックのサイズを膨れあがらせてメモリ圧迫で端末をHungUpさせたりしないように気をつけましょう(笑)
