Johnは、スクリーンショットをExcelブックに貼り付けることがよくあります。彼は常に、これらのグラフィックを4辺すべてで設定された量だけトリミングする必要があります。彼はこのタスクを頻繁に行うので、マクロで簡単に行う方法があるかどうか疑問に思います。

この問題に対処する方法はいくつかあり、そのすべてにマクロの使用が含まれます。 (このようなタスクを実行するための組み込みコマンドはありません。)既に追加したグラフィックを切り抜くだけの場合は、次のような単純なマクロを使用して切り抜くことができます。

Sub CropPicture()

With Selection.ShapeRange.PictureFormat         .CropLeft = 200         .CropTop = 300         .CropBottom = 50         .CropRight = 100     End With End Sub

もちろん、トリミングの値を指定する必要があります。これらの値はポイントで指定され、画像の元のサイズを基準にしています。したがって、たとえば、選択した画像を以前に元のサイズの150%に拡大縮小した後、このマクロを実行すると、すべての切り抜き設定が実際の値の1.5倍になります。 (たとえば、左のトリミングは200ピクセルではなく、300ピクセルのように見えます。)

マクロは、貼り付けを行ってから自動的に画像を切り抜くように簡単に変更できます。これは、1行の貼り付けコマンドを追加するだけで実行できます:

Sub PasteCropPicture()

ActiveSheet.Paste     With Selection.ShapeRange.PictureFormat         .CropLeft = 200         .CropTop = 300         .CropBottom = 50         .CropRight = 100     End With End Sub

マクロは、以前にスクリーンショットをクリップボードにコピーしたことを前提としています。実行せずに実行しようとすると、エラーが発生する可能性があります。

このようなマクロを実行するときに覚えておくべきもう1つのことがあります:

完了すると、画像がワークシートの元の位置から移動したように見えます。これは、4つの側面すべてからトリミングすると、画像の見かけ上の左上隅が別の場所に変更されるために発生します。必要に応じて、画像の左上隅を「記憶」するコードを追加することで、マクロでこれを補正できます。

Sub CropPositionPicture()

Dim MyShape As Shape     Dim LeftSide As Single     Dim TopSide As Single

Set MyShape = Selection.ShapeRange     LeftSide = MyShape.Left     TopSide = MyShape.Top

With MyShape.PictureFormat         .CropLeft = 200         .CropTop = 300         .CropBottom = 50         .CropRight = 100     End With

MyShape.Left = LeftSide     MyShape.Top = TopSide End Sub

もちろん、グラフィックのトリミングを選択するときは、どのように選択するかに関係なく、覚えておくべきことが1つあります。トリミングは画像サイズに影響しません。したがって、たとえば、画面の半分だけが表示されるようにスクリーンショットをトリミングすると、スクリーンショットの「非表示」部分はすべてそのまま残り、スペースを占有します。これにより、ワークブックの全体的なサイズが大きくなり、場合によっては驚くほど大きくなります。

これを回避する唯一の方法は、Excel内のグラフィックをトリミングしないことです。

代わりに、グラフィックプログラムで画像を処理し、処理した画像を保存してから、その処理した画像をワークシートに挿入します。その結果、ワークブックが小さくなり、保存と読み込みが速くなります。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(11580)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。