PDF化マクロの作り方【コピペで使えるサンプルコード掲載】


エクセルで作った資料をPDFにする処理を自動化したい!

 

こんな要望にお答えします。

 

この記事では、エクセルで作成した資料をPDF化するマクロの作り方を詳しくご紹介しています。

 

PDF化マクロを導入することで得られるメリットがこちら

 

  • 複数のページを1つのPDFファイルとして出力できる
  • 条件によってPDF化する印刷範囲を自動調整できる
  • 転記マクロや写真を貼り付けるマクロと組み合わせて設定できる

 

PDF化マクロを導入することでエクセル業務の効率を格段にアップさせることが可能です。

PDF化してデータを保存することが多い!という方は是非参考にしてみてください。

 

広告

PDF化マクロとは

 

PDF化マクロとは、エクセルで作成した資料をPDF出力する処理を自動化するものです。

 

処理としてはこんな感じ

 

印刷範囲の調整 → PDFファイルの保存場所・名前を決定 → PDF出力実行

がPDF化マクロの主な処理内容です。

 

PDF化マクロに「テキストを転記するマクロ」や「写真を貼り付けるマクロ」を追加することでオリジナルの効率化マクロにすることができます。

 

PDF化マクロにはExportAsFixedFormatメソッドを利用します。

 

構文がこちら

object.ExportAsFixedFormat(Type, FileName, Quality, IncludeDocProperties, IgnorePrintAreas, From, To, OpenAfterPublish, FixedFormatExClassPtr)

 

 

Left Caption

疲れ果てた人

構文を見てもどうやって使えばいいのかわからない

ExportAsFixedFormatメソッドを使ったことがない!という方は、

「object」「Type」「FileName」の3つの要素だけを設定して使ってみてください。

 

3つの要素をどのように設定すればいいのかを具体的に説明します。

 

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=folder_path & “PDFデータ"

と記入した場合、各要素は以下のよう意味になります。

 

object・・・対象となるブックやシートを指定

 

→ActiveSheet

操作中のシートを対象とする

Type・・・出力形式を設定

 

→xlTypePDF

拡張子がPDF形式のファイルを作成する

FileName・・・保存先とファイル名を入力

 

→ThisWorkbook.Path & “\"& “PDFデータ"

マクロを設定したブックと同じ場所に「PDFデータ」というファイル名で出力される

 

難しく感じるポイントは「FileName」をどう定義するのかないでしょうか。

ファイル名にマクロ実行時の日付、時間を含めることでファイル名の被りによるエラーの発生を防ぐことができるのでおすすめです。

 

記事の後半では、実際にExportAsFixedFormatメソッドを利用したコードを紹介していますので是非参考にしてみてください。

 

 

PDF化マクロの作り方

 

処理内容のイメージが湧きやすいように、実際のエクセル業務に導入したPDF化マクロをサンプルとして作り方をご紹介していきます。

 

実際の業務に導入したPDF化マクロ

実際の業務に導入したPDF化マクロには大きく分けて以下4つのマクロが設定されています。

  • 別シートにテキストを転記するマクロ
  • 指定する写真を貼り付けるマクロ
  • 条件によって印刷範囲を調整するマクロ
  • 複数のページを1つのPDFデータに出力するマクロ

 

PDF化マクロを実行したときの処理がこんな感じです。

 

今回のPDF化マクロは業務内容に合わせるため以下の項目を達成するようなコードにしています。

  • 指定するセルをダブルクリックすることでPDF化マクロを実行する
  • マクロが設定されたブックと同じ場所にPDFデータを保存する
  • ファイル名は「写真番号+記入する番号(整数)」にする
  • 出力ページが複数になった場合、1つのPDFファイルで出力する

 

4つ目の「複数ページを1つのPDFファイルで出力」するコードを実現できなくて困っている方が多いのではないでしょうか。。

 

Right Caption

拒否する人

ネットや書籍を調べても参考となる情報が少なかった。。

この記事の後半では、導入したコードをそのまま掲載しているので是非参考にしてみてください。

 

PDF化マクロ導入手順

様式の設定

「設定シート」の様式がこちら

 

「写真表シート」の様式がこちら

マクロを設定していく前に様式の設定を行う必要があります。

業務内容によって様式を変更しても構わないのですが、コードも変更する必要があるので注意が必要です。

 

 

VBAの設定

1.コードを編集するVBA画面を開く

 

2.標準モジュールを作成

 

3.Module1にコードを記入

 

Module1に記入する1つ目のコードがこちら

Sub 写真貼付け()
    '各変数を定義
   Dim Ash As Worksheet
   Set Ash = Sheets("設定")
   Dim Bsh As Worksheet
   Set Bsh = Sheets("写真表")
   Const cnsTitle = "ファイル名一覧取得"
   Const cnsDIR = "\*.*"
   Dim xlAPP As Application
   Dim strPath As String
   Dim zukei As Shape
   Dim syasin As String
   Dim myShape As Shape
   Dim myRange As Range, selectRange As Range
    '「設定」シートの1列目最終行数を取得
   gyoa = Ash.Cells(Rows.Count, 1).End(xlUp).Row
    '「設定」シートの1行目目最終列数を取得
   retua = Ash.Cells(1, Columns.Count).End(xlToLeft).Column
    '「写真表」シートのF2セル~T110セル内にある図形を削除
    Set myRange = Bsh.Range(Bsh.Cells(9, 2), Bsh.Cells(75, 34))
    For Each myShape In Bsh.Shapes
    If Not (Intersect(Bsh.Range(myShape.TopLeftCell, myShape.BottomRightCell), myRange) Is Nothing) Then
    myShape.Delete
    End If
    Next
    '「写真表」シートの基本情報を削除
    Bsh.Range(Bsh.Cells(2, 30), Bsh.Cells(2, 33)).ClearContents
    Bsh.Cells(5, 5).ClearContents
    Bsh.Cells(7, 5).ClearContents
    Bsh.Cells(7, 13).ClearContents
    Bsh.Cells(5, 22).ClearContents
    Bsh.Cells(7, 22).ClearContents
    Bsh.Cells(7, 30).ClearContents
    Bsh.Cells(43, 5).ClearContents
    Bsh.Cells(45, 5).ClearContents
    Bsh.Cells(43, 13).ClearContents
    Bsh.Cells(43, 22).ClearContents
    Bsh.Cells(45, 22).ClearContents
    Bsh.Cells(45, 30).ClearContents
     '「写真表」シートに日付けを入力
     Bsh.Cells(2, 30) = Date
    '「設定表」シートの写真番号を全て検索
    For i = 3 To gyoa
     '「設定表」シートの写真番号と「写真表」の写真番号が一致した場合処理を行う
    If Bsh.Cells(2, 24) = Ash.Cells(i, 1) Then
    Set xlAPP = Application
    '「設定表」シート142行目の写真データが保存されているフォルダの場所を変数として格納
    strPath = Ash.Cells(i, 6)
    'フォルダの存在確認 --- 必要な場合のみ記述 ---
    If Dir(strPath, vbDirectory) = "" Then
    MsgBox "指定のフォルダは存在しません。", vbExclamation, cnsTitle
    Exit Sub
    End If
    '「設定表」シート7列目に写真データ情報が記入されていれば写真を貼り付ける
    If Ash.Cells(i, 7) <> "" Then
    Bsh.Cells(5, 5) = Ash.Cells(i, 2)
    Bsh.Cells(7, 5) = Ash.Cells(i, 3)
    Bsh.Cells(7, 13) = Ash.Cells(i, 4)
    syasin = Ash.Cells(i, 6) & "\" & Ash.Cells(i, 7) & ".JPG"
    Set zukei = Bsh.Shapes.AddPicture(Filename:=syasin, LinkToFile:=False, SaveWithDocument:=True, Left:=0, Top:=0, Width:=0, Height:=0)
    With zukei
    .ScaleHeight 1, msoTrue
    .ScaleWidth 1, msoTrue
    .LockAspectRatio = msoTrue
    '''''''''''''''''''''ここの数値を変更することで写真の大きさ、配置を変更できる''''''''''
    .Height = Bsh.Range(Bsh.Cells(10, 4), Bsh.Cells(22, 15)).Height
    rx = (Bsh.Range(Bsh.Cells(10, 4), Bsh.Cells(22, 15)).Width - .Width) / 2
    .Left = Bsh.Range(Bsh.Cells(10, 4), Bsh.Cells(22, 15)).Left + rx
    .Top = Bsh.Range(Bsh.Cells(10, 4), Bsh.Cells(22, 15)).Top
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    End With
    Else
    End If
    '「設定表」シート8列目に写真データ情報が記入されていれば写真を貼り付ける
    If Ash.Cells(i, 8) <> "" Then
    syasin = Ash.Cells(i, 6) & "\" & Ash.Cells(i, 8) & ".JPG"
    Set zukei = Bsh.Shapes.AddPicture(Filename:=syasin, LinkToFile:=False, SaveWithDocument:=True, Left:=0, Top:=0, Width:=0, Height:=0)
    With zukei
    .ScaleHeight 1, msoTrue
    .ScaleWidth 1, msoTrue
    .LockAspectRatio = msoTrue
    '''''''''''''''''''''ここの数値を変更することで写真の大きさ、配置を変更できる'''''''''''''
    .Height = Bsh.Range(Bsh.Cells(24, 4), Bsh.Cells(36, 15)).Height
    rx = (Bsh.Range(Bsh.Cells(24, 4), Bsh.Cells(36, 15)).Width - .Width) / 2
    .Left = Bsh.Range(Bsh.Cells(24, 4), Bsh.Cells(36, 15)).Left + rx
    .Top = Bsh.Range(Bsh.Cells(24, 4), Bsh.Cells(36, 15)).Top
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    End With
    Else
    End If
    '「設定表」シート9列目に写真データ情報が記入されていれば写真を貼り付ける
    If Ash.Cells(i, 9) <> "" Then
    Bsh.Cells(5, 22) = Ash.Cells(i, 2)
    Bsh.Cells(7, 22) = Ash.Cells(i, 3)
    Bsh.Cells(7, 30) = Ash.Cells(i, 4)
    syasin = Ash.Cells(i, 6) & "\" & Ash.Cells(i, 9) & ".JPG"
    Set zukei = Bsh.Shapes.AddPicture(Filename:=syasin, LinkToFile:=False, SaveWithDocument:=True, Left:=0, Top:=0, Width:=0, Height:=0)
    With zukei
    .ScaleHeight 1, msoTrue
    .ScaleWidth 1, msoTrue
    .LockAspectRatio = msoTrue
    '''''''''''''''''''''ここの数値を変更することで写真の大きさ、配置を変更できる'''''''''''''''''''
    .Height = Bsh.Range(Bsh.Cells(10, 21), Bsh.Cells(22, 32)).Height
    rx = (Bsh.Range(Bsh.Cells(10, 21), Bsh.Cells(22, 32)).Width - .Width) / 2
    .Left = Bsh.Range(Bsh.Cells(10, 21), Bsh.Cells(22, 32)).Left + rx
    .Top = Bsh.Range(Bsh.Cells(10, 21), Bsh.Cells(22, 32)).Top
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    End With
    Else
    End If
    '「設定表」シート10列目に写真データ情報が記入されていれば写真を貼り付ける
    If Ash.Cells(i, 10) <> "" Then
    syasin = Ash.Cells(i, 6) & "\" & Ash.Cells(i, 10) & ".JPG"
    Set zukei = Bsh.Shapes.AddPicture(Filename:=syasin, LinkToFile:=False, SaveWithDocument:=True, Left:=0, Top:=0, Width:=0, Height:=0)
    With zukei
    .ScaleHeight 1, msoTrue
    .ScaleWidth 1, msoTrue
    .LockAspectRatio = msoTrue
    '''''''''''''''''''''ここの数値を変更することで写真の大きさ、配置を変更できる'''''''
    .Height = Bsh.Range(Bsh.Cells(24, 21), Bsh.Cells(36, 32)).Height
    rx = (Bsh.Range(Bsh.Cells(24, 21), Bsh.Cells(36, 32)).Width - .Width) / 2
    .Left = Bsh.Range(Bsh.Cells(24, 21), Bsh.Cells(36, 32)).Left + rx
    .Top = Bsh.Range(Bsh.Cells(24, 21), Bsh.Cells(36, 32)).Top
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    End With
    Else
    End If
    '「設定表」シート11列目に写真データ情報が記入されていれば写真を貼り付ける
    If Ash.Cells(i, 11) <> "" Then
    Bsh.Cells(43, 5) = Ash.Cells(i, 2)
    Bsh.Cells(45, 5) = Ash.Cells(i, 3)
    Bsh.Cells(45, 13) = Ash.Cells(i, 4)
    syasin = Ash.Cells(i, 6) & "\" & Ash.Cells(i, 11) & ".JPG"
    Set zukei = Bsh.Shapes.AddPicture(Filename:=syasin, LinkToFile:=False, SaveWithDocument:=True, Left:=0, Top:=0, Width:=0, Height:=0)
    With zukei
    .ScaleHeight 1, msoTrue
    .ScaleWidth 1, msoTrue
    .LockAspectRatio = msoTrue
    '''''''''''''''''''''ここの数値を変更することで写真の大きさ、配置を変更できる'''''''
    .Height = Bsh.Range(Bsh.Cells(48, 4), Bsh.Cells(60, 15)).Height
    rx = (Bsh.Range(Bsh.Cells(48, 4), Bsh.Cells(60, 15)).Width - .Width) / 2
    .Left = Bsh.Range(Bsh.Cells(48, 4), Bsh.Cells(60, 15)).Left + rx
    .Top = Bsh.Range(Bsh.Cells(48, 4), Bsh.Cells(60, 15)).Top
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    End With
    Else
    End If
    '「設定表」シート12列目に写真データ情報が記入されていれば写真を貼り付ける
    If Ash.Cells(i, 12) <> "" Then
    syasin = Ash.Cells(i, 6) & "\" & Ash.Cells(i, 12) & ".JPG"
    Set zukei = Bsh.Shapes.AddPicture(Filename:=syasin, LinkToFile:=False, SaveWithDocument:=True, Left:=0, Top:=0, Width:=0, Height:=0)
    With zukei
    .ScaleHeight 1, msoTrue
    .ScaleWidth 1, msoTrue
    .LockAspectRatio = msoTrue
    '''''''''''''''''''''ここの数値を変更することで写真の大きさ、配置を変更できる''''''''''
    .Height = Bsh.Range(Bsh.Cells(62, 4), Bsh.Cells(74, 15)).Height
    rx = (Bsh.Range(Bsh.Cells(62, 4), Bsh.Cells(74, 15)).Width - .Width) / 2
    .Left = Bsh.Range(Bsh.Cells(62, 4), Bsh.Cells(74, 15)).Left + rx
    .Top = Bsh.Range(Bsh.Cells(62, 4), Bsh.Cells(74, 15)).Top
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    End With
    Else
    End If
    '「設定表」シート13列目に写真データ情報が記入されていれば写真を貼り付ける
    If Ash.Cells(i, 13) <> "" Then
    Bsh.Cells(43, 22) = Ash.Cells(i, 2)
    Bsh.Cells(45, 22) = Ash.Cells(i, 3)
    Bsh.Cells(45, 30) = Ash.Cells(i, 4)
    syasin = Ash.Cells(i, 6) & "\" & Ash.Cells(i, 13) & ".JPG"
    Set zukei = Bsh.Shapes.AddPicture(Filename:=syasin, LinkToFile:=False, SaveWithDocument:=True, Left:=0, Top:=0, Width:=0, Height:=0)
    With zukei
    .ScaleHeight 1, msoTrue
    .ScaleWidth 1, msoTrue
    .LockAspectRatio = msoTrue
    '''''''ここの数値を変更することで写真の大きさ、配置を変更できる''''''''''''''''''''''''''
    .Height = Bsh.Range(Bsh.Cells(48, 21), Bsh.Cells(60, 32)).Height
    rx = (Bsh.Range(Bsh.Cells(48, 21), Bsh.Cells(60, 32)).Width - .Width) / 2
    .Left = Bsh.Range(Bsh.Cells(48, 21), Bsh.Cells(60, 32)).Left + rx
    .Top = Bsh.Range(Bsh.Cells(48, 21), Bsh.Cells(60, 32)).Top
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    End With
    Else
    End If
    '「設定表」シート14列目に写真データ情報が記入されていれば写真を貼り付ける
    If Ash.Cells(i, 14) <> "" Then
    syasin = Ash.Cells(i, 6) & "\" & Ash.Cells(i, 14) & ".JPG"
    Set zukei = Bsh.Shapes.AddPicture(Filename:=syasin, LinkToFile:=False, SaveWithDocument:=True, Left:=0, Top:=0, Width:=0, Height:=0)
    With zukei
    .ScaleHeight 1, msoTrue
    .ScaleWidth 1, msoTrue
    .LockAspectRatio = msoTrue
    ''''''''''''ここの数値を変更することで写真の大きさ、配置を変更できる''''''''
    .Height = Bsh.Range(Bsh.Cells(62, 21), Bsh.Cells(74, 32)).Height
    rx = (Bsh.Range(Bsh.Cells(62, 21), Bsh.Cells(74, 32)).Width - .Width) / 2
    .Left = Bsh.Range(Bsh.Cells(62, 21), Bsh.Cells(74, 32)).Left + rx
    .Top = Bsh.Range(Bsh.Cells(62, 21), Bsh.Cells(74, 32)).Top
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    End With
    Else
    End If
    Else
    End If
    Next
End Sub

 

上記のコードは「設定シート」の情報から写真データを貼り付ける!という内容です。

 

Module1に記入する2つ目のコードがこちら

Sub PDF保存()
    Dim Ash As Worksheet
    Set Ash = Sheets("設定")
    Dim Bsh As Worksheet
    Set Bsh = Sheets("写真表")
    Dim folder_path As String
    folder_path = ThisWorkbook.Path & "\"
    Dim Num1 As Long
    Dim sheet_container() As Variant
    '写真番号を変数に格納
    Num1 = Bsh.Cells(8, 38)
    sheet_counts1 = Worksheets.Count
    ' フォルダの存在確認 --- 必要な場合のみ記述 ---
    If Dir(folder_path, vbDirectory) = "" Then
    MsgBox "指定のフォルダは存在しません。", vbExclamation, cnsTitle
    Exit Sub
    End If
    'X6セルに記入された数字を変数に格納
    i = Num1 + 2
    '「設定」シートの11列目が空白の場合、A4ヨコ1枚分の印刷範囲を設定
    If Ash.Cells(i, 11) = "" Then
    Bsh.Cells(2, 24) = Num1
    '「写真表」シートを右端にコピペする
    Sheets(2).Copy after:=Sheets(Worksheets.Count)
     'コピペしたシートで印刷範囲を設定する
    Sheets(Sheets.Count).PageSetup.PrintArea = Bsh.Range(Bsh.Cells(1, 1), Bsh.Cells(38, 34)).Address
    sheet_counts2 = Sheets.Count
     'コピペしたシートをアクティブにする
    Sheets(sheet_counts2).Select
    'PDF出力
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=folder_path & "写真番号" & Bsh.Cells(2, 24) & ".pdf", Quality:=xlQualityStandard, OpenAfterPublish:=False
    Application.DisplayAlerts = False
    'コピペしたシート削除する
    Sheets(sheet_counts2).Delete
    Application.DisplayAlerts = True
    Else
    '「設定表」シートの145行目に写真データ情報がある場合、A4ヨコ2枚分の印刷範囲を設定
    '「写真表」シートを右端にコピペする(2シート分作成し1ページ目と2ページ目の印刷範囲を分ける)
    Bsh.Cells(2, 24) = Num1
    Worksheets(2).Copy after:=Sheets(Worksheets.Count)
    Worksheets(Worksheets.Count).PageSetup.PrintArea = Bsh.Range(Bsh.Cells(1, 1), Bsh.Cells(38, 34)).Address
    Worksheets(2).Copy after:=Sheets(Worksheets.Count)
    Worksheets(Worksheets.Count).PageSetup.PrintArea = Bsh.Range(Bsh.Cells(39, 1), Bsh.Cells(76, 34)).Address
    sheet_counts2 = Sheets.Count
    '配列を使ってコピペした全てのシートをアクティブにする
    ReDim sheet_container(sheet_counts1 + 1 To sheet_counts2)
    For i = sheet_counts1 + 1 To sheet_counts2
    sheet_container(i) = Sheets(i).Name
    Next i
    Sheets(sheet_container).Select
    'PDF出力
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=folder_path & "写真番号" & Bsh.Cells(2, 24) & ".pdf", Quality:=xlQualityStandard, OpenAfterPublish:=False
    Application.DisplayAlerts = False
    'コピペしたシート削除する
    Worksheets(sheet_container).Delete
    Application.DisplayAlerts = True
    End If
End Sub

 

上記のコードは1つの「設定番号」の情報からPDFデータを出力する!という内容です。

 

Module1に記入する3つ目のコードがこちら

Sub PDF保存2()
    Dim Ash As Worksheet
    Set Ash = Sheets("設定")
    Dim Bsh As Worksheet
    Set Bsh = Sheets("写真表")
    Dim folder_path As String
    folder_path = ThisWorkbook.Path & "\"
    Dim Num1, Num2 As Long
    Dim sheet_counts2 As Long
    Dim sheet_container() As Variant
    'X3セル、Z3セルに記入された数字を変数に格納
    Num1 = Bsh.Cells(4, 38)
    Num2 = Bsh.Cells(4, 41)
    sheet_counts1 = Worksheets.Count
        ' フォルダの存在確認 --- 必要な場合のみ記述 ---
        If Dir(folder_path, vbDirectory) = "" Then
        MsgBox "指定のフォルダは存在しません。", vbExclamation, cnsTitle
        Exit Sub
        End If
    'X3セルの数字からZ3セルの数字までを繰り返し処理する
    For i = Num1 + 2 To Num2 + 2
    '「設定表」シートの145行目が空白の場合、A4ヨコ1枚分の印刷範囲を設定
    If Ash.Cells(i, 11) = "" Then
    '「写真表」シートのD6セルにX3セルからZ3セルまでの数字を繰り返し記入
    Bsh.Cells(2, 24) = i - 2
    Sheets(2).Copy after:=Sheets(Worksheets.Count)
    Sheets(Sheets.Count).PageSetup.PrintArea = Bsh.Range(Bsh.Cells(1, 1), Bsh.Cells(38, 34)).Address
    Else
    '「設定表」シートの145行目に写真データ情報がある場合、A4ヨコ2枚分の印刷範囲を設定
    '「写真表」シートを右端にコピペする(2シート分作成し1ページ目と2ページ目の印刷範囲を分ける)
    Bsh.Cells(2, 24) = i - 2
    Worksheets(2).Copy after:=Sheets(Worksheets.Count)
    Worksheets(Worksheets.Count).PageSetup.PrintArea = Bsh.Range(Bsh.Cells(1, 1), Bsh.Cells(38, 34)).Address
    Worksheets(2).Copy after:=Sheets(Worksheets.Count)
    Worksheets(Worksheets.Count).PageSetup.PrintArea = Bsh.Range(Bsh.Cells(39, 1), Bsh.Cells(76, 34)).Address
    End If
    Next
    '配列を使ってコピペした全てのシートをアクティブにする
    sheet_counts2 = Sheets.Count
    ReDim sheet_container(sheet_counts1 + 1 To sheet_counts2)
    For i = sheet_counts1 + 1 To sheet_counts2
    sheet_container(i) = Sheets(i).Name
    Next i
    Sheets(sheet_container).Select
    'PDF出力
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=folder_path & "写真番号" & Num1 & "~ 写真番号" & Num2 & ".pdf", Quality:=xlQualityStandard, OpenAfterPublish:=False
    Application.DisplayAlerts = False
    'コピペしたシート削除する
    Worksheets(sheet_container).Delete
    Application.DisplayAlerts = True
End Sub

 

上記のコードは複数の「設定番号」の情報からPDFデータを出力する!という内容です。

 

4.「写真表シート」にコードを記入

 

「写真表シート」に記入する1つ目のコードがこちら

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If (Target.Row = 4) And (Target.Column = 45) Then
Call PDF保存2
Else
End If
If (Target.Row = 8) And (Target.Column = 45) Then
Call PDF保存
Else
End If
End Sub

 

上記のコードは、

4行目、45列目のセルをダブルクリックすると「PDF保存2」マクロが実行される

8行目、45列目のセルをダブルクリックすると「PDF保存」マクロが実行される

という内容です。

 

「写真表シート」に記入する2つ目のコードがこちら

Private Sub Worksheet_Change(ByVal Target As Range)
'B6セルからAH8セルまで変化がなければ終了
If Intersect(Target, Range(Cells(2, 24), Cells(2, 24))) Is Nothing Then
Exit Sub
Else
'B6セルからAH8セルまで変化があれば温度転記マクロとリスト転記マクロを実行する
Call 写真貼付け
End If
End Sub

上記のコードは、

2行目、24列目のセルを変化させると「写真貼付け」マクロが実行される

という内容です。

 

PDF出力マクロとは直接関係ありませんがめちゃくちゃ仕事で使える内容になっているので是非チェックしてみてください。

 

これでPDF化マクロの導入が完了です。

 

手順通り作業を進めればお使いのエクセルファイルでPDF化マクロを扱えるようになります。

エクセル業務の効率をアップさせたい!と考えている方は是非挑戦してみてください。

 

業務内容に合わせてPDF化マクロをアレンジするには

 

上記で紹介しているPDF化マクロを業務内容に合わせてアレンジするには2つの方法があります。

  • 様式とコードを業務内容に合わせて自分で編集する
  • マメBlogにマクロ開発を依頼をする

それぞれの方法を詳しくご紹介していきます。

 

様式とコードを業務内容に合わせて自分で編集する

様式とコードを業務内容に合わせて自分で編集するにはVBAの知識が必要になります。

 

例えば、

  • 「設定シート」のA1セルを「写真表シート」のA1セルではなくB3セルに転記するようにコードを修正する
  • 写真をA3セルではなくC3セルに貼り付けるようコードを修正する
  • 印刷範囲をA1セルからG10セルではなく、B3セルからK10セルになるようにコードを修正する

上記のようなコード修正ができる知識が必要!ということです。

 

掲載しているコードには細かく解説文を記入しているので、コードを編集する際参考にしてみてください。

 

様式やコードを編集せずにそのままPDF化マクロを使いたい!

という方は以下のサイトを参考にしてみてください。PDF化マクロをダウンロードしてすぐにお使い頂くことができます。

 

> > > PDF化マクロのダウンロードはこちら

 

マメBlogにマクロ開発を依頼する

マメBlogではマクロ開発サービスを受注しています。

  • PDF化マクロを業務内容に合わせてアレンジしてほしい
  • 今使っている様式にPDF化マクロを設定してほしい
  • PDF化マクロに罫線を編集するマクロや色を操作するマクロを追加してほしい

 

こんな感じでまずはお気軽にご相談ください。

 

こんなエクセル業務をしていてこんな処理を自動化したい!をマクロで実現します。

 

> > > マメBlogのマクロ開発サービスはこちら

 

PDF化マクロはこんな人におすすめ

 

PDF化マクロは次のような人におすすめです。

  • エクセルの資料をPDFデータに変換することが多い
  • 複数のページを1つのPDFデータで出力したい
  • 条件によって出力する印刷範囲を変更したい

 

勤めていた職場では、

上司に報告する資料はPDFに出力して印刷、ファイル名に日付を付けてデータを保存する

というルールがありました。

 

上司に報告したときのデータを残すことができる!というメリットがある反面、報告する都度PDF化するのがめんどくさいというデメリットもありました。

 

Left Caption

疲れ果てた人

大した作業ではないが、毎日繰り返すとなるとめんどくさい。。

 

こんなデメリットを解消するために開発したのがPDF化マクロです。

「編集」「ファイル名の入力」「保存」を一瞬で処理することができるようになったのでPDF化のストレスが激減。

 

毎日PDF出力作業があるので自動化したい!複数ページを1つのPDFデータに集約できなくて困っている!という方は是非PDF化マクロの導入にチャレンジしてみてください。