ChatGPTでマクロ作成②〜複数のブックのデータをまとめる〜

Chat GPT✖️Excel

ChatGPTを使用してエクセルマクロを作成する方法
第二弾になります!

 

マクロって何?という超初心者はこちらの記事も参考にしてください。
【超初心者向け】マクロ、VBAとは?5分でできる簡単なマクロの使い方も紹介!

 

今回は複数のブックのデータの一部を抜き出して、
一つのエクセルにまとめる方法です。

あるフォルダに

マクロつきエクセルファイル(.xlsm) 

と 
複数のエクセルファイル(.xlsx)
が存在する場合に、マクロつきエクセルファイルにエクセルファイルのデータを転記するというマクロです。

 

作成方法はこんな感じです。

(第一弾と同じなので不要な方は読み飛ばしてください)

①Chat GPTにやりたいことを文章で記入する

②出力されたコードをコピペする

③必要であればファイル名など微修正を行う

④作動させる

⑤異常があれば、Chat GPTに変更をお願いする
無理そうなら、質問文を大きく変えてみるといい

⑥問題なければ完了!!!

 

非常に簡単ですよね!
ここで重要なのが、

どういった文章で質問するか

です。

 

実際にChat GPTに聞いてみた質問は下記になります

フォルダ内のすべてのエクセルファイルのデータをまとめるマクロを作成する
1つ目のエクセルファイル
・出力エクセルのA1に抽出したファイル名を出力
・フォルダ内のエクセルからC2:C13のデータを抜き出して、A2:A14からに出力データを貼り付け
・エクセルファイルを閉じる2つ目のデータ
B1にフォルダ名を出力
・フォルダ内のエクセルからC2:C13のデータを抜き出して、B2:B14からに出力データを貼り付け以降のファイルも同様に操作する

 

この文章に対する解答が下記マクロです。

Sub CombineExcelData()
Dim FolderPath As String
Dim OutputWorkbook As Workbook
Dim OutputWorksheet As Worksheet
Dim File As String
Dim ColumnIndex As Long’ フォルダのパスを指定
   FolderPath = “フォルダのパスをここに入力“‘ マクロが保存されているワークブックを取得
   Set OutputWorkbook = ThisWorkbook’ フォルダ内のエクセルファイルをループ処理
   File = Dir(FolderPath & “\*.xlsx”)
ColumnIndex = 1 ‘ データを出力する最初の列
   Do While File <> “”

ターゲットのエクセルファイルを開く
       Dim TargetWorkbook As Workbook
Set TargetWorkbook = Workbooks.Open(FolderPath & “\” & File)

       ‘ エクセルファイル名を出力
       Dim FolderName As String
FolderName = Mid(File, 1, InStrRev(File, “.”) – 1) ‘ 拡張子を除いたファイル名
       OutputWorkbook.Sheets(1).Cells(1, ColumnIndex).Value = FolderName
‘ C2:C13のデータを抜き出して出力
       Dim TargetData As Range
Set TargetData = TargetWorkbook.Sheets(1).Range(“C2:C13”)
Dim RowIndex As Long
For RowIndex = 2 To 14
OutputWorkbook.Sheets(1).Cells(RowIndex, ColumnIndex).Value = TargetData.Cells(RowIndex – 1, 1).Value

Next RowIndex

ターゲットのエクセルファイルを閉じる
       TargetWorkbook.Close SaveChanges:=False

次の列に移動
       ColumnIndex = ColumnIndex + 1

次のファイルを取得
       File = Dir

Loop

データを整理する
   OutputWorkbook.Sheets(1).Columns.AutoFit

End Sub

さて今回は第一弾と異なり少し複雑です。
というのも、自分で少し変更する必要があるからです。
このマクロでいうと
「フォルダのパスをここに入力」という一文です。
ここにエクセルファイルがあるフォルダのパスを入力する必要があります。
※当該マクロが存在するフォルダを指定という形にもできます。
また、データを整理するという行動として
オートフィルターが入っています。
不要であれば削除してください。
これを実際に
 開発 ⇨ Visual Basic
のモジュールにコピーペーストすれば動作します。
以上になります。
データをまとめるためにマクロを使いたいといった際、
大きく分けて2つの動作をしたいと考えると思います。
1. 同じブック内でシートからデータをまとめる
2. フォルダ内の異なるブックからデータを抽出する
これら2つの方法に関して、
Chat GPTを使うことで、
初心者でも簡単にマクロを作成することができます。
データの抽出範囲などの微修正に関しては、
Chat GPTに質問すればOKですし、
追加で少しVBAの勉強をすると、
出力されたマクロをベースに
マクロの記録なども利用してカスタマイズすることで、
かなりの時間短縮になります。
このレベルであれば、
無料のChatGPTで十分可能ですので、
是非利用してみてください。
タイトルとURLをコピーしました