見出し画像

エクセルで作るオリジナルブックレット(VBA)①画像取り込み・面付け編

はじめまして。SONOです。
2021年5月からVBAの学習を始めました。
備忘録も兼ねて、駆け出しエンジニア!? によるプログラム製作過程の足跡を残していければと思っています(*´ェ`*)

手作りが好きなので、まずは、オリジナルのブックレットプログラムにチャレンジしてみることにしました。インデントの付け方もままならない駆け出しですが、ゆるーく見守っていただけると幸甚です。どうぞよろしくお願いします。

セルの高さ&幅の設定、画像読込、余白設定はVBAで効率UP!

B4版用紙でオリジナルの歌詞カードを作成する際、最低限、これだけあればいいのではというソースです。

セルの高さと幅を変更し、ページ設定の上下左右余白を「0」にして画像の読込までおこないます。セルの大きさに合わせて画像を取り込んでくれるのは便利ですね!

ただコードの色がお祭りになっているので、駄目出しされていることが自分でも分かります…(汗

Sub B4歌詞カード()

'セルの高さと幅を設定する
Dim w As Worksheet
Set w = ActiveSheet
  Range("A:B").RowHeight = 329
  Columns("A:B").ColumnWidth = 54

'写真貼付2列表示
'ファイル読み出し用変数
Dim fileName As Variant
Dim t As Long

'写真読み込み用変数
Dim pic As Shape

'ファイル読み込み
fileName = Application.GetOpenFilename("JPG,*.jpg", MultiSelect:=True)

'filenameの配列か確認
If IsArray(fileName) Then

    'ファイル選択数分繰り返す
    For i = 1 To UBound(fileName) Step 2  '2枚=23枚=3

      For ii = 1 To 2  '行方向枚数分繰り返し
        
        'オブシェクト名を省略  
        With ActiveCell
          t = t + 1 'henkou
          '写真のサイズをセルの大きさに合わせて貼付け
          Set pic = ActiveSheet.Shapes.AddPicture(fileName:=fileName(t), linktofile:=False, savewithdocument:=True, _
          Left:=.Left + 0, Top:=.Top + 0, Width:=.MergeArea.Width - 0, Height:=.MergeArea.Height - 0)
        End With

      '貼付けセル位置を設定
      ActiveCell.Offset(0, 1).Activate  '列方向にアクティブセルを移動(行方向,列方向)
      If t = UBound(fileName) Then GoTo sub2 '写真が最終の時終了させる

      Next ii

      ActiveCell.Offset(1, -2).Activate '行方向にアクティブセルを移動(行方向,列方向)
      
    Next i
sub2:

End If

  '用紙サイズを設定
   w.PageSetup.PaperSize = xlPaperB4

  'ページの余白設定  
  With ActiveSheet.PageSetup
   .TopMargin = Application.CentimetersToPoints(0)
   .BottomMargin = Application.CentimetersToPoints(0)
   .LeftMargin = Application.CentimetersToPoints(0)
   .RightMargin = Application.CentimetersToPoints(0)
   .HeaderMargin = Application.CentimetersToPoints(0)
   .FooterMargin = Application.CentimetersToPoints(0)
   .CenterHorizontally = True
   .CenterVertically = True
  End With

End Sub

画像をデザインする

私は通常、エクセルファイルをなるべく重くしたくないので、下記のカワセミさんのように640×640pixサイズで画像をデザインしています。

画像3

Photoshopや Illustrator(有料)などで作成するとお洒落ですね。でも金欠でそんなお洒落なソフトなんて持ってないよ…という場合には、windowsだと無料のPaint.NETPhotoScapeなどのソフトも使いやすいです。デザイン作業が始まると一気に楽しさが増してきます。

面付けの関門を突破せよ!

ブックレットは、面付けの都合上、4の倍数でページ数を決定するのが基本です。ページ数が決まったら、「左綴じ」にするか「右綴じ」にするか、それと面付けレイアウトを確認します。

面付けの仕組みさえ分かれば、16ページでも20ページでも32ページでもブイブイ製作できるのですが、画面上だけでイメージして作業を進めると意外と失敗します。

ですので、白紙を一枚用意して下図のようにページ番号をふり、それぞれのページに印刷したい画像のタイトルを書き込んで、実際にダミーな小冊子を前置きで作ってイメージすることをオススメします。

下図の左綴じ16ページで作る場合には、「2」の裏は「1」、「15」の裏は「16」になります。4枚のシートで16ページを作ることになるので、シートごとにカットし、ページ順にシートを本のように重ねていけばイメージしやすいと思います。面付けの関門さえ突破できれば、ブックレットはもう手にしたも同然!

■左綴じ

左綴じ

■右綴じ

右綴じ

「エクセルのVBAなんて分からないよー、でもオリジナルブックレット作りたい!」という方、「Office高いからそもそもPCに入ってないし~」という方でも楽しいブックレット製作ができるように、駆け出しなりのない知恵を絞りながら、今後、プログラム作成にチャンレンジしていきたいと思います。どうか期待しないで待っていてください(*´ェ`*)


この記事が気に入ったらサポートをしてみませんか?