連載
「数百のファイルを1つ1つ開くの面倒……」、複数のExcelデータを1箇所に集約するマクロ術:働く価値を上げる“VBA/GAS”術(7)(2/3 ページ)
経費精算書のように「バラバラのデータを1箇所に集約すること」は、多く発生する業務の1つです。しかし、1つ1つのファイルを開きコピー&ペーストするのは手間が掛かる業務。その業務を、マクロを使って自動化する方法を紹介します。
経費データ収集マクロ
フォルダ「経費精算書」内の全ファイルを開き、経費精算データを「経費収集.xlsm」のシート「経費収集」に自動で集めるマクロを作成しました。
Sub 経費データ収集() Dim fso As FileSystemObject Set fso = New FileSystemObject Dim pass As String pass = ThisWorkbook.Path & "\経費精算書" Dim month As Date, department As String, fullname As String '対象月,部署,氏名 Dim i As Long, j As Long '経費精算書の行数,経費集計の行数 j = 2 Dim f As File For Each f In fso.GetFolder(pass).Files With Workbooks.Open(f) With .Worksheets(1) month = .Range("G1").Value '対象月 department = .Range("G3").Value '部署 fullname = .Range("G4").Value '氏名 i = 8 Do While .Cells(i, 1).Value <> "" Sheet1.Cells(j, 1).Value = month '対象月 Sheet1.Cells(j, 2).Value = .Cells(i, 1).Value '日付 Sheet1.Cells(j, 3).Value = department '部署 Sheet1.Cells(j, 4).Value = fullname '氏名 Sheet1.Cells(j, 5).Value = .Cells(i, 2).Value '科目 Sheet1.Cells(j, 6).Value = .Cells(i, 5).Value '摘要 Sheet1.Cells(j, 7).Value = .Cells(i, 6).Value '金額 Sheet1.Cells(j, 8).Value = .Cells(i, 7).Value '備考 i = i + 1 j = j + 1 Loop End With .Close End With Next f End Sub
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 中級レベルの「Excel VBA開発者」になるために必要な考え方
Excel VBAを使って業務効率化を実現。しかし、自分で書いたコードをメンテナンスするとき、コードの解読に時間がかかってしまったり、エラーが解消できなかったりといった苦い経験はないだろうか。どうすれば将来も楽になるコーディングができるのだろうか。 - タイプミスをゼロにするのは不可能? VBAコーディングを速めるツールとは
どんな上級プログラマーでも、タイプミスをゼロにできないまでも、「素早く正確にコーディングできる」能力を持っています。その能力を下支えする、マスターしても損のないVBEの機能を紹介します。 - 税率変更にも簡単に対応、無駄を減らすコーディングのコツとは
消費税率変更のように、「将来変わる可能性のある数値」がコード内に複数含まれている場合、修正に時間がかかってしまいます。メンテナンスを楽にするコーディングのコツとは何でしょうか。