VBAで会社名ごとにデータを抽出し新しいファイルを作成する方法

Visual Basic

VBA(Visual Basic for Applications)を使用して、Excelの特定の列に基づいてデータを抽出し、新しいファイルを自動で作成する方法を学びます。この記事では、会社名ごとにデータを抽出し、指定したフォルダに保存するマクロを作成する方法を解説します。

問題の概要

ExcelのA列に会社名が記載されており、その会社名ごとにA列からS列までのデータをコピーして、新しいファイルを作成する方法を学びます。新しいファイルの名前は「会社名_今日の日付」という形式にし、指定の場所に格納することが目標です。

以下の手順をVBAマクロで実現します。

必要なVBAコードの作成

このマクロは、各会社名ごとにデータをコピーし、新しいファイルを作成するという処理を行います。以下はそのVBAコードの一例です。

Sub ExportDataByCompany()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim companyName As String
    Dim newWorkbook As Workbook
    Dim newSheet As Worksheet
    Dim todayDate As String
    Dim savePath As String

    ' シートの設定
    Set ws = ThisWorkbook.Sheets("Sheet1") ' データがあるシート名を指定

    ' 最後の行を取得
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ' 今日の日付を取得
    todayDate = Format(Date, "yyyymmdd")

    ' 各会社名ごとに処理
    For i = 2 To lastRow
        companyName = ws.Cells(i, 1).Value ' A列の会社名を取得

        ' 新しいワークブックを作成
        Set newWorkbook = Workbooks.Add
        Set newSheet = newWorkbook.Sheets(1)

        ' 会社名ごとにA列からS列までをコピー
        ws.Range(ws.Cells(i, 1), ws.Cells(i, 19)).Copy Destination:=newSheet.Range("A1")

        ' 新しいファイルを保存
        savePath = "C:\Users\YourUsername\Documents\" & companyName & "_" & todayDate & ".xlsx"
        newWorkbook.SaveAs savePath
        newWorkbook.Close False
    Next i

    MsgBox "処理が完了しました!"
End Sub

このコードは、以下の手順で動作します。

  • 指定されたシートからA列の会社名を1つずつ取得
  • 各会社ごとに新しいワークブックを作成
  • A列からS列までのデータをコピーして新しいワークブックに貼り付け
  • 新しいファイルを「会社名_今日の日付.xlsx」という名前で保存
  • ファイルを保存後、次の会社へ処理を繰り返す

VBAコードの動作確認

VBAコードを実行する前に、以下の準備をしておく必要があります。

  • Excelファイルの会社名がA列にリストされていることを確認
  • コード内のシート名や保存先のパスを正しく設定
  • VBAマクロが実行できるように、マクロの設定を有効にする

コードを実行後、指定した保存先に「会社名_今日の日付.xlsx」の形式で新しいファイルが作成されることを確認してください。

エラー対処方法

もしVBAマクロの実行中にエラーが発生した場合、以下の点を確認してください。

  • 保存先のパス: ファイルを保存するディレクトリが正しく指定されているか確認。特に、Windowsのユーザー名やパスが正しいか確認しましょう。
  • シート名: データが入っているシートの名前が正しいか確認。
  • コピー範囲: コピーする範囲が正しく指定されているか確認(この例ではA列からS列まで)。

まとめ

このVBAマクロを使用することで、会社名ごとにデータを自動で抽出し、新しいファイルを作成する作業を効率化できます。適切にコードを設定し、ファイル保存先やシート名を確認することで、正しく動作させることができます。定期的な作業に役立つ自動化ツールとして、VBAを活用することができます。

コメント

タイトルとURLをコピーしました