Site cover image

Site icon imageExcelおさるくんのastro-notion-blog

VBA / Python / Notion / AIによる業務効率化とデータサイエンスに関する情報を発信しています!

Post title iconChatGPTの最新モデルGPT-4oを使用し、Excelシートのスクショからデータを転記・統合するVBAコードを生成する方法をご紹介します!

Featured image of the post

🔄 アップデート情報

  • 前回アップした動画にたくさんのコメント、ご質問をいただきました。ありがとうございます!
Image in a image block

  • ご質問の中にありました、VBAコードの実行方法について詳しくご説明いたします。
Image in a image block

1. コードを入力するVBE(Visual Basic Editor)の画面を表示する方法
  • まずはコードを入力するVBE(Visual Basic Editor)の画面を表示する方法をご紹介します。
    Image in a image block

  • Excelのツールバーのメニューから「開発」タブを選び、「Visual Basic」をクリックします。
    Image in a image block

  • もし開発タブが表示されていない場合は、リボンの上で右クリック、リボンのユーザー設定を選択します。
    Image in a image block

  • リボンのユーザー設定が選択されていることが確認できたら、「開発」にチェックマークを入れてOKボタンをクリックします。
    Image in a image block

  • また、ショートカットキーで起動することも可能です。Excelが開いている状態で、キーボードのAlt + F11を押すことで、直接VBEを起動することができます。
    Image in a image block
    Image in a image block

2. VBE(Visual Basic Editor)にコードを貼り付ける方法
  • 次にコードの貼り付け方法をご紹介します。
    Image in a image block

  • VBE画面の、左のプロジェクトウィンドウで現在開いているExcelファイルの「VBAProject (現在のファイル名)」を右クリックし、「挿入」→「標準モジュール」を選択します。
    Image in a image block
    Image in a image block

  • キーボードショートカットで挿入する場合はAlt ➜ I ➜ Mで挿入できます。
    Image in a image block

  • 標準モジュールを削除する場合は削除するモジュールを選択し、右クリックからモジュールの解放を選択します。
    Image in a image block
    Image in a image block

  • 「いいえ」を選択することでモジュールを削除することができます。
    Image in a image block

  • 前回記事でご紹介したChatGPTで作成したVBAコードを貼り付けます。
    Image in a image block

3. VBAコードの実行方法
  • 最後にコードの実行方法をご紹介します。
    Image in a image block

  • コードを貼り付けたら、エディタの上部にある「実行」ボタン(緑の再生ボタン)をクリックするか、F5キーを押して実行できます。
    Image in a image block

1️⃣ はじめに

  • 今回は、ChatGPTの最新モデルGPT-4o(オムニ)を利用してスクショした画面からデータ転記を行うVBAコードを生成する方法を紹介していきます。
📖
GPT-4o(オムニ)とは?
OpenAIが開発した最新のマルチモーダルAIモデルです。
  • テキスト、音声、画像、映像をシームレスに扱い、自然なテンポでのリアルタイム音声会話が可能になりました。特に、視覚と音声の理解力が際立ち、多言語対応や複雑な対話の要素を理解できるようになったと言われています。
  • GPT-4oの「o」は「omni」を意味し、omniとは全て、あまねくという意味を含み、マルチモーダルとなった新たなGPTと、多言語に対応したことを指す意図が推測されます。
  • さらに、既存モデルや競合モデルを上回る性能でありながら、制限はありますが、無料ユーザーも利用可能となっています。
Image in a image block

  • それでは早速、動画で作成方法を確認していきましょう!

2️⃣ 転記したいExcelファイルのスクショを撮る

  • 今回は画像認識の能力が強化されたGPT-4oを利用して、こちらの売上データを転記、統合するVBAを作成します。
    Image in a image block

  • 各店の売上データの転記・統合のイメージ
    flowchart TD
        Yokohama[横浜店] -->|データ転記| C[売上集計ファイルに統合]
        Sapporo[札幌店] -->|データ転記| C
        Sendai[仙台店] -->|データ転記| C
        Osaka[大阪店] -->|データ転記| C
        Tokyo[東京店] -->|データ転記| C
        Naha[那覇店] -->|データ転記| C
        Fukuoka[福岡店] -->|データ転記| C
        Nagoya[名古屋店] -->|データ転記| C
    

  • Excelファイルのデータは店舗ごとに分かれて集計されています。
    Image in a image block

  • 各店舗の入力フォーマットは日付から売上金額までの7項目で共通のものとします。
    Image in a image block

  • 各店舗の売上ファイルは店舗別売上のフォルダに格納されています。
    Image in a image block

  • まずはフォルダの階層構造がわかるようにスクショを撮ります。
    Image in a image block
    Image in a image block

  • 続いて転記・統合を行うExcelシートのスクショを撮ります。
    Image in a image block

  • こちらのファイルに転記・統合を行います。
    Image in a image block

  • 最後に、どれか1店舗のExcelシートのスクショを撮ります。今回は横浜店のスクショを撮ります。
    Image in a image block

3️⃣ GPT-4oでスクショからVBAコード生成

  • GPT-4oは画面左上のプルダウンメニューから選択することが可能です。
Image in a image block

  • 4枚のスクリーンショットをChatGPTにアップロードし、プロンプトを記述します。
    🪄
    プロンプトの内容

    1、2枚目はフォルダの階層構造です。
    3枚目は売上表.xlsm
    4枚目は横浜.xlsx
    各店舗の売上データを売上表に転記、統合するVBAコードを教えてください。
    日本語でお願いします。

    Image in a image block

  • VBAコードが出力されました。
    Image in a image block

    VBEに貼り付けてコードを実行します。

4️⃣ VBAコードの実行

  • F5キーで実行します。
    Image in a image block

  • データの転記・統合が完了しました。
    Image in a image block

  • 以上で、GPT-4oによるスクリーンショットの画面からデータ転記・統合するVBAコード生成が完了しました。
    Image in a image block

データ転記・統合するVBAコード
Sub ConsolidateSalesData()
    Dim folderPath As String
    Dim fileName As String
    Dim wsMaster As Worksheet
    Dim wsStore As Worksheet
    Dim lastRowMaster As Long
    Dim lastRowStore As Long
    Dim currentRow As Long
    
    ' 店舗売上ファイルが格納されているフォルダのパスを設定
    folderPath = ThisWorkbook.Path & "\店舗別売上\"
    
    ' マスターワークシートを設定
    Set wsMaster = ThisWorkbook.Sheets("Sheet1") ' マスターシートの名前を適宜変更
    
    ' マスターワークシートの既存データをクリア
    wsMaster.Cells.ClearContents
    
    ' マスターワークシートにヘッダーを追加
    wsMaster.Range("A1:G1").Value = Array("日付", "店舗", "商品コード", "商品名", "単価", "数量", "売上金額")
    
    ' データ貼り付けの初期行を設定
    lastRowMaster = 2
    
    ' フォルダ内の各ファイルをループ
    fileName = Dir(folderPath & "*.xlsx")
    
    Do While fileName <> ""
        ' 現在の店舗売上ファイルを開く
        Workbooks.Open folderPath & fileName
        
        ' 現在の店舗売上ファイルのワークシートを設定
        Set wsStore = Workbooks(fileName).Sheets(1) ' データが最初のシートにあると仮定
        
        ' 店舗ワークシートの最終行を取得
        lastRowStore = wsStore.Cells(wsStore.Rows.Count, "A").End(xlUp).Row
        
        ' 店舗ワークシートからマスターワークシートにデータをコピー
        wsStore.Range("A2:G" & lastRowStore).Copy Destination:=wsMaster.Range("A" & lastRowMaster)
        
        ' マスターワークシートの最終行を更新
        lastRowMaster = wsMaster.Cells(wsMaster.Rows.Count, "A").End(xlUp).Row + 1
        
        ' 店舗売上ファイルを閉じる
        Workbooks(fileName).Close SaveChanges:=False
        
        ' 次のファイル名を取得
        fileName = Dir
    Loop
    
    MsgBox "売上データの統合が完了しました!", vbInformation
End Sub

5️⃣ さいごに

  • 最後までお読みいただきありがとうございます!
  • この記事へのご質問やアドバイスがありましたら、ぜひコメントもお待ちしております。
  • またX(Twitter)でもVBA、Pythonに関するアウトプットをしていますので、🔽フォローいただけますと幸いです😆