ExcelマクロVBAサンプル集 | 画像のトリミング(PictureFormat,Crop) | Excelマクロの実用サンプル、エクセルVBA集と解説



最終更新日:2016-12-27

画像のトリミング(PictureFormat,Crop)

エクセルで画像をトリミングするマクロになります、

画像の一部を四角に切り取るVBAコードの解説です。

図形で切り取る等は、自動記録のコードをほぼそのまま使えるはずですので、

ここでは、基本的かつ汎用的な、一部を四角に切り取るVBAコードについて、

サンプルコードを掲載して解説します。



画像の一部を四角にトリミング

Sub TrimPicture()
  Const OffTop As Double = 100 '左上の上位置
  Const OffLeft As Double = 150 '左上の左位置
  Const OffBottm As Double = 400 '右下の下位置
  Const OffRight As Double = 600 '右下の右位置
  Dim ws As Worksheet
  Dim sp1 As Shape
  Set ws = ActiveSheet
  Set sp1 = ws.Shapes(1)
  With sp1
    .PictureFormat.CropTop = OffTop
    .PictureFormat.CropLeft = OffLeft
    .PictureFormat.CropBottom = OffBottm
    .PictureFormat.CropRight = OffRight
  End With
End Sub

VBAコードは見た通りですので、特に解説は必用ないと思います。

気を付けて頂きたいのは、画像自体は元の画像がそのまま残っているという事です。
従って、次のサンプルコードで元に戻すことが出来ます

ファイルサイズが問題にならないのなら、
このトリミングのVBA実行したままでも問題はありません。


トリミングされた画像をもとに戻す

Sub UndoPicture()
  Dim ws As Worksheet
  Dim sp1 As Shape
  Set ws = ActiveSheet
  Set sp1 = ws.Shapes(1)
  With sp1.PictureFormat
    .CropLeft = 0
    .CropRight = 0
    .CropTop = 0
    .CropBottom = 0
  End With
End Sub

トリミング位置を全て0に戻すことで、
トリミング前に戻すことが出来ます。


画像の一部を四角にトリミングし、貼り付けし直す

Sub TrimPictureAndPaste()
  Const OffTop As Double = 56
  Const OffLeft As Double = 133
  Const OffBottm As Double = 464
  Const OffRight As Double = 569
  Dim ws As Worksheet
  Dim sp1 As Shape
  Dim sp2 As Shape
  Set ws = ActiveSheet
  Set sp1 = ws.Shapes(1)
  With sp1
    .PictureFormat.CropTop = OffTop
    .PictureFormat.CropLeft = OffLeft
    .PictureFormat.CropBottom = OffBottm
    .PictureFormat.CropRight = OffRight
    .Copy
    ws.PasteSpecial Format:="図 (JPEG)", Link:=False, DisplayAsIcon:=False
    Set sp2 = ws.Shapes(ws.Shapes.Count)
    sp2.Top = .Top
    sp2.Left = .Left
    .Delete
  End With
End Sub

最初に紹介したコード、TrimPictureを実行後に、
トリミング後の画像をコピーし、
元の画像位置に形式を選択して貼り付け
最後に、元の画像を削除しています。

画像を、形式を選択して貼り付けしていますので、
トリミング前に戻すことはできません。
画像サイズは小さくなりますので、
Excelファイルが気になる場合に有効です。


マクロで画像をトリミングする事が必要になることは滅多ににないとは思います。
しかし、例えば、
画面キャプチャをマクロで取った場合に、不要な範囲を取り除きたいといった場合には、
今回のVBAコードが使えるはずです。




同じテーマ「ExcelマクロVBAサンプル集」の記事

コメントの位置を移動する(Comment)
図をセル内に強制的に収める(Shape)
図を確認しながら消していく(Shape)
オートシェイプを他ブックの同じ位置に貼り付ける(Shapes,DrawingObjects)
全シートの画面キャプチャを取得する(keybd_event)
写真の取込方法について(Pictures.Insert,Shapes.AddPicture)
写真をサムネイルに変換して取り込む(Shapes.AddPicture)

新着記事 ・・・新着記事一覧を見る

SUMIFの間違いによるパフォーマンスの低下について|エクセル関数超技(6月17日)
条件式のいろいろな書き方:TrueとFalseの判定とは|ExcelマクロVBA技術解説(6月15日)
空白セルを正しく判定する方法2|ExcelマクロVBA技術解説(5月6日)
フルパスをディレクトリ、ファイル名、拡張子に分ける|ExcelマクロVBA技術解説(4月15日)
テキストボックスの各種イベント|Excelユーザーフォーム入門(4月9日)
フォルダ(サブフォルダも全て)削除する、Optionでファイルのみ削除|ExcelマクロVBAサンプル集(4月4日)
最後の空白(や指定文字)以降の文字を取り出す|エクセル関数超技(3月26日)
先頭の数値、最後の数値を取り出す|エクセル関数超技(3月26日)
Excelファイルを開かずにシート名をチェック|ExcelマクロVBAサンプル集(3月23日)
数式の参照しているセルを取得する|ExcelマクロVBAサンプル集(3月18日)

アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|ExcelマクロVBA入門
2.RangeとCellsの使い方|ExcelマクロVBA入門
3.徹底解説(VLOOKUP,MATCH,INDEX,OFFSET)|エクセル関数超技
4.Range以外の指定方法(Cells,Rows,Columns)|ExcelマクロVBA入門
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.セルのコピー&値の貼り付け(PasteSpecial)|ExcelマクロVBA入門
7.セルの参照範囲を可変にする(OFFSET,COUNTA,MATCH)|エクセル関数超技
8.ひらがな⇔カタカナの変換|エクセル基本操作
9.定数と型宣言文字(Const)|ExcelマクロVBA入門
10.CSVの読み込み方法|ExcelマクロVBAサンプル集



  • >
  • >
  • >
  • 画像のトリミング(PictureFormat,Crop)

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。

    ↑ PAGE TOP