LoginSignup
kento971017
@kento971017

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

【VBA】Outlookの指定フォルダの昨日のメールを.txtで名前を付け保存したい

解決したいこと

Outlookで指定フォルダ内の昨日のメールを.txtで名前付けて保存するVBAを組みたいのですが、うまくメールアイテムを保存できません。
保存イメージとしては画像の通りで、手作業の場合だと『フォルダ内のメールを選択』⇒『ファイルタブをクリック』⇒ 『名前を付けて保存』と押した際にできるテキストファイルの見た目になります。
image.png
お忙しいところ恐縮ですが、方法をご教授いただけますと幸いです。

発生している問題・エラー

上記の保存イメージの通りに情報が取得できない。

該当するソースコード

Option Explicit

Sub 昨日のOutlook情報をテキストドキュメントにして保存()

    Dim dtStart As Date
    Dim dtEnd As Date
    Dim strStart As String
    Dim strEnd As String
    Dim strFilter As String
    Dim objOL As Object
    Dim objNAMESPC As Object
    Dim myfolders As Object
    Dim colItems As Items
    Dim fldCurrent As Folder
    Dim objItem As MailItem

    ' エクスポート範囲を指定
    dtStart = Date - 1
    dtEnd = Date - 1
    strStart = FormatDateTime(dtStart, vbShortDate)
    strEnd = FormatDateTime(dtEnd, vbShortDate)
    strFilter = "[受信日時] >= '" & strStart & _
                 "' AND [受信日時] <= '" & strEnd & " 23:59'"

    '保存したいメールフォルダを取得
    Set objOL = CreateObject("Outlook.Application")
    Set objNAMESPC = objOL.GetNamespace("MAPI")
    Set myfolders = objNAMESPC.Folders("aaaaaa@gmail.com").Folders("テスト")

    'メールフォルダをフィルタリング
    Set colItems = myfolders.Items.Restrict(strFilter)

End Sub

自分で試したこと

メールフォルダーのフィルタリングと指定フォルダの取得はできたのですが、ここからテキストドキュメントへ画像のような形で保存する方法が分かりません。

0

2Answer

こちらが参考になりそうです。

書式を整えたい(カスタマイズしたい)場合は、出力部分をStreamWriterなどで実装する必要が出てくるかもしれません。

0

Comments

  1. @kento971017

    Questioner
    ありがとうございます!
    結論、エラーが出てしまってよく分からないです。

    いただいたサイトを見て、『colItems.SaveAs ファイルパス, olTXT』でテキストファイルにできるということだと思って試したのですが、エラー438:メソッドをサポートをしていないと出てきます。
    colItemsもサイト通りに型をobjectとして定義したのですが…。

    初心者で申し訳ございませんが、何が違うのか分かれば教えていただければ幸いです。

colItemsはItemsオブジェクト、対してsaveAsメソッドが使えるのはMailItemオブジェクトです。

colItems(index)がMailItemオブジェクトになります。
(forで回すなどして試してみてください。)

0

Comments

  1. @kento971017

    Questioner
    かしこまりました。
    ご丁寧にありがとうございます。

Your answer might help someone💌