【ChatGPTでマクロ作成】OutlookのメールをExcelに取り込む方法!

ChatGPT

今回は、ChatGPTを使ってOutlookのメールをExcelに取り込むマクロを作成していきたいと思います。

ChatGPTを使ったマクロ(VBA)の作成は、初心者の方にこそおすすめしたい使い方です。

このやり方を使って、あなたなりのVBAをChatGPTを使って簡単に作ってみてください!

今回作るVBAと注意点

今回作成するVBAは、Outlookの受信フォルダのメール全件を、エクセルに書き込むVBAとなります。このコードでは全件を取得する為、Outlookの受信フォルダにメールが大量にある場合、フリーズする可能性がありますので、ご注意ください。

今後、宛先指定・日付指定などの機能を、ChatGPTを使ってどのように追加するかも、解説していく予定です。

メールの作成・送信については、別記事にまとめておりますので、併せてご確認をお願いします!

OutlookのメールをExcelに取り込むVBAの作成手順

ステップ1: VBAエディタを起動しよう

VBAを書き込むには、標準モジュールを作成する必要があります。

こちらについては、別ページで詳しく説明していますので、わからない方はこちらをご確認ください!

ステップ2: ChatGPTにコード作成を指示しよう

コードの作成と環境設定を同時に確認していきます。単純に、○○を行うVBAを作成してください」という形で、ChatGPTに入力すればOKです。今回行いたいことは、「OutlookのメールをExcelに取り込む」ですので、「OutlookのメールをExcelに取り込みを行うVBAを作成してください。」という形になります。

こうして作成されたコードですが、英語ばかりで見るのも嫌になる人も多いと思います。ただ、ほとんどの英語の部分なんて読む必要ありません

作成されたコードは、日本語の部分だけ読んでいってください。

Sub ImportOutlookEmails()
    Dim OutlookApp As Outlook.Application
    Dim OutlookNamespace As Outlook.Namespace
    Dim OutlookFolder As Outlook.MAPIFolder
    Dim OutlookItems As Outlook.Items
    Dim OutlookMail As Outlook.MailItem
    Dim xlApp As Excel.Application
    Dim xlWorkbook As Excel.Workbook
    Dim xlWorksheet As Excel.Worksheet
    Dim iRow As Integer
    
    <strong>' Outlookのインスタンスを作成</strong>
    Set OutlookApp = New Outlook.Application
    Set OutlookNamespace = OutlookApp.GetNamespace("MAPI")
    
    <strong>' 取り込むOutlookのメールフォルダを指定(例: 受信トレイ)</strong>
    Set OutlookFolder = OutlookNamespace.GetDefaultFolder(olFolderInbox)
    
    <strong>' Excelのインスタンスを作成</strong>
    Set xlApp = New Excel.Application
    xlApp.Visible = True <strong>' Excelを表示する場合はTrueに設定</strong>
    
    <strong>' 取り込むExcelファイルを指定(存在しない場合は新規作成)</strong>
    Set xlWorkbook = xlApp.Workbooks.Add
    Set xlWorksheet = xlWorkbook.Sheets(1)
    
   <strong> ' Excelヘッダー行を設定</strong>
    xlWorksheet.Cells(1, 1).Value = <strong>"送信者"</strong>
    xlWorksheet.Cells(1, 2).Value = <strong>"件名"</strong>
    xlWorksheet.Cells(1, 3).Value = <strong>"本文"</strong>
    
    iRow = 2 <strong>' データ行の開始行</strong>
    
    <strong>' Outlookのメールをループして取得</strong>
    Set OutlookItems = OutlookFolder.Items
    For Each OutlookMail In OutlookItems
        <strong>' メールを取得し、必要な情報をExcelに書き込む</strong>
        xlWorksheet.Cells(iRow, 1).Value = OutlookMail.SenderEmailAddress
        xlWorksheet.Cells(iRow, 2).Value = OutlookMail.Subject
        xlWorksheet.Cells(iRow, 3).Value = OutlookMail.Body
        
        iRow = iRow + 1
    Next OutlookMail
    
    <strong>' Excelファイルを保存</strong>
    xlWorkbook.SaveAs "C:\Path\to\your\file.xlsx" <strong>' 保存先のパスを適切に指定</strong>
    
   <strong> ' メモリ解放</strong>
    Set OutlookApp = Nothing
    Set xlApp = Nothing
End Sub

日本語の前についている「’」が、コメントという意味になっています。コメントは、プログラム自体には関係がない文字という意味となっています。ChatGPTが作成するコードは、細かく「’」が付けられていて、そのあとのコードの動作を説明しています。

インスタンスの作成や、メモリの開放など、よくわからない言葉もあると思いますが、それも無視して大丈夫です。まず日本語の部分だけを読んでいって修正が必要な個所を探していきます。

修正が必要となる主な部分は、「保存先」や「ファイル名」といった文言がある部分です。

修正①:‘ 保存先のパスを適切に指定

「保存先のパス」や「保存先名」などが書いてある場合は、自分の保存したい場所に変更する必要があります。

今回の場合、下から5行目の「保存先のパスを適切に指定」と書かれている部分になります。

xlWorkbook.SaveAs “C:\Path\to\your\file.xlsx”
 →xlWorkbook.SaveAs “(保存先のフォルダ)\(ファイル名).xlsx”

例えば、「デスクトップ」に「メール」という名前のエクセルを作りたい場合。保存先のフォルダが「デスクトップ」でファイル名が「メール」となります。

xlWorkbook.SaveAs “C:\Path\to\your\file.xlsx”
 →xlWorkbook.SaveAs C:\Users\デスクトップ\メール.xlsx”

デスクトップの場所はそれぞれですので、変更の必要はありますが、おおよそこのような形で変更が必要です。

修正②:‘ 取り込むExcelファイルを指定(存在しない場合は新規作成)

こちらは、「存在しない場合は新規作成」なので必須ではありません。ただ今のコードだと、毎回新しく別のエクセルが作成されてコードが実行される為、VBAを書き込んだエクセルが白紙になってしまいます。

今回は、VBAを書き込んだエクセルファイル自体に、メールを書いてもらうように修正してみたいと思います。そのためこの部分を書き換えます。

    ' 取り込むExcelファイルを指定(存在しない場合は新規作成)
    Set xlWorkbook = xlApp.Workbooks.Add

この線を引いた部分が「新しいエクセルを作る」というVBAになっています。これを「今VBAを動かしているエクセルに処理を行う」というコードに書き換えます。

Set xlWorkbook = xlApp.Workbooks.Add
 →Set xlWorkbook = ThisWorkbook

これにより、今VBAを実行しているエクセルにメールの内容を取り込めます。

ステップ3:コードを実行する

修正が終われば、コードを実行します。

なおこのコードを標準設定で実行すると、エラーが表示されます。

このエラーは、環境設定から「Microsoft Outlook 16.0 Object Library」を選択することで解消できます。

このエラーについても、前回の記事で解決しています。ChatGPTを使ってトラブルシューティングをしていますので、やり方が分からない方も、是非見てみてください。

この環境設定の変更を行うと、コードが実行できるようになります。このコードを実行すると、エクセルにOutlookの内容が全件転記されるようになります。

最後に

今回は、ChatGPTを使ったOutlookのメールをExcelに取り込む方法を解説しました。

このサイトでは、VBAの初心者の方を対象に、ChatGPTを活用した作成方法や、コードの解説などを行っています。

是非ともほかの記事も参考にしていただき、スキルアップをしながら効率化を目指していきましょう。

コメント

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