近年、少子高齢化を背景に働き方改革が盛んになっています。あなたの職場でも自動化や効率化が求められていませんか?当サイトでは自動化の具体的な手段としてExcelのマクロをお勧めします。
Excelは表計算ソフトですが、カレンダー、シフト表、ガントチャート、請求書など表計算以外の書類にも使えます。便利なExcel関数があるので、現在Wordで書かれている書類もExcelのほうが良い場合も多いです。
Excelのマクロを習得することで様々な書類の作成を自動化できます。そのうえPCが処理するため人為的なミスが減ります。マクロのスキルは実務でめちゃくちゃ使えます。
この記事では、そもそもマクロって何?VBAって何?という初心者のために、実例を交えてわかりやすく使い方を説明します。
この記事で例として使うExcelを下記に用意しました。ダウンロードして実際にマクロを作成しながら読み進めると、より理解が進みます。
この記事のExcelマクロの例、受注リストからの請求書作成
まずはExcelマクロで何ができるかを示したいと思います。
ここでは例として受注リストからの未請求の請求書のpdfを作成するタスクを考えます。下記は使用する受注リストです。
この受注シートには受注日、請求書の送付状況、注文先の会社情報、注文内容が記載されています。
次に請求書です。
請求書シートはExcel関数を使って工夫がされており、請求書のNo.を変更することで、同じNoの注文書の内容に書き換わります。
この請求書シートはpdfとして保存することで顧客に送付する請求書となります。
この一連のタスクは手作業でもできますが、請求書発送済みの確認を間違えたり、請求書番号の書き間違えをするリスクがあります。マクロを使えばそれら間違いリスクを排除したうえで素早く実行することが、マクロを使えば可能です。
そもそもマクロとは何?VBAとはなに?
タスクを示したところでそもそもマクロとは何か? VBAとは何かを説明したいと思います。
Excelはセルをコピーしたり、新しいシートを作成するなどのタスクをひとまとめにして自動で実行できる機能があります。それがマクロです。
マクロでどのようなタスクを実行するかをVBA(Visual Basic Advance)というプログラミング言語で記述されています。図で示すと下のような関係です。
ただし、実際にはVBAとマクロはあまり区別せずに用いられています。マクロやVBAと言ったら、単純にExcelの自動化のことを指していると思ったほうがよいです。
実際にExcelマクロを作成する手順
作成手順の概要
それでは実際にマクロを作成する手順を示したいと思います。マクロ初心者はいきなりプログラミング言語から書き始めるのはハードルが高いと思います。そこで、この記事では下記のようなオススメの手順を示したいと思います。
①マクロで実施したいタスクを具体化する。
②実施したいタスクの中で、条件分岐や繰り返しの部分を整理する。
③条件分岐や繰り返し以外のタスクをマクロの記録の機能を使ってVBAにする
④VBAを編集して繰り返しや条件分岐を追加
筆者も最初はこのやり方でマクロを作成していきました。いろいろなタスクに対応できて初心者もうまくいきやすいやり方です。
それでは具体例を示しながら、詳細を解説します。
①マクロで実施したいタスクを具体化する。
今回実施したいタスクは未発送の請求書をpdfに印刷することです。このタスクの実施手順を具体化します。具体的な手順を示しますと、下記のような流れになります。
この手順を図にすると下のようになります。
②実施したいタスクの中で、条件分岐や繰り返しの部分を整理する。
次にタスクを条件分岐と繰り返し処理以外の部分に整理します。これは条件分岐や繰り返し以外のタスクはほぼマクロの記録の機能を使って記録できるからです。
マクロの記録とは操作手順を記録して、記録した通りに再現する機能です。詳しい使い方は後述します。
今回の例では受注リストの確認からpdfで保存までのタスクを繰り返しで処理ができそうです。また請求書の発行が済んでいるかで条件分岐ができそうです。
③条件分岐や繰り返し以外のタスクをマクロの記録の機能を使ってVBAにする
まずはマクロの記録の機能を使って注文番号を記録して、pdf出保損するタスクを記録します。このマクロの記録はデフォルトで有効になっていない場合があります。その場合は下記を参考にして有効にしてください。
https://kokodane.com/2013_macro_01.htm
マクロの記録の手順は以下の通りです。
これでマクロが記録されました。次にどのようなVBAで記録されているかを確認します。
マクロの表示からMacro1を選択します。すると下のようなプログラムが表れます。
詳しい内容は省きますが、このプログラムが注文番号をコピーして、請求書をpdfで保存するタスクを表します。ここからこのVBAに繰り返しと条件分布を付け加えることえ、臨んだ処理を実現します。
④VBAを編集して繰り返しや条件分岐を追加
まずはfor文で繰り返しの処理を追記します。VBAのforの使い方については下記を参照してください。
https://tonari-it.com/excel-vba-for-next/
下記の手順でfor を使った繰り返しを追加していきます。
①For n = 4 To 12 を追加
②next を追加
③Range("B4").Select⇒Range("B" & n).Select
④"C:\Users\user\Desktop\請求書マクロ実行前.pdf" ⇒ThisWorkBook.Path &"請求書”&Range(“C2”)&”pdf"
Range("B4)とはB4のセルを表しています。③のように変更することで参照先を次々と変えることができます。
また、請求書のpdfも番号ごとに名前を変えるため、④のように変更します。
つぎにIf文を使った条件分岐の追記をします。If文の使い方については下記が詳しいです。
https://office-hack.com/excel/if-vba/
下記の手順でVBAを編集します。
⑤Sheets("受注").Select を追加
⑥If Range("D" & n) = "未" Then を追加
⑦end if を追加
⑤はpdfを生成後受注シートに戻るために入力します。
以上がVBAの編集手順です。最後に実行して動作を確認してみましょう
マクロの実行
マクロはVBA編集画面の再生ボタンで実行できます。
作製したVBAのソースコードは下記になります。
Sub Macro1()
'
' Macro1 Macro
'
'
For n = 4 To 12
If Range("D" & n) = "未" Then
Range("B" & n).Select
Selection.Copy
Sheets("請求書").Select
Range("C2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ChDir "C:\Users\user\Desktop"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "請求書" & Range("C2") & "pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
Sheets("受注").Select
End If
Next
End Sub
実行してみるとデスクトップに請求書のpdfが複数生成されるはずです。
保存するフォルダがないなどのエラーが出た場合は C:\Users\user\Desktop\の部分を存在するフォルダのアドレスに変更してください。
まとめ
以上が実践で学ぶマクロの作製方法でした。難しいかもしれませんが、ぜひ実践してみてください。実践こそが最善の学習方法です。