キャスレーコンサルティングSI部の高橋です。

単純作業の効率を上げてくれるツールはたくさんありますが、

新しくツールを入れる場合、セキュリティ面などで勝手に入れることができないことが多々あります。

そこで、作業の効率を図るために、大概の端末に入っているEXCELを使いVBAを組んでみようと思います。

繰り返し作業の効率化

テストエビデンスや設計書など、決まった雛形を基に、ファイル名やシート名を一部変更して大量に作成する時

毎回、雛形をコピーし、ファイル名を変更し、シート名を変更を繰り返していくと、地味に時間がかかってしまいます。

このように時間がかかる繰り返し作業を自動化することができれば、かなり効率が上がるのではないでしょうか。

そこで今回は、雛形をコピーし、規則性に沿ったファイル名、シート名に変更するVBAを組んでみようと思います。

VBAをやってみよう

VBAを実行するまでの手順を説明いたします。

1.EXCELファイルを開き、開発タブを選択

開発タブが出ていないときは、以下の手順で、開発タブを表示してください。

1.ファイルを選択

画像①

2.オプションを選択

画像①_2

3.リボンのユーザ設定を選択し、メインタグの開発チェックボックスを選択し、OKボタンを押下

画像①_3

2.VBAを開く

1.開発タブから、Visual Basicを選択

画像②

2.左のフォームのThisWorkbookをダブルクリックし、開きます

画像②_2

3.VBAを書く

  1.下記のように、VBAを書きます。

画像③

Sub CopyAndRename()
    'ファイル作成数
    Const makeFileCount As Integer = 3
    'ファイル数カウント
    Dim fileCount As Integer
    '作成ファイル名
    Dim makeFile As String
    fileCount = 1
    '作成ファイル数分、雛形をコピーする
    Do While fileCount <= makeFileCount
        '作成ファイル名
        makeFile = "C:\AAA\テストエビデンス_" & fileCount & ".xls"
        '雛形をコピーして、新しいファイルを作成
        FileCopy "C:\AAA\テストエビデンス_雛形.xls", makeFile
        '新しく作成したファイルを開く
        Workbooks.Open Filename:=makeFile, ReadOnly:=False
        '新しく作成したファイルのシート名をエクセル名にする(拡張子なしファイル名)
        ActiveWorkbook.Worksheets(1).Name = Mid("テストエビデンス_" & fileCount, 1, 30)
        '保存して閉じる
        ActiveWorkbook.Close savechanges:=True
        'ファイル数カウントを増やす
        fileCount = fileCount + 1
    Loop
End Sub

【説明】

・FileCopy 雛形ファイル 作成ファイル

雛形ファイル、作成ファイルをフルパスでファイル名指定することで、ファイルが作成されます。

・Workbooks.Open Filename:=作成ファイル, ReadOnly:=False

作成ファイルを、更新可能(ReadOnly:=False)で開きます。

・Mid(作成ファイル名, 1, 30)

作成ファイル名を30文字にします。

※シート名で利用しますが、長い文字列だとシート名で利用できないため、30文字にしています。

・ActiveWorkbook.Worksheets(1).Name = Mid(作成ファイル名, 1, 30)

作成したファイルのsheet1の名前を、作成ファイル名にします。

・ActiveWorkbook.Close savechanges:=True

作成したファイルを保存(savechanges:=True)して閉じます。

4.実行

  赤枠の三角のボタンを押下すると実行されます。

画像④

5.作成結果

雛形を元に、ファイル作成されます。

1.実行前

画像⑤

2.実行後

赤枠のファイルが作成されたExcel

画像⑤_2

手で1つ1つファイルを作成していった方が早いこともありますが、

手で繰り返して行っていくと、ケアレスミスを起こしたり、

後日、同様の作業が今後も行うときの同じだけ時間を使ってしまいます。

VBAを利用することで、ケアレスミス防止や、

トータルでの作業時間の短縮になることもありますので、一度利用してみてはいかがでしょうか。