Excel VBA

【Excel VBA】【マクロ】Excelマクロで何ができるの?

こんにちは!Lenocoです。本日も見てくださりありがとうございます。

今回は初心に戻り、結局Excelマクロで何ができるの?という話をしたいと思います。

Excelマクロで何ができるの?

手作業で行う作業は、ほぼすべてマクロで自動化することができます。
よりマクロ化しやすいのは、ルール化された作業です。
毎月の請求書作成業務などがわかりやすいかと思います。
お客様のデータ一覧があり、そこには名前、住所、請求金額などが入っていると想定してください。
請求書のテンプレートに、1件1件宛名、住所、金額をコピペしていくのはとっっても大変な作業です。
請求先が数件ならいいですが、100件あったらどうでしょう。
請求書を作成する作業だけで1日終わってしまいますよね。
そして、手作業ではミスも発生しやすくなります。

単純な作業で、決まった動作であれば、それをすべてマクロ化することで
ミスを防ぎ、時短することができます。
空いた時間で他の作業もでき、とても効率的ですね。

なんでもできるって例えば何?

「マクロってすんごいことができるもの」、「マクロって難しそう・・・」って先入観を持っている人のために、本当に簡単な例を紹介します!

セルを選択、シートを選択

Range("C4").Select
Sheets("Sheet1").Select

セルの選択やシートの選択はたったこれだけのコードで完成します。

セルに文字を入力、シート名を変更

Range("C4") = "ABC"
Sheets("Sheet2").name = "あああ"

セルに文字を入力することはもちろん、セルの背景色、文字色、書式を変えることもできます。
セルに対して加工をするものは割と何でもできると思います。

セル内の文字を判定する

If IsNumeric(Range("B2")) = True Then
  'A1セルが数値だった場合の処理
  Range("C2") = "〇"
Else
  'A1セルが数値以外だった場合の処理
  Range("C2") = "×"
End If

上記のコードは、A1セルが数値なのかどうかをYes、Noで返すisNumericファンクションを使っています。
isNumericファンクション単体ではあまり意味がないので、それとIf文を組み合わせて、処理を分岐させます。
そのほかにも、このセルには「a」が入っているかな?日付かな?何文字あるかな?といった判定もできます。

行や列の挿入や削除

Rows(1).Delete
Columns(2).Insert

上記は、1行目を削除、2列目に挿入をしています。

ファイルを開く/閉じる、新規ファイルを作成する/保存する

Workbooks.Open ("C:\Users\Lenoco\デスクトップ\Book1.xlsx")
Workbooks("Book1.xlsx").Close

Excelはもちろん、csvを開いたり、テキストファイルも開けます。
新規ファイルの作成もでき、
保存しないで閉じる、保存して閉じるなども指定可能です。

ダイアログでメッセージを表示する

MsgBox "ファイル形式が違うようです。ご確認ください。"

想定外の操作が行われた場合など、処理を中断したい場合はマクロの使い手のことを考え、
エラーのメッセージを出すことができます。
指定されたファイルの形式などが違った場合は、それを教えてあげると親切です。

使用している範囲を取得する

目視でどの範囲まで使っているかなと探すのは大変ですが、マクロならそれがすぐわかります。
マクロを作っていると最終セルを取得したいとか、使用されている範囲、最終行や最終列を知りたいということがたくさん出てきます。
こちらの例を元に説明したいと思います。

Range("A1").CurrentRegion.ClearContents

CurrentRegionプロパティを使用し、指定したセルから値があるセルまでの範囲を取得します。ClearContentsメソッドを使用し、範囲内の数式と値をクリアしています。
画像だと、A1セルからC3セルまでが取得できる範囲となります。

Dim rng As Range
Set rng = Worksheets("Sheet1").UsedRange

UsedRangeプロパティを使用し、Sheet1シートのデータがある全てのセル範囲を取得して、Range型の変数rngに入れています。
画像だと、A1セルからG9セルまでが取得できる範囲となります。

Dim lastRow As Long
lastRow = Range("A1").End(xlDown).row

A1セルの下方向にある連続したデータの最終行を取得して数値型の変数lastRowに入れています。
画像だと、「3」が最終行として取得できます。

いろいろ紹介しましたが、それぞれ単体で使用しても業務で使えるマクロにはならないので、
業務で使えるマクロにするには、いろいろな動きを組み合わせていく必要があります。

実際に業務で使えるマクロの例

たくさんの動きをマクロにできれば、実際に業務で使えるマクロを作成することができるようになります。

事例1 毎月システムから取得できるデータ(CSV)のExcelファイルへの蓄積

考えられるマクロの動き

・CSV、Excelファイルを開く
・CSVが正しいデータ形式なのか判定(間違ったCSVデータが指定されていないか。たいてい1行目がタイトル行で、A1セルに決まった単語があることが多いのでそれと一致しているかどうか)
・Excelファイル側の最終行を取得
・CSVデータで不要行があれば削除(『金額が空欄のものは行削除』など条件がある場合)
→先頭から最終行まで1件ずつデータを確認。該当行があれば削除
・CSVのデータをコピペ
・CSVは保存せず閉じる。Excelファイルは保存して閉じる

事例2 請求書などの一括処理(作成、印刷やPDF出力)

考えられるマクロの動き

・顧客データExcelファイル、請求書テンプレートExcelファイルを開く
・ファイルが正しいデータ形式なのか判定
★以下請求書の数だけ繰り返す
・テンプレートファイルのシートをコピー
・顧客情報をコピペ
・A1セルを選択
★ここまで
・出来上がったファイルを印刷またはPDFにして保存

似たような業務はどこの会社でもあるのではないでしょうか?

上級レベルにはなりますが、OutlookやPowerPointを操作することもできるので、
メールの文面作成、ファイルの添付、送信まで一括でできたり、
ローデータからグラフを作成して、それをPowerPointに貼って資料作成ということもできます。

マクロって本当にできることが無限大・・・!

さいごに

「マクロって結局なにができるの?」と聞かれたらお伝えしたいことをまとめてみました。
長くなりました 笑
マクロを使えば、今まで手作業で行っていた作業が短時間で終えることができ、
業務効率化につながります。

効率化したい作業があるけど、マクロを作るのは難しそう・・・という場合、外注するのも一つの手です。

「こんなマクロを作りたいけど、どのくらいでいくらでできるのかな?」と思ったら、
まずはご相談ください!ご相談は無料ですのでお気軽にご連絡くださいませ。

Lenoco

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です