既存の画像ファイルから図を作成します。
●詳細●
構文 Object.AddPicture(FileName, LinkToFile, SaveWithDocument,
Left, Top, Width, Height)
設定項目 内容
Object Shapesコレクションオブジェクト [省略不可]
FileName 挿入する画像ファイル名をパス付きで指定 [省略不可]
LinkToFile Trueで元のファイルとのリンクが設定、
Falseで独立した画像 [省略不可]
SaveWithDocument Trueではエクセルファイルとともに保存、
Falseではリンク情報だけを保存 [省略不可]
Left 挿入する画像の左端位置を指定 [省略不可]
Top 挿入する画像の上端位置を指定 [省略不可]
Width 挿入する画像の幅を指定 [省略不可]
Height 挿入する画像の高さを指定 [省略不可]
次のサンプル1を見てください。
●サンプル1●
Sub AddPictureSamp1()
Dim myFileName As String
Dim myShape As Shape
myFileName = ActiveWorkbook.Path & "\cat.gif" '---挿入する画像ファイル
'の指定
Set myShape = ActiveSheet.Shapes.AddPicture(Filename:=myFileName, _
LinkToFile:=True, SaveWithDocument:=False, Left:=Selection.Left, _
Top:=Selection.Top, Width:=100#, Height:=100#)
'---(1)選択位置に画像ファイルを挿入し、変数myShapeに格納
With myShape '---(2)挿入した画像に対して
.ScaleHeight 1!, msoTrue '---元の画像ファイルと同じ高さにする
.ScaleWidth 1!, msoTrue '---元の画像ファイルと同じ幅にする
End With
End Sub
(1)のステートメントで画像ファイルを挿入しています。引数LinkToFileにTrue、SaveWithDocumentにFalseを指定しているため、画像へのリンク情報だけがExcelファイルに保存されます。ファイルサイズを大きくしたくない場合には、このように指定してください。ただし、元の画像ファイルを参照できない環境下で画像を挿入したファイルを開くと、画像はアイコンで表示されてしまいます。
●ポイント●
引数Width/Heightで画像の大きさを指定しますが、元の画像ファイルの大きさをポイント単位で計測してからコーディングする、ということは効率的ではありません。
したがって、適当な値で画像を作成した後に、上記コードの(2)のステートメントのようにScaleHeight/ScaleWidthメソッドで、元の画像ファイルの大きさを復元させるのがよいでしょう。
なお、Excel97以降は隠しオブジェクトとなっているPictureオブジェクトに対してInsertメソッドを使用すれば、サンプル2のような記述で同様のことができます。
●サンプル2●
Sub AddPictureSamp2()
Dim myFileName As String
myFileName = ActiveWorkbook.Path & "\cat.gif" '---挿入する画像ファイル
'の指定
ActiveSheet.Pictures.Insert Filename:=myFileName '---選択位置に画像を
'挿入
End Sub
ただし、画像のリンク情報だけを保存するというような指定はできませんので、ケースに応じて使い分けてください。
●ポイント●
Microsoft Officeで用意されているクリップアートも、1つ1つは独立した画像ファイル(WMFファイル)です。クリップアートを文書に挿入する際にも、これらのメソッドを用意します。