Excel(エクセル)VBAで作る便利ツールをご紹介!

Excel(エクセル)の勉強方法のメイン画像 Excel(エクセル)

業務中に調べることの多い、Excel,Word,PowerPointなどのノウハウを発信していきます!

Biz Magic編集部をフォローする

Excel(エクセル)VBAで画像をリサイズし並べるには

早速ですが、皆さんはExcelのVBAを使用して複数の画像を一括でリサイズし並べ替える方法をご存知でしょうか?ExcelのVBAでは画像などのオブジェクトを操作することが可能です。

画像をきれいに並べるためには、以下のポイントに気をつけることが重要です。

画像のサイズを統一する

画像のサイズがまちまちだと、配置した際に乱れた印象を与えます。そのため、できるだけ画像のサイズを揃えるようにしましょう。Excelの場合、画像を一括でリサイズするVBAコードを使用することができます。

画像を配置する際に均等なスペースを空ける

画像をきれいに並べるには、画像と画像の間に均等なスペースを空けることが重要です。スペースを空けることで、画像同士のバランスがとれ、整然とした印象を与えます。

配置する場所を決める

画像を配置する場所も重要です。特に、Excelの場合は、テキストと画像が混在することがあるため、配置する場所に注意が必要です。配置する場所を決める際には、グリッド状に配置する場合は、セルの左上隅に配置するときれいに並べることができます。

これらのポイントに気をつけることで、きれいに画像を並べることができます。また、VBAコードを使用することで、画像のリサイズや配置を自動化することもできます。

今回の記事では、ExcelでVBA画像のサイズを一括で変更し並べる方法ご紹介します。

Excel(エクセル)VBA で以上、以下の処理をするコード

では、早速ですがExcelのVBAで画像のサイズを一括で変更し並べる方法についてご紹介します。

Sub ResizeAndPositionImages()
 Dim img As Picture
 Dim imgWidth As Double
 Dim imgHeight As Double
 Dim imgLeft As Double
 Dim imgTop As Double
 Dim imgCounter As Long

 ' 画像をリサイズするための変数
 Dim targetHeight As Double
 Dim targetWidth As Double

 ' 画像を配置するセルの行列位置
 Dim startRow As Long
 Dim startCol As Long
 
 ' 画像を並べる間隔
 Dim gapHorizontal As Double
 Dim gapVertical As Double
 
 ' 画像のリサイズ
 For Each img In ActiveSheet.Pictures
  targetWidth = 100 ' リサイズ後の幅
  imgWidth = img.Width
  imgHeight = img.Height
 
  If imgWidth > targetWidth Then
  imgHeight = imgHeight * (targetWidth / imgWidth)
  imgWidth = targetWidth
 End If
 
 img.Width = imgWidth
 img.Height = imgHeight
 Next img
 
 ' 画像の配置
 startRow = 1 ' 開始行
 startCol = 1 ' 開始列
 gapHorizontal = 10 ' 横方向の間隔
 gapVertical = 10 ' 縦方向の間隔
 imgTop = 0
 imgLeft = 0
 
 For Each img In ActiveSheet.Pictures
 imgCounter = imgCounter + 1
 
 If imgCounter = 1 Then
 ' 最初の画像は開始位置に配置する
 imgTop = Range("A" & startRow).Top
 imgLeft = Range("A" & startRow).Left
 Else
  ' 2つ目以降の画像は前の画像の右に配置する
  imgTop = Range("A" & startRow).Top + ((imgCounter - 1) \ 3) * (img.Height + gapVertical)
  imgLeft = Range("A" & startRow).Left + ((imgCounter - 1) Mod 3) * (img.Width + gapHorizontal)
 End If

  img.Top = imgTop
  img.Left = imgLeft
 Next img
End Sub

このコードでは、 ActiveSheet に貼り付けたすべての画像を、リサイズしてから配置します。画像は、 startRow 行目 startCol 列目のセルを開始位置とし、横方向に gapHorizontal ポイント、縦方向に gapVertical ポイントの間隔で配置されます。1行に3つの画像を配置し、1行が埋まったら次の行に移ります。また、画像の幅がリサイズ後に100ポイントを超える場合、アスペクト比を保ちつつ幅が100ポイントになるように調整します。

Excelの操作方法は実際に手を動かし、身につけていきましょう

今の時代、様々な仕事でExcelを使用することがあるでしょう。今回はExcelのVBAで以上と以下の判断をする比較演算子とその使い方についてご紹介しました。このような機能を使いこなすことができれば仕事にも役に立つので、実際に手を動かし、覚えていきましょう。

WordやExcelなどのOfficeツールでは便利なショートカットキーなどがたくさんあるのでよく使う作業に関してはショートカットキーを調べてみるのも効率よく仕事を進める上で大切なことなのでこれから実践してみましょう。

コメント

タイトルとURLをコピーしました