ChatGPTを使用してエクセルマクロを作成する方法
第二弾になります!
第一弾はこちら!
ChatGPTでマクロ作成①〜ブック内のシートからデータを抜き出す〜
マクロって何?という超初心者はこちらの記事も参考にしてください。
【超初心者向け】マクロ、VBAとは?5分でできる簡単なマクロの使い方も紹介!
今回は複数のブックのデータの一部を抜き出して、
一つのエクセルにまとめる方法です。
マクロつきエクセルファイル(.xlsm)
と
複数のエクセルファイル(.xlsx)
が存在する場合に、マクロつきエクセルファイルにエクセルファイルのデータを転記するというマクロです。
作成方法はこんな感じです。
(第一弾と同じなので不要な方は読み飛ばしてください)
①Chat GPTにやりたいことを文章で記入する
②出力されたコードをコピペする
③必要であればファイル名など微修正を行う
④作動させる
⑤異常があれば、Chat GPTに変更をお願いする
無理そうなら、質問文を大きく変えてみるといい
⑥問題なければ完了!!!
非常に簡単ですよね!
ここで重要なのが、
どういった文章で質問するか
です。
実際にChat GPTに聞いてみた質問は下記になります
1つ目のエクセルファイル
・出力エクセルのA1に抽出したファイル名を出力
・フォルダ内のエクセルからC2:C13のデータを抜き出して、A2:A14からに出力データを貼り付け
・エクセルファイルを閉じる2つ目のデータ
・B1にフォルダ名を出力
・フォルダ内のエクセルからC2:C13のデータを抜き出して、B2:B14からに出力データを貼り付け以降のファイルも同様に操作する
この文章に対する解答が下記マクロです。
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
2. フォルダ内の異なるブックからデータを抽出する