見出し画像

『めっちゃ便利!!』【Excel】Wordの変更履歴の一括承諾からPDF出力まで🔥🔥

お疲れ様です!
今回は、実際に現場で使ったExcelのマクロについて紹介します!
めちゃめちゃ便利なので、ぜひ使ってみて下さい!!

手作業でやったら、約2時間かかる作業を
マクロを使って約3分で終わらせることができた
ので、
共有します!
ほんまに便利やったし、応用できると思うのでぜひ使ってみてください!

今回紹介するマクロで出来ることを先にお伝えします!

● 紹介するマクロで実現できること ●

①:「変更履歴」付きで修正した複数のWordファイルを一括で承諾する。
②:対象の複数のWordファイルを一括でPDFファイルに変換する。

実際の具体的な例を下に記載したので、
イメージつくかと思います!
この2つの処理を一気に実現できるものです!

図1:①の例(変更履歴を一括で承諾)
図2:②の例(Wordを一括でPDFに変換)

● 実際の業務での実用例

実際に自分がこのマクロを使用したのは、
開発していたシステムのマニュアルの修正が入った時でした。

お客様とやりとりするファイルが、
『Wordファイル』『PDFファイル』の2つあるものです。

修正するときは、『Wordファイル』を使用し、
実際にシステムの中で資材として管理する時は、
『PDFファイル』として管理します。

修正が『Wordファイル』ということで、
修正を確認しやすくするため、変更履歴着付きで修正します。

確認者は、修正した『Wordファイル』を確認し終わったら、
変更履歴を全て反映し、最新のものとして管理していく運用です。

今回は自分が確認者で、
対象の『Wordファイル』30個あり、、、
これを1つずつ確認して、一括承認して、PDFファイルに変換する
のはめちゃめちゃ大変だと思ったので、
マクロを作っちゃえと言うことで作りました!

中身の確認を先に全ファイルに対して実施し、
問題ないことを確認してから、
マクロを実行して約3分で終わらせることが出来ました!!

なので、同じような作業を振られた方はぜひ一度使ってみてください!!

● 実施手順

①:対象のファイルを1つのフォルダに集める

今回は、図1で紹介した「変更履歴着きのWordファイル」を複数下記のキャプチャのように用意しました。

②:Excelを開く

なんでも開き方は大丈夫です!

③:「Alt + F11」を同時に押下して、「Microsoft Visual Basic for Application」を開く

下記のような画面が表示されます!

④:「挿入>標準モジュール」の順番に押す

下記の赤枠で囲った部分です!

開いたらこんな画面が表示されます!

⑤:下記のマクロのコードを全部コピーして貼り付ける

下記のコードを全部コピーして、
④で開いたところに貼り付けてください!
(※「Option Explicit」は削除して下さい!)

Sub OpenSaveAndConvertWordFilesToPDF()
    Dim folderPath As String
    Dim wordApp As Object
    Dim wordDoc As Object
    Dim fileName As String
    Dim fileExtension As String
    Dim filesInFolder As Object
    Dim i As Integer
    Dim pdfFolderPath As String
    
    ' フォルダを選択するためのダイアログボックスを表示
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "フォルダを選択してください"
        .Show
        If .SelectedItems.Count = 0 Then
            MsgBox "フォルダが選択されませんでした。", vbExclamation
            Exit Sub
        End If
        folderPath = .SelectedItems(1)
    End With
    
    ' PDF用のフォルダを作成
    pdfFolderPath = folderPath & "\PDF"
    If Dir(pdfFolderPath, vbDirectory) = "" Then
        MkDir pdfFolderPath
    End If

    ' Wordアプリケーションを開く
    Set wordApp = CreateObject("Word.Application")
    wordApp.Visible = False

    ' フォルダ内のファイルを取得
    Set filesInFolder = CreateObject("Scripting.FileSystemObject").GetFolder(folderPath).Files

    ' ファイルを順に処理
    For Each file In filesInFolder
        ' ファイル名と拡張子を取得
        fileName = file.Name
        fileExtension = LCase(Right(fileName, Len(fileName) - InStrRev(fileName, ".")))

        ' Wordファイルかどうかを確認
        If fileExtension = "doc" Or fileExtension = "docx" Then
            ' Wordファイルを開く
            Set wordDoc = wordApp.Documents.Open(file.Path)

            ' 編集を有効にする
            If wordDoc.ProtectionType <> wdNoProtection Then
                wordDoc.Activate ' ドキュメントをアクティブにする
                wordDoc.Protect Type:=wdAllowOnlyReading, NoReset:=False
            End If
            ' 変更履歴の承諾
            wordApp.ActiveDocument.AcceptAllRevisions

            ' すべての変更を反映
            wordApp.ActiveDocument.TrackRevisions = False

            ' 保存
            wordDoc.Save

            ' PDFに変換して保存
            wordDoc.ExportAsFixedFormat OutputFileName:= _
                pdfFolderPath & "\" & Replace(fileName, ".docx", ".pdf"), _
                ExportFormat:=17, OpenAfterExport:=False, _
                OptimizeFor:=0, Range:=0, From:=1, To:=1, _
                Item:=0, IncludeDocProps:=True, KeepIRM:=True, _
                CreateBookmarks:=0, DocStructureTags:=True, _
                BitmapMissingFonts:=True, UseISO19005_1:=False

            ' 閉じる
            wordDoc.Close
        End If
    Next file

    ' Wordアプリケーションを終了
    wordApp.Quit

    ' オブジェクトを解放
    Set wordDoc = Nothing
    Set wordApp = Nothing
    Set filesInFolder = Nothing

    ' 処理が完了したことを通知
    MsgBox "処理が完了しました。", vbInformation

End Sub

⑥:「実行」ボタンを押下する

下の赤枠で囲った「▶」ボタンです!

⑦:下記のポップアップ画面が表示されるので、対象のフォルダを指定する

下記のポップアップ画面が表示されるので、
対象フォルダを指定して「OK」を押してください!

⑧:下記のポップアップ画面がでたら終了!

したの画像はめっちゃでかいですけど、
このポップアップ画面が表示されたら終わりです!

対象のフォルダを確認しましょう!
更新日が更新されており、PDFファイルを吐き出す「PDF」というフォルダが作成されています。

「PDF」フォルダの中身を確認して、
PDFファイルがあるかを確認しましょう!

⑨:おわり


◆ 比較結果 ◆

一応載せときます!
こんな感じで、変更履歴付きで保存したWordファイルは、
全て変更が反映されていました!

●比較結果①(test001.docx)

●比較結果②(test002.docx)

●比較結果③(test003.docx)

●比較結果④(test004.docx)

●比較結果⑤(test005.docx)

以上です!

● まとめ

久々に『めっちゃ便利』シリーズの投稿しました!
実際に自分が便利やったと感じたのものなので、
ぜひ一度使ってみてください!

また、今回もマクロは自分では作成してません。。。笑
悲しいことに自分にはそこまでの頭はないので。。。笑

今回も『ChatGPT』に自分が欲しいマクロを伝えて
作成してもらいました!

やっぱり、AIがすごすぎますね。。。
秒で作成してくれるので、本当に会話しながら作成してくれてる感じなので、めっちゃ賢いなんでもゆうことを聞いてくれる最強の部下を持った感じですね。笑

いつも感謝です!
ありがとうございます!

案を形に変えるには、AIの力があればある程度形になってくれるので、
ほんまに便利ですね!

また、便利なものがあれば紹介します!

#社会人5年目の奮闘記
#お客様の役に立つための勉強中
#SES
#SE
#最近の学び
#勉強
#SE
#スキしてみて
#ブログ
#雑記
#仕事
#習慣にしていること
#転職
#毎週note
#毎週更新
#毎週投稿

この記事が参加している募集

習慣にしていること

最近の学び

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