フォルダ内の写真1枚1枚を自動的にA4枚に印刷するソフトでしたら、Vectorあたりでも
幾つか見つかると思いますが、トンボをつけるソフトとなるとどうなのでしょうか。
写真画像ファイルをそのまま取り込むのでしたら、Excelでも画質的には問題ないと思うので
すが。(多少落ちるのかも知れませんが、私個人は特に不満を感じたことはありません)
マクロは得意分野ではありませんが、夏休みの遊びで次のようなものを作ってみました。
・トンボつきです。
・画像は1枚印刷するたびにシート上から削除して新しいファイルを読み込みますので、ブックの
サイズは小さいままです。
1.スキャンした写真データファイルを、すべて任意のフォルダに保存します。
印刷する写真ファイル以外は保存しないでください。
2.新規でExcelを開いて Sheet1 以外のシートを削除し、次のように設定します。
・ページ設定で、A4横、余白すべて0.5。
・シート全体を選択し、セル高とセル幅をすべて 18 ピクセル。
・テキストボックスを作成してとりあえず ABCDE と入力し、フォント種と文字
サイズ、色を指定してから、次のように設定。
・塗りつぶし白、枠線なし、自動サイズ調整。
・位置はどこでも構いません。印刷時の位置はマクロ内で設定されます。
3.改ページ線を表示してから、次のように設定します。
・B2からページ最終行ひとつ前の行のB列セルまでを結合。
・セル A1 に [書式]-[セル] 罫線タブから、右辺と下辺に一番細い罫線を設定。
ページ最終行のA列セルの右辺と上辺にも同様に罫線を設定。
4.[Alt]を押しながら[F11]で Visual Basic Editor を起動して、
[挿入]-[標準モジュール] で開く画面に以下をコピペして実行します。
'
Sub PasteGazo()
Dim FPath, FName, HGT, PPoint, BR
Application.ScreenUpdating = False
FPath = "C:\MyFiles\Pic\Photo" '← ※1
FName = Dir$(FPath & "\" & "*.*")
Do While FName <> ""
Range("B2").Select
HGT = Selection.Height
ActiveSheet.Pictures.Insert(FPath & "\" & FName).Select
Selection.ShapeRange.LockAspectRatio = msoTrue
Selection.ShapeRange.ZOrder msoSendToBack
Selection.ShapeRange.Height = HGT
Selection.Placement = xlFreeFloating
' ↓Textbox (Write Filename, Set Position)
ActiveSheet.Shapes(2).Select
PPoint = InStr(FName, ".")
Selection.Characters.Text = Left(FName, PPoint - 1)
Selection.ShapeRange.Left = _
ActiveSheet.Shapes(1).Left + ActiveSheet.Shapes(1).Width _
- (Selection.Width + 25) '← ※2
Selection.ShapeRange.Top = _
ActiveSheet.Shapes(1).Top + ActiveSheet.Shapes(1).Height _
- (Selection.Height + 20) '← ※3
' ↓Tombo
BR = ActiveSheet.Shapes(1).BottomRightCell.Column
Columns(BR - 1).ColumnWidth _
= ((ActiveSheet.Shapes(1).Width _
- Range(Columns(2), Columns(BR - 2)).Width) * 4 / 3) / 8 - 0.62
With Cells(1, BR)
.Borders(xlEdgeLeft).Weight = xlHairline
.Borders(xlEdgeBottom).Weight = xlHairline
End With
With Cells(45, BR) '← ※4
.Borders(xlEdgeLeft).Weight = xlHairline
.Borders(xlEdgeTop).Weight = xlHairline
End With
' ↓Print
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Preview:=True '← ※5
' ↓Clear
Range(Columns(BR - 2), Columns(BR)).Delete
ActiveSheet.Shapes(1).Delete
FName = Dir$
Loop
Application.ScreenUpdating = False
End Sub
'
※1:実際の写真を保存したフォルダのフルパスに書き換えてください。
※2:最後の 25 はテキストボックス右端から写真右端までの距離(ポイント)です。
もっと離したい場合は数値を大きくしてください。(※3も同様です)
※3:最後の 20 はテキストボックス下端から写真下端までの距離(ポイント)です。
※4:45 の部分は、実際のページ最終行番号に書き換えてください。
※5:とりあえず印刷プレビューで確認するようにしています。確認が不要な場合は、
" , Preview:=True " を削除してください。