ITに関する事はなんでもお気軽にお問合せ下さい
業務効率化
2023年12月28日
読了時間: 14分

Excel VBAで業務を自動化:初心者でもできる実践例

大久保博
ITサポートクラブ 代表
Excel VBAで業務を自動化:初心者でもできる実践例

繰り返し作業を自動化して、業務時間を大幅に削減する方法をご紹介します。

Excel VBAとは?

VBA(Visual Basic for Applications)は、Excelに組み込まれたプログラミング言語です。これを使うことで、繰り返し行う作業を自動化できます。

なぜVBAを学ぶべきなのか

VBA自動化の3つのメリット:

1. 時間の大幅削減

手作業で1時間かかる作業が、ボタン1つで数秒で完了します。

2. ミスの削減

人間が行うとミスが発生しやすい作業も、VBAなら正確に実行します。

3. 追加費用不要

Excelがあれば、追加のソフトウェアは不要です。

VBAの基本:開発タブを表示する

ステップ1:開発タブを有効化

1. 「ファイル」→「オプション」を選択

2. 「リボンのユーザー設定」をクリック

3. 右側の「開発」にチェックを入れる

4. 「OK」をクリック

これで、リボンに「開発」タブが表示されます。

ステップ2:VBAエディタを開く

方法1: 「開発」タブ→「Visual Basic」をクリック

方法2: キーボードで「Alt + F11」を押す

VBAエディタが開きます。ここでコードを書いていきます。

実践例1:データの一括整形

課題

毎日、取引先から送られてくるExcelファイルのデータを整形する作業に30分かかっている。

解決策

VBAで自動化し、ボタン1つで完了させる。

コード例

```vba

Sub データ整形()

' 不要な行を削除

Rows("1:3").Delete

' 列幅を自動調整

Columns.AutoFit

' 見出し行に色を付ける

Range("A1:F1").Interior.Color = RGB(68, 114, 196)

Range("A1:F1").Font.Color = RGB(255, 255, 255)

Range("A1:F1").Font.Bold = True

' 罫線を引く

Range("A1").CurrentRegion.Borders.LineStyle = xlContinuous

MsgBox "データ整形が完了しました!"

End Sub

```

効果

30分の作業が5秒で完了。月間で約10時間の削減。

実践例2:複数シートのデータ集計

課題

各支店のシートから売上データを集計し、サマリーシートにまとめる作業に1時間かかっている。

解決策

VBAで全シートのデータを自動集計。

コード例

```vba

Sub 売上集計()

Dim ws As Worksheet

Dim サマリー As Worksheet

Dim 最終行 As Long

Dim 集計行 As Long

' サマリーシートを設定

Set サマリー = Worksheets("サマリー")

サマリー.Range("A2:D1000").ClearContents

集計行 = 2

' 各シートからデータを集計

For Each ws In Worksheets

If ws.Name <> "サマリー" Then

最終行 = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

ws.Range("A2:D" & 最終行).Copy

サマリー.Cells(集計行, 1).PasteSpecial xlPasteValues

集計行 = 集計行 + 最終行 - 1

End If

Next ws

MsgBox "集計が完了しました!"

End Sub

```

効果

1時間の作業が10秒で完了。月間で約20時間の削減。

実践例3:メール送信の自動化

課題

毎週、取引先に同じ内容のメールを個別に送信する作業に2時間かかっている。

解決策

VBAでOutlookと連携し、メールを自動送信。

コード例

```vba

Sub メール一括送信()

Dim OutlookApp As Object

Dim メール As Object

Dim 最終行 As Long

Dim i As Long

Set OutlookApp = CreateObject("Outlook.Application")

最終行 = Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To 最終行

Set メール = OutlookApp.CreateItem(0)

With メール

.To = Cells(i, 2).Value ' B列にメールアドレス

.Subject = "週次レポート"

.Body = Cells(i, 1).Value & " 様" & vbCrLf & vbCrLf & _

"いつもお世話になっております。" & vbCrLf & _

"週次レポートをお送りいたします。"

.Send

End With

Next i

MsgBox "メール送信が完了しました!"

End Sub

```

効果

2時間の作業が1分で完了。月間で約8時間の削減。

実践例4:ファイルの一括処理

課題

フォルダ内の複数のExcelファイルから、特定のデータを抽出してまとめる作業に3時間かかっている。

解決策

VBAでフォルダ内のすべてのファイルを自動処理。

コード例

```vba

Sub ファイル一括処理()

Dim フォルダパス As String

Dim ファイル名 As String

Dim wb As Workbook

Dim 集計行 As Long

フォルダパス = "C:\データ\"

ファイル名 = Dir(フォルダパス & "*.xlsx")

集計行 = 2

Do While ファイル名 <> ""

Set wb = Workbooks.Open(フォルダパス & ファイル名)

' データをコピー

wb.Sheets(1).Range("A2:D100").Copy

ThisWorkbook.Sheets("集計").Cells(集計行, 1).PasteSpecial xlPasteValues

集計行 = 集計行 + 99

wb.Close SaveChanges:=False

ファイル名 = Dir()

Loop

MsgBox "ファイル処理が完了しました!"

End Sub

```

効果

3時間の作業が30秒で完了。月間で約12時間の削減。

VBA学習のステップ

ステップ1:マクロの記録機能を使う

1. 「開発」タブ→「マクロの記録」をクリック

2. 実際に操作を行う

3. 「記録終了」をクリック

4. VBAエディタで記録されたコードを確認

これで、自分の操作がどのようなコードになるかを学べます。

ステップ2:コードを読んで理解する

記録されたコードを読んで、各行が何をしているかを理解しましょう。

ステップ3:コードを修正してみる

記録されたコードを少しずつ修正して、動作を変えてみましょう。

ステップ4:ゼロからコードを書く

慣れてきたら、記録機能を使わずに、自分でコードを書いてみましょう。

VBA活用の注意点

1. バックアップを取る

VBAを実行する前に、必ずファイルのバックアップを取りましょう。

2. エラー処理を追加

予期しないエラーに対応できるよう、エラー処理を追加しましょう。

3. コメントを書く

コードに日本語のコメントを書いて、後で見返したときに理解できるようにしましょう。

4. セキュリティ設定

マクロのセキュリティ設定を適切に行い、悪意のあるマクロから保護しましょう。

よくある質問

Q1:プログラミング経験がなくても大丈夫?

A:はい、大丈夫です。マクロの記録機能から始めれば、徐々に理解できます。

Q2:どのくらいの期間で習得できる?

A:基本的な自動化なら、1〜2週間の学習で実現できます。

Q3:Excelのバージョンは関係ある?

A:Excel 2010以降であれば、ほぼ同じように使えます。

Q4:Macでも使える?

A:Mac版Excelでも使えますが、一部機能に制限があります。

まとめ

Excel VBAを使えば、日々の繰り返し作業を大幅に削減できます。最初は難しく感じるかもしれませんが、マクロの記録機能から始めれば、誰でも習得できます。

今日からできること:

1. 開発タブを有効化する

2. マクロの記録機能を試してみる

3. 記録されたコードを読んでみる

「VBAを学びたいけど、一人では不安」「自社の業務に合わせた自動化を実現したい」という方は、IT活用サポートクラブにご相談ください。VBAの基礎から、実際の業務自動化まで、丁寧にサポートいたします。

#Excel#VBA#自動化

IT活用でお困りのことはありませんか?

無料相談で、あなたのビジネスに最適なIT活用方法をご提案いたします

お問い合わせフォーム

関連記事

Talk with Us