Excel VBAで複数シートから注文書を作成する方法 – ACDシートのデータを転記するコード例

Excel

Excel VBAを使って、複数のシートからデータを転記して注文書を作成する方法について説明します。この記事では、A 一覧、B 注文書、C コード一覧、D 納品先一覧の4つのシートから必要な情報を集めて、注文書フォーマットに転記するVBAコードの作成方法を解説します。

複数シートからデータを転記する基本的なVBAコード

まずは、基本的なVBAコードを使って、A 一覧、C コード一覧、D 納品先一覧のデータをB 注文書シートに転記する方法を紹介します。このコードは、A 一覧から情報を転記し、C コード一覧からコードを、D 納品先一覧から納品先の情報を転記します。

Sub CreateOrderSheet() 
    Dim wsOrder As Worksheet, wsA As Worksheet, wsC As Worksheet, wsD As Worksheet 
    Dim lastRowA As Long, lastRowC As Long, lastRowD As Long 
    Set wsOrder = ThisWorkbook.Sheets("B 注文書") 
    Set wsA = ThisWorkbook.Sheets("A 一覧") 
    Set wsC = ThisWorkbook.Sheets("C コード一覧") 
    Set wsD = ThisWorkbook.Sheets("D 納品先一覧") 

    ' A 一覧から転記 (1行目から5行目) 
    lastRowA = wsA.Cells(wsA.Rows.Count, 1).End(xlUp).Row 
    For i = 1 To 5 
        wsOrder.Cells(i, 1).Value = wsA.Cells(i, 1).Value 
    Next i 

    ' C コード一覧から転記 (7列目) 
    lastRowC = wsC.Cells(wsC.Rows.Count, 1).End(xlUp).Row 
    For i = 1 To lastRowC 
        If wsOrder.Cells(i + 6, 7).Value = "" Then 
            wsOrder.Cells(i + 6, 7).Value = wsC.Cells(i, 1).Value 
        End If 
    Next i 

    ' D 納品先一覧から転記 (14行目から21行目) 
    lastRowD = wsD.Cells(wsD.Rows.Count, 1).End(xlUp).Row 
    For i = 14 To 21 
        wsOrder.Cells(i, 1).Value = wsD.Cells(i - 13, 1).Value 
    Next i 
End Sub

上記のコードは、必要なデータをそれぞれのシートからB 注文書シートに転記します。コードは基本的なデータ転記を行い、転記先のセルを指定することで、A 一覧、C コード一覧、D 納品先一覧から正しい情報を引き出してきます。

VBAコードの実行手順

このVBAコードを実行するためには、以下の手順を踏む必要があります。

  • Excelを開き、Alt + F11を押してVBAエディタを開く
  • 「挿入」→「モジュール」を選択し、新しいモジュールを作成
  • 上記のコードをコピーしてモジュールに貼り付け
  • F5キーを押してコードを実行

これで、注文書が作成され、指定したシートにデータが転記されます。

注意点とカスタマイズ方法

このコードは基本的なサンプルですが、シートのデータが異なる場合や転記するデータの範囲が変更される場合、コードをカスタマイズする必要があります。たとえば、転記元のシートの列や行数が変わった場合、コード内のセル範囲を適切に調整する必要があります。

また、複数のシートからの転記を行う際には、転記先のシートが正しいかどうかや、データの重複を避けるためのチェック機能を追加することもおすすめです。

まとめ

Excel VBAを使って、複数シートからデータを転記して注文書を作成する方法について解説しました。コードをカスタマイズすることで、様々なシート構成に対応可能です。この基本的なコードを元に、より複雑な転記処理にも対応できるようになります。VBAを使いこなせるようになることで、Excel作業が効率化され、業務をよりスムーズに進めることができます。

コメント

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