皆様こんにちは、ノグチです。
前回は、 ShapesコレクションのAddPictureメソッドを使った画像ファイルをエクセルに貼り付ける方法と、その7つのパラメータについてご紹介しました。
それぞれの役割については前回記事をご覧いただくとして、今回は、 LinkToFileパラメータの指定値によって、AddPictureメソッドで挿入した画像にリンクを張る方法をご紹介していきます。
LinkToFileパラメータのおさらい
まずは前回のおさらいです。
このパラメータの指定値TrueとFalseを指定した場合の動作違いはこちら。
- True
Filenameパラメータで指定した画像ファイルにリンクが張られ、エクセルを起動するびにこの画像ファイルが読み込まれる - False
Filenameパラメータで指定した画像ファイルから画像がコピーされてエクセルに貼り付けられる
ではどちらの指定値を使えば挿入した画像にリンクが張れるのか?を見ていきましょう。
LinkToFileパラメータで画像の表示方法を切り替える
ではLinkToFileパラメータの指定値の違いによる動作を見ていきましょう。
使うコードはこちら。
Sub 画像追加() Dim strPath As String strPath = "C:\Users\user\Desktop\画像\ロゴ.png" Worksheets(1).Shapes.AddPicture _ Filename:=strPath, _ LinkToFile:=True, _ SaveWithDocument:=True, _ Left:=330, _ Top:=40, _ Width:=100, _ Height:=80 End Sub
指定した画像ファイルにリンクを張って毎回読み込ませる場合
LinkToFileパラメータにTrueを指定すると、画像にリンクを張ることができます。
すると画像へのリンク情報がエクセルに保存されるので、リンク先の画像ファイルを同じ名前で別の画像にすると、次にエクセルを開いたときに別の画像が表示されます。
先のコードを使って、実際にやってみましょう。
まずは上のコードを実行して画像を表示しておいて…
エクセルを上書き保存してから閉じておきます。
そして読み込み元の画像ファイルを同じ名前で別の画像に差し替えておきます。
この状態で先程のエクセルを開くと…
この通り、新しい画像が表示されています。
このパラメータにTrueを指定しておいて、元の画像ファイルを差し替えていけば、VBAを修正することなくエクセルに表示する画像を変えることができます。
画像そのものがエクセルに保存されている訳ではなく、画像ファイルにリンクを張っているので、画像が頻繁に変更される…ということであればこちらの方法がよさそうですね。
指定した画像ファイルから画像をコピーしてエクセルに貼り付ける場合
折角なので、Falseを指定した場合の動作もご紹介します。
まずはLinkToFileパラメータにFalseを指定します。
更に、理由は後述しますが、 SaveWithDocumentパラメータの値をFalseにしてから、VBAを実行してエクセルに画像を表示しておきます。
エクセルを上書き保存して閉じ、Trueを指定したとき同様に、 Filenameパラメータで指定した画像ファイルを同名で別の画像を差し替えておきます。
この状態でエクセルを開いてみると…
この通り、元の画像ファイルが表示されています。
エクセルに表示する画像が変わることがない、又はメールで色々な人に送信する必要がある、といった場合にはこちらが便利そうです。
LinkToFileパラメータにFalseを指定する場合の注意点
注意点として、この LinkToFileのパラメータの値をFalseに指定する場合は、 SaveWithDocumentパラメータの値は必ずTrueにする必要があります。
もしも LinkToFileにFalse、 SaveWithDocumentにもFalseを指定してVBAを実行すると…
このように、「指定された値は境界線を越えています」という、一見すると画像を表示させようとしている位置がおかしいのかな?と思ってしまうような実行時エラーが表示されます。
LinkToFileがFalseの場合、画像はコピーされてエクセルに表示されることは先にご紹介した通りです。
なのにSaveWithDocumentでFalseを指定してしまうと、画像がエクセルに保存されず、かつ画像へのリンク情報も保存されない。
よって画像が表示できなくなってしまう…ということでエラーになるのかな?と考えれば納得なのですが、なにゆえこのエラーメッセージなのか…。
もう少し分かりやすいエラーメッセージにしてくれると助かるんですけどね。
まとめ
今回は、ShapesコレクションのAddPictureメソッドのパラメータ、 LinkToFileの指定値によって画像にリンクを張る方法と、パラメータに指定する値によって画像の表示方法がどう変わるのか?をご紹介しました。
エクセルの使い方や、画像ファイルが差し変わる頻度などによってパラメータに指定する値を使い分けることで、画像の操作がより簡単にできそうですね。
次回からは、AddPictureメソッドを使って、フォルダ内の画像をすべてエクセルに張り付ける方法をご紹介していきます。
それでは、最後までお読みいただきありがとうございました!