疑問・質問・マクロの要望

このブログでは Outlook に関する質問や疑問、マクロの要望などを募集しています。
この記事のコメントに入力してご質問等をお寄せください。(コメントに入力される際には、他の質問と区別できるよう、できる限り名前の欄にハンドル名などを入れてくださると助かります。)
また、ご質問に Outlook のバージョンや使用環境の詳細を記載していただくと、より的確な回答が可能になると思いますので、ご協力をお願いします。

なお、可能な限りお答えしたいと思いますが、すべてのコメントやメッセージにお答えできるとは限りません。特に、ログやデータの解析が必要なトラブルに対するご質問や、複雑なマクロのご要望などにはお答えできない場合があります。
確実に回答が必要な場合や、差し迫ったトラブルへの対応、製品の恒久的な対応やマイクロソフト社の正式見解が必要な場合は、マイクロソフトのサポート窓口にお問い合わせください。

アーカイブ リンク
2018年
2017年
2016年以前

疑問・質問・マクロの要望」への107件のフィードバック

  1. いつも勉強させていただいております。
    過去記事を参考にさせていただきマクロ作成を試しているのですが、
    VBAについて理解が浅いためかうまく作成することができず、
    お力をお貸しいただけないでしょうか。

    ■利用環境
    OSバージョン:Windows7 SP1 & Windows10 RD2
    Outlookバージョン:Outlook2010

    ■参考にした過去記事
    ・メールの内容を Excel ファイルにかき出すマクロ
    ・本文から取得したデータを項目別に Excel のシートに書き出すマクロ
    ・決まった件名で終わるメッセージを受信したら、キーワードを含む 1 行を CSV ファイルに保存するマクロ
    ・Outlook 起動時に受信後 14 日が経過しているメールを受信トレイから移動するマクロ

    ■前提
    顧客のデータベースの内容が変更されると、翌日にシステムからメールが送られてきます。
    会社名や管理番号以外は変更があった箇所のみ以下のメール本文例のように記載されます。
    ([項目名]は固定値で変更がない場合はメールには記載されない。)

    該当の[項目名]の後ろ何文字~何文字をエクセルに転記という形を目指してみましたが、
    間に「改行コード、半角スペース、任意の文字列(メールによって文字数は変動)」が
    記載された行が含まれる事が要因かと思うのですが、全角と半角カナ英数字のときで
    取得される位置が変わってしまい、よくわからなくなってしまいました。

    ◎実現したいこと
    (1)指定フォルダ内のすべてのメールの本文内の特定の内容をエクセルに書き出したい。
      ※特定の内容は「変更後:」以降の文字列。(下記メール本文例を参照)
       「変更前:~(任意の文字列)」の行は転記はせずに飛ばしたい。
      ※メール本文内の[項目名]の前には半角スペース4つ、[変更前:][変更後:]の前には
       半角スペースが6つ記載されています。

    (2)上記の処理がすべて完了後に該当フォルダのサブフォルダへ移動させたい。

    ●メール本文例1(※書き出し先のエクセル表のイメージの行4のように転記したい)
    ============================================================
    会社名 :■■■ 株式会社 
    管理番号 :0000000003

    変更点 :
    2019/01/15
    郵便番号
    変更前:444-5555
    変更後:333-3333

    住所
    変更前:■■県■■市4-5 ■■ビル5F
    変更後:■■県■■市3-3-3 ■■ビル3F

    ============================================================

    ●メール本文例2(※書き出し先のエクセル表のイメージの行5のように転記したい)
    ============================================================
    会社名 :○○○ 相互会社 
    管理番号 :0000000004

    変更点 :
    2019/01/15
    部署名
    変更前:第一製造部 
    変更後:第三製造部 

    部署名カナ
    変更前:ダイイチセイゾウブ
    変更後:ダイサンセイゾウブ

    ============================================================

    ◎書き出し先のエクセル表のイメージ

    \A列 \B列 \C列 \D列 \E列 \F列 \
    行1\①会社名 \②管理番号 \③部署名 \④部署名カナ \⑤郵便番号 \⑥住所 \
    行2\●●● 株式会社 \0000000001 \管理本部 \カンリホンブ \111-1111 \●●市●●町1-1 ●●ビル4階 \
    行3\□□□ 有限会社 \0000000002 \第一営業部 \ダイイチエイギョウブ \222-2222 \□□郡□□2-2-2 □□ビル2F \
    行4\■■■ 株式会社 \0000000003 \ \ \333-3333 \■■市3-3-3 ■■ ビル3F \
    行5\○○○ 相互会社 \0000000004 \第三製造部 \ダイサンセイゾウブ \ \ \

    ※各項目内の文字列についての補足(※具体例は書き出し先のエクセル表のイメージの行2、行3)
    ①会社名:全角
    ②管理番号:半角英数字
    ③部署名:全角
    ④部署名カナ:半角カナ
    ⑤郵便番号:半角英数字
    ⑥住所:全角、半角カナ英数字が混在 ※

    ※書き出し先のエクセル表のイメージ行1の項目は一例で、実際にはさらに数が多くなります。

    お手数おかけして大変申し訳ございませんが、
    何卒よろしくお願いいたします。

  2. ネットで検索しましたが、他に方法がないみたいなので、あまりマクロに詳しくない者でも順を追えばできるような方法を載せて欲しいです。
    私がやりたいことは「起動時にIMAPの各アカウントの受信フォルダに未読が何件あるか表示させる」です。

    https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13125410308
    と同じですが、こちらの質問者さんは知識がおありみたいで、私はどこから手をつければいいか分からず、こちらに相談させてもらいました。

    2つあるアカウントのナビゲーションウィンドも毎回手で展開していて(片方はデフォルトのフォルダを変えたので開くようになりました)、それも併せて解決できればもっと嬉しいです。

    どうぞよろしくお願いします。

    Outlook2010

  3. 日程調整を自動化したく、色々とネットで検索したりと手を尽くしたのですが、想定しているものを見つけられませんでしたので、もし可能であれば教えていただければと思います。

    ◆前提
    Outlookバージョン:Outlook2010

    社内ではOutlookに予定を登録した上で、公開設定をしていますので、全員の予定を確認することができます。

    会議などを設定する際は、出席者の予定表を並べて空き時間を確認し、候補をいくつか見つけてメールを送る
    ということをやっています。
    ただ、会議が多いことや基本的に社内にいることが少ないため調整がとても大変です。

    ◆実施したいこと
    候補日の抽出を自動化できないかと思っています。
    例えば、対象者•候補日•必要時間を指定すると、空き時間を抽出してくれる
    といったことをイメージしています。
    (対象者: aaa@—.co.jp bbb@—.co.jp
    候補日: 1/28 1/29 1/30
    会議時間: 1時間)

    上記以外でも何かいい方法や、解決法がありましたら、教えていただけませんでしょうか。
    お手数おかけしますが、よろしくお願いいたします。

    • 全員の空き時間情報が見えるということは Exchange サーバー環境と思われるのですが、その場合は会議の作成時に [会議室の検索] を使うと全出席者が出席可能な時間帯が [時間の候補] に表示されます。
      まずはこちらの機能をお試しください。

  4. OSバージョン:Windows 10
    Outlookバージョン:Outlook2016

    ■参考にした過去記事
    ビューをファイルにエクスポート・インポートするスクリプト
    https://outlooklab.wordpress.com/2017/05/27/%E3%83%93%E3%83%A5%E3%83%BC%E3%82%92%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%E3%83%BB%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%E3%81%99/

    ■行いたいこと
    ビューをファイルにエクスポート・インポートするスクリプトにおいてスクリプト内に「エクスポート先のファイル名」、「インポートするファイル名」を環境に合わせて修正をする必要がありますが、エクスポート・インポートする際に任意のフォルダあるファイルをユーザーが選択できるようにできないかと考えております。

    ビューをファイルにインポートするスクリプトについては、「アップロードするファイルの選択」を表示して、任意のフォルダ、任意のファイル名を選択できるようにしてみましたが、ビューをファイルにエクスポートするスクリプトで「名前を付けて保存」を表示して、任意のフォルダ、任意のファイル名を選択できるようしたいと考えていますが、どのように行えばよいかが思いつきませんのでお教えいただけますでしょうか。

    On Error Resume Next
    Dim olkApp
    Dim objFSO
    Dim stmXml
    Dim stmXml2
    Dim strLine
    Dim arrLine
    Dim colViews
    Dim curView
    Dim objVIEW_XML
    With CreateObject(“InternetExplorer.Application”)
    .Visible = False
    .FullScreen = True
    .Navigate “about:blank”

    ‘表示待ち
    While .Busy Or .readyState 4
    WScript.Sleep 100
    Wend

    Set objVIEW_XML = .document.createElement(“input”)
    objVIEW_XML.setAttribute “type”, “file”
    .document.body.appendChild objVIEW_XML
    objVIEW_XML.Click
    If Trim(Len(objVIEW_XML.Value)) > 0 Then
    objVIEW_XML.Focus
    .ExecWB 17, 0 ‘OLECMDID_SELECTALL
    .ExecWB 12, 0 ‘OLECMDID_COPY
    stmXml = CreateObject(“htmlfile”).parentWindow.clipboardData.GetData(“text”)
    End If
    Set objVIEW_XML = Nothing
    .Quit
    End With
    GetFilePathIE2 = stmXml

    Set olkApp = CreateObject(“Outlook.Application”)
    Set objFSO = CreateObject(“Scripting.FileSystemObject”)
    Set stmXml2 = objFSO.OpenTextFile(stmXml, 1)
    ‘ 1 行目はビューの名前と種類
    strLine = stmXml2.ReadLine
    arrLine = Split(strLine, vbTab)
    Set colViews = olkApp.ActiveExplorer.CurrentFolder.Views
    Set curView = colViews.Add(arrLine(0), arrLine(1), 0)
    If Err.Number = 5 Then ‘ 同名のビューが存在した場合のエラー処理
    For Each curView In colViews
    ‘ 同名のビューを検索
    If curView.Name = arrLine(0) Then
    Exit For
    End If
    Next
    End If
    curView.XML = stmXml2.ReadAll
    curView.Save
    curView.Apply
    stmXml2.Close

  5. すいません、先ほどコメントを残したものですが、時間がなかったので取り急ぎにしてしまいました。

    outlookの添付ファイル名前 添付ファイルサイズ 送信者 日時
    などをエクセルで出力できるマクロはありますでしょうか。
    ExchangeServerのスクリプトを二週間ほど探していたのですが思うような結果が得られず、
    是非ともあなた様にご教授願いたいです。
    Outlookは2013以降のバージョンになります。(2016かと思います)

  6. いつも参考にさせていただいています。

    Outlook 2016をExchange Onlineに接続している状態で、共有メールボックスの仕訳ルールを
    設定するのに、下記URLに記載のあるアカウントの追加設定(Outlookの手順)を実施する必要があります。

    https://support.office.com/ja-jp/article/%E5%85%B1%E6%9C%89%E3%83%A1%E3%83%BC%E3%83%AB%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%81%AB%E3%83%AB%E3%83%BC%E3%83%AB%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%BE%E3%81%99%E3%80%82-b0963400-2a51-4c64-afc7-b816d737d164

    ただし、セキュリティの観点からクライアントでのOutlookでのアカウントの追加設定メニューはGPOにより利用できないようになっており、管理者にてスクリプト等で設定を行う必要がありそうです。

    Outlookのスクリプト、マクロ等で、アカウント設定を行う仕様のものを作成することはできますでしょうか。

    お忙しいところ恐れいりますが、ご返信などを頂けますと幸いです。

    よろしくお願いいたします。

  7. こんにちは。以下のサイトに関して質問です。
    https://outlooklab.wordpress.com/2009/08/15/%E6%9C%80%E5%88%9D%E3%81%AB%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E5%B8%B3-%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97/
    「最初に表示するアドレス帳-を変更するスクリプト」と同じ事をOutlook2016で行いたいです。
    Outlook2016ではレジストリの位置が異なるようです。
    スクリプト内の「MAPI_PROFIKE_KEY」が”HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Profiles”に移動しているらしい事は予想できたのですが、
    残りのキーは全て変更なしと思って大丈夫ですか?
    Outlook2016用のスクリプトがあれば嬉しいです。

  8. こんにちは。

    outlookの開封確認について、質問です。
    開封確認のオプションを設定している添付レートを使用してメールを送信すると、
    開封確認の通知メールが送信者ではなく、添付レートの作成者の元に通知されるという事象が発生しています。
    通知が届く添付レートの作成者は、現在、宛先・cc・bcc共にアドレスは設定されていません。

    通知が届いて欲しい送信者ではなく、添付レート作成者の元に通知が届いてしますようなオプション設定はありますか?(例:開封確認を転送するような機能)

    • Outlook 自体には開封確認通知の送信先を指定するようなオプションはありません。
      テンプレートを使用しているとのことですが、メールを作成して OFT ファイルとして保存しているということでしょうか?
      それとも、何か他の方法 (下書き保存や msg ファイルとして保存など) を使用されてますでしょうか?
      もし、OFT 以外の方法で発生しているなら、OFT ファイルとして保存したものをテンプレートとして使用してください。

  9. こんにちわ。
    指定のタイトルのメールを受信した場合に、本文の一部をエクセルにコピーするマクロはどのように作成するか、教えていただけないでしょうか。
    例えば
    タイトル
    ・タイトル
    本文
    ・番号:〇〇○
    ・氏名:△△△
    ・住所:◻︎◽︎◻︎
    ・生年月日:××
    ・依頼内容:☆☆☆
    というメールを受け取った際に、番号欄の〇〇○、氏名欄の△△△、依頼内容の☆☆☆のみを指定のエクセルデータに一覧として出力をしたいです。
    エクセルの1行目には番号、氏名、依頼内容など項目名は事前にある状態です。
    複数のメールの内容を一つのエクセルに一覧として入力をしたいです。
    以上、よろしくお願いします。

  10. 教えてください。Outlook 2016 のメールのエクスポートコマンドを、VBScriptから呼び出して
    定期的に受信トレイのメールをPSTファイルをバックアップする方法を知りたいです。

    フィルターとして受信日時を直前のバックアップ日時以降として、PSTファイル名は現日時と
    することで、重複なしでバックできると、嬉しいです。

  11. 特定の件名で始まるメールを受信したら、
    添付されたcsvファイルの2行目(1行目は項目名なので除外)を、
    マスター(excel)ファイル最後尾に追加していく
    という処理を自動化したいのですが、
    outlookマクロで可能でしょうか。

    メールの内容を Excel ファイルにかき出すマクロ
    決まった件名で終わるメッセージを受信したら、キーワードを含む 1 行を CSV ファイルに保存するマクロ
    受信したメールに添付された Excel ファイルをもとに別の Excel ファイルの内容を更新するマクロ
    このあたりを参考にしたのですが、
    ・最後尾に追加していく
    ・csvから読み込む
    あたりで詰まってしまいました。

  12. 面談実施者と被面談者との日程調整のためにOutlookを使おうと検討しています。

    マクロを実行すると、面談実施者および会議室等のリソースと面談対象者がスケジュールアシスタントに
    自動で表示できるものができてばと考えています。

    こちらのサンプルも試しましたが、ページが見つからないもしくはなどのエラーが発生してしまいます。
    https://docs.microsoft.com/ja-jp/office/vba/api/outlook.inspector.setschedulingstarttime

    できれば、こちらのサンプルのようなかたちで、更に、面談実施者および会議室等のリソースが自動登録
    できるものが理想です。

    よろしくお願いいたします。

    • ご提示いただいたサンプルで会議の必須出席者やリソースを追加するには以下のコードを追加します。
      oAppt.RequiredAttendees = “出席者のアドレス”
      oAppt.Resources = “リソースのアドレス”
      oAppt.Recipients.ResolveAll

      また、サンプルでページが見つからないというエラーが出るのは、サンプルが英語版を想定しているためです。
      oInsp.SetCurrentFormPage (“Scheduling Assistant”)

      oInsp.SetCurrentFormPage (“スケジュール アシスタント”)
      とします。

  13. いつも参考にさせて頂き、
    要望にも対応頂きありがとうございます

    Outlook365
    Windows10(64bit)

    2台の端末で1つのアカウントでログイン(設定)し
    1週間の内、端末Aと端末Bを使用します。

    例えば、月曜に端末Aで送受信等ををし、
    残りの火曜~金曜は端末Bで送受信等とする場合

    送受信メール、連絡先(追加などした場合)の
    各データを同期させたいのです。
    過去の相当古いデータも残しておきたいため
    IMAP等では無理だと判断しています。

    単純にデータ(pst)のエクスポートとインポートを
    日時指定(作成日時、更新日時)で対応しようと考えています。
    マクロ作成可能でしょうか?

    日時指定(作成日時、更新日時)はダイアログで指定ができると有難いです。

    メールの受信トレイ(階層1として)や送信トレイの下層に
    サブフォルダを階層3迄で作成しています。
    送受信後、返信や解答があったものは手動で移動しています。

    サブフォルダを追加した場合もそのフォルダ等も
    エクスポートとインポートの対象になりますよね?

    よろしくお願いします。

    • マクロでの実装も不可能ではありません。
      ただ、Outlook のインポート、エクスポートの機能をマクロで呼び出すことはできないため、マクロですべて実装する必要があります。
      その場合、単にコピーするというだけでなくインポート先に同じアイテムがあった場合に単純な上書きとするのかや、そもそも同じアイテムと判断する基準はどうするかなどを考慮する必要があります。
      また、サブフォルダーのコピーもマクロの中で実装する必要があります。(自動的に対象とするような方法はありません。)

      Outlook 365 を使われているというのは、Office 365 の Outlook を使われているということなのでしょうか?
      その場合、サーバーは Exchange を使用しているはずで、連絡先などの情報もメールボックスに保存されているので、PST で同期する必要はないはずです。

  14. 重複メールを削除するマクロについて教えてください。
    ( https://outlooklab.wordpress.com/2014/02/08/%E9%87%8D%E8%A4%87%E3%81%97%E3%81%9F%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B%E3%83%9E%E3%82%AF%E3%83%AD/ )

    重複メールが見つかった場合に「削除済みアイテム」へ移動するようにするにする場合の下記の行の変更方法を教えていただけないでしょうか。
    ( If colItems(i).Body = colItems(j).Body Then colItems(j).Delete )

    • 「削除する」といっても実際には Delete は削除済みアイテムへ移動するメソッドなので、上記の記述のままでご要望の動作になるはずです。

      • お返事ありがとうございます。さっそく活用させていただきます。

  15. はじめまして。
    質問させてください。
    当方、取引先が多く、OUTLOOKでメールを出す際に、ミスで、ある会社の取引の内容を、別の会社におくってしまうことが、時々起こります。このような場合、精神論で、間違えないように確認してくださいと口を酸っぱく言いますが、なかなか治りません。システム的に、何か打開できないか、検討中です。
    メールアドレスと、本文テキスト内の会社(本文の最初の行の会社名などの情報)を比較して、チェックするなどの方法は、あるもんでしょうか?
    ご存知でしたら、アドバイスを頂けると助かります。
    よろしくお願い致します。

    • はじめまして。最近会社でThunderbirdからOutlook2010に変わり、こちらで勉強させて頂いています。

      Thunderbirdでは出来ていた差出人名をアドレス帳から引っ張ってきて登録があれば、その登録通り表示するマクロをこちらで拝見し、実際に試してみました。(全てコピペし、日本語になっている部分は消しました。)

      すると上手く表示される日と、そうでない日(デフォルト通りアドレスか送信者が設定している名前での表記)があり、1度上手く表示された人でも次の日には表示されない事や登録しているのにも関わらず、1回も上手く表示されないなど、問題が発生してしまいました。

      当方全くマクロには詳しくなく、見様見真似でさせて頂いていますので、どこか問題があるかと思うのですが、思い当たる節がなく……

      とても抽象的なご質問にはなってしまいますが、どうか対策をご教示頂けませんでしょうか。。。

      よろしくお願いいたします。

  16. 初歩的な質問で申し訳ありません。
    小生の環境は、Windows10/Office365です。
    Excel VBAは趣味として長くやっており、また、Excel VBAからOutlookでの送信も行ったことが多数あります。

    質問内容は以下の通りです。
    Outlookで2つのアドレス”A@Outlook.jp”と”B@Outlook.jp”を持っており、”A@Outlook.jp”が元々あったアドレスです。
    ”A”は個人用に使っており、ボランティアとして参加している団体との送受信用に”B”を使いたいと考えています。
    Excel VBAから差出人を”B@Outlook.jp”としてメールを送信したいのですが、”.Save”で下書きを作り、プルダウンで差出人を切り替えて送信することはできるのですが、どうせなら直接”B”から”.Send”で送信したいと思っております。.Senderとか.SendUsingAccount、.SentOnBehalfOfNameを試しているのですが、いまいち上手くいきません。どうしたらよいのか、お教えください。
    また、その際、表示される名前も”????”ではなく、指定する表示名で相手先に送信したいと思っています。何かいい方法はないでしょうか?

  17. とても素晴らしいサイトにたどりつきコメントさせていただきます。
    お力をお貸しいただきたいです。

    ▼使用環境
    OS:Windows 10 Pro Ver.1803 ビルド.17134.471
    Outlook2016 16.0.9126.2259

    ▼参考にした過去記事
    Excel のリストにしたがってファイルを添付して送信するマクロ

    ▼やりたいこと
    1)グループメールに届くメールを個人メールフォルダ(A)にコピーし、添付ファイルを取り出す。おおよそ30通ほどあります。
      届くメールはタイトルにそれぞれ数字の羅列があります。
      添付ファイルは「0005-0200」形式の名前+.csv/.xls/.pdf の3ファイルである。(B)
      名前は数字部分が都度変わります。規則性はなし。タイトルとの関連性もなし。

      こちらはエクセルVBA(C)にてファイルの取り出し済み。以下の形式でエクセル(C)にリスト出力されています。
       A列:番号(連番のメール番号)
       B列:受信日時
       C列:タイトル
       D列:送信元アドレス
       E列:添付ファイル数
       F列:エクセルファイル名

    2).csv/.pdfファイルは不要なので削除し、エクセルファイル(B)に加工を加え(加工後のもの=B’)、上書き保存する。

    3)個人メールフォルダ(A)のメールに1通ずつ返信する。(一括でやりたい)
      本文に定型文書を添付。
      CCにメールアドレスを追加したい。
      元メールに添付されていたものと同じファイル(B)の加工済みファイル(B’)を添付して送信したい。

    ▼状況
    1)、2)までは運用できている状態です。
    3)からができずに困っています。

    ▼困っていること
    メール1通に対して返信というのは他のVBAを参照してできるかと思いますが、該当ファイルを添付する、更にはこのフォルダ(A)に入っているメールすべてに適用する場合はどのようにしたらよいかわかりません。
    希望としては先にリスト化しているエクセル(C)のタイトルと添付ファイル名の情報をもとに対応する添付ファイルを添付する方法が望ましいと思いますがそもそもOUTLOOK VBAの範疇なのでしょうか。もしくはOUTLOOK VBAで1通ずつならばエクセル(C)の情報は使わずに自動で本文に定型文を追加し、該当ファイル(B’)を添付し送信できるものなのでしょうか。

    お力おかしいただきたく、お願い申し上げます。

  18. いつも参考にさせて頂いております。
    ありがとうございます。

    この度、私(エクセルVBAであれば一通りできるレベル)が所属している会社(Win10 64bit outlook2013 exchange 環境)の部の上司より言われ、今後は各社員の外出先や戻る時間を記載するためのホワイトボードをやめ、各社員の行動はoutlookの共有予定表で把握したいということになりました。

    予定表の共有(名前の横のチェックボックスにチェックを入れればその人の予定が表示される状態)のやり方は分かるのですが、なにぶん人数が多い部署のため、outlookのセットアップをエクセルのVBA(各位にエクセルファイルを配布してそのファイル上に用意されたボタンを押すとoutlookのセットアップを自動でやってくれるイメージ)でやりたいと考えております。

    私が所属している部は1課と2課に分かれているのでその2つのグループに分け、各50人くらいずつの登録をVBAで行いたいです。

    何卒知恵を頂きたくお願い申し上げます。

  19. outlookのタスクの自動作成に関する情報が少なく困っています。
    ある定型件名のメールを受信した時に、タスクとするスクリプトはどのようにしたら良いでしょうか?
    outlook2010利用です。

  20. いつも参考にさせていただいております。
    予定表の会議出席依頼で、返信のオプション<新しい時間の指定を許可>の指定については
    こちらに記述があったのですが返信のオプション<返信の依頼>に対応するプロパティが分からず
    ご教示いただけないでしょうか。
    PidTagResponseRequestedをFalseに設定してみたのですが、送信者側ではオプションのチェックが
    外れるものの受信者側では変化がありません。

    • [返信の依頼] に対応するプロパティは AppointmentItem の ResponseRequested です。
      このプロパティを false に設定した予定アイテムから会議出席依頼を送信すると、受信者側ではインフォバーに「開催者はこの会議への返信を要求していません。」と表示されます。

  21. outlookの仕事の効率化に悩んでおり、教えてください。
    PC環境は、win10、outlook2016を使用しております。

    選択中のメールをPDF保存(保存先はデスクトップ)をしたいと思っており、クイックアクセスツールバーかマクロで1クリック/ショートカットキー操作でできるようにしたいと思っています。
    ちなみに、簡単なExcelマクロは記録機能を改良して作る程度はできますが、Outlookマクロは初心者です。

    簡単なやり方だとありがたいです。よろしくお願いします!

  22. いつも参考にさせて頂いております。ありがとうございます。

    メール本文の選択した範囲のみをエクセルへ吐き出すマクロを作りたいと考えております。

    こちらのサイトを参考にさせて頂き、メールウィンドウを開いた時にはできるようになりましたが、閲覧ウィンドウで実施しようとするとWordEditorが上手く指定できません。(下記★部)

    閲覧ウィンドウでのWordEditorの設定方法もしくは代替え案があればご教示頂けませんでしょうか。

    Public Sub ExportSelectedToExcel()
    ‘ EXCEL ファイルをフルパスで指定。好きな場所、ファイル名に変えてね
    Const EXCEL_FILE = “*****/メール本文抜粋.xlsx”
    Dim objItem As MailItem
    Dim objBook ‘As Excel.Workbook
    Dim objSheet ‘As Excel.Worksheet
    Dim wrdEditor As Object
    Dim objSel As Object
    Dim row As Integer
    Dim strBody As String

    ‘ メールをどのように開いているか確認
    If TypeName(Application.ActiveWindow) = “Inspector” Then
    ‘ Word Editor オブジェクトを取得
    Set wrdEditor = ActiveInspector.WordEditor
    ‘ 開いているメールのオブジェクトを取得
    Set objItem = ActiveInspector.CurrentItem
    Else
    ‘ Word Editor オブジェクトを取得
    ★’Set wrdEditor = ActiveInspector.WordEditor オブジェクト変数が設定されていませんと怒られる

    ‘ 閲覧ウィンドウのオブジェクトを取得
    Set objItem = ActiveExplorer.Selection(1)
    End If

    ‘ Selection オブジェクトを取得
    Set objSel = wrdEditor.Application.Selection

    ‘ 改行コードをExcel用に変更
    strBody = Replace(objSel.Text, vbCr, vbCrLf)

    ‘ Excel ファイルを開く
    Set objBook = GetObject(EXCEL_FILE)
    objBook.Windows(1).Activate
    Set objSheet = objBook.Sheets(1)

    ‘ データがない行まで移動
    row = 2
    While objSheet.Cells(row, 1) “”
    row = row + 1
    Wend

    ‘ メールの情報をExcelファイルに転記
    With objSheet
    .Cells(row, 1) = objItem.SentOn
    .Cells(row, 2) = objItem.Sender.Name
    .Cells(row, 3) = objItem.Subject
    .Cells(row, 4) = strBody
    End With

    ‘ Excelファイルを閉じる
    objBook.Close True
    End Sub

    • 質問者です。すみません環境はWin10上のOutlook2013(15.0.5125.1000)MSO(15.0.5127.1000) 32ビットになります。

      • 閲覧ウィンドウで表示されているメールの WordEditor オブジェクトを取得するには ActiveExplorer.ActiveInlineResponseWordEditor を使います。

  23. お世話になります。

    返信、転送時
    宛先:Aさん、CC:Bさん、BCC:Cさんとするマクロをお願いできないでしょうか?
    ・宛先:Aさんは送信元の場合が多い
    ・CC:Bさん、BCC:Cさんは毎回固定

    返信メッセージで表示名をアドレス帳のものに置き換えるマクロ
    こちらを先に実行し、次にCC:Bさん、BCC:Cさんを別のマクロ
    もしくは、全てを同時に可能なマクロ

    環境
    OS:Windows10 64bit
    Office365

    よろしくお願いいたします。

  24. Windows 10 の 64ビット版で下記のマクロを動かそうとしています。32bit版のWindowsでは
    動作しているのですが、下記のコメントのところでエラーになってしまいます。どう対応したら
    よいのでしょうか?
    OUTLOOK2016
    Windows10 64Bit です

    ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
    Private Sub CommandButton1_Click()

    Dim objIE As InternetExplorer
    Dim ie As Object
    Dim objInpTxt As HTMLInputTextElement
    Dim check1 As HTMLInputElement
    Dim timeOut As Date
    Dim Id As IHTMLElement
    Dim i As Long
    Dim buf As String
    ‘—-
    Dim colSh As Object
    Dim win As Object
    Dim strTemp As String
    Dim status_num As Integer

    restart:

    buf = “[間取り][ID]” & TextBox1 & “[PWD]” & TextBox2 & “[発注者]” & TextBox3 & “[mail]” & TextBox4
    Open “C:\config間取り.txt” For Output As #1
    Print #1, buf
    Close #1

    Set objIE = Nothing
    Set win = Nothing

    ‘****** すでに開いている間取り発注WEBを見つける
    Set colSh = CreateObject(“Shell.Application”)

    For Each win In colSh.Windows
    If TypeName(win.document) = “HTMLDocument” Then      0 Then
    Set objIE = win
    Exit For
    Else
    Set win = Nothing
    End If
    End If
    Next

  25. お世話になります。
    いつも本サイトで勉強させていただいております。
    過去記事を参考にさせていただきVBAを試しているのですが、
    理解が浅いためかうまく作成することができずお力をお貸しいただけないでしょうか。

    ■利用環境
    OSバージョン:Windows10 Pro、8.1 Pro
    Outlookバージョン:Outlook2013、2016

    ■参考にした過去記事
    ・連絡先をエクスポート・インポートするスクリプト
    ・連絡先のサブフォルダーをエクスポート、インポートするスクリプト

    ■VBAで実施したいこと
    既に連絡先に登録されているものを一括で削除したい。

    連絡先にある既存のものをエクスポートでバックアップ後、
    連絡先を一括削除(クリア)した後、マスターの連絡先を新規でインポートしたいと考えております。
    過去記事より、連絡先のエクスポート、インポートはできるようになりましたが、連絡先を一括で削除することがうまくできません。

    • 連絡先フォルダーの中のアイテムをすべて削除するコードは以下のようになります。
      Set fldContacts = Session.GetDefaultFolder(olFolderContacts)
      For i = fldContacts.Items.Count To 1 Step -1
      fldContacts.Items(i).Delete
      Next

  26. お世話になります。

    受信したメールの本文中の特定の文字を削除したいと考えており、
    特定文字列の削除のマクロはなんとか作成できましたが、
    削除のタイミングが思い通りになりません。

    特定文字列の削除のタイミングは
    「転送(Ctrl+R)」「返信(Ctr+Shift+R)」「全員へ返信(Ctrl+F)」
    ボタン押下または右クリックにより、返信等メール本文が
    表示される同時にマクロが動くのが希望です。
    (返信メール本文が表示された際には、既に削除されている)

    最初、受信メールを開いた際にマクロが動くようにしたのですが、
    閲覧だけだと、特定文字列の削除の必要はないのに、
    変更版を保存しますかと聞かれるので、上記のタイミングで
    削除するようにトライしているのですが、うまくいきません。

    助言よろしくお願いいたします。

    • お世話になります。

      サーバー更新により、受信したメールから返信・転送メールを作成する際に、
      本文中の宛先、CCの名前の後ろにアドレスが表示されるようになってしまいました。
      この症状は、受信メールの閲覧のみでは発生せず、返信メール作成すると発生します。

      以前         現在
      「宛先:田島太郎」→「宛先:田島太郎」

      アドレスを削除するためのマクロはなんとか作成できましたが、
      削除のタイミングが思い通りになりません。

      特定文字列の削除のタイミングは
      「転送(Ctrl+R)」「返信(Ctr+Shift+R)」「全員へ返信(Ctrl+F)」
      ボタン押下または右クリックにより、返信等メール本文が
      表示される同時にマクロが動くのが希望です。
      (返信メール本文が表示された際には、既に削除されている)

      最初、受信メールを開いた際にマクロが動くようにしたのですが、
      閲覧だけだと、特定文字列の削除の必要はないのに、
      変更版を保存しますかと聞かれるので、上記のタイミングで
      削除するようにトライしているのですが、うまくいきません。

      また、送信時に件名に文字を入れたりするため、
      送信ボタンのあるフォームを作成しているので、
      送信ボタンに組み込んだら、うまく動いたのですが、
      作成者が目視でアドレスが削除されたことを確認したいとの
      要望があり、上記希望のタイミングでの動作について
      四苦八苦しているところです。

      助言よろしくお願いいたします。

  27. Excell2010マクロからOutlook2010を起動させて、メールを送信するプログラムを作りました。ちなみに、Windows7です。

    さて質問です。
    下記メールに、投票ボタン「承認;却下」を表示させるステートメントを加えたいのですが、どんなプログラミングをしたらいいのでしょう?

    Sub myMacro1000()

    ‘参照設定
    ‘Microsoft Outlook 14.0 Object Library

    Dim OLApp As Object
    Dim mItem As Object

    Set OLApp = CreateObject(“Outlook.Application”)
    Set mItem = OLApp.CreateItem(olMailItem)

    With mItem

    .SentOnBehalfOfName = “form-supply@example.co.jp”

    .To = “takashi.matsunaga@example.co.jp”
    .CC = “form-supply@example.co.jp”

    .Subject = “ミーティングの件”
    .BodyFormat = olFormatPlain
    .Body = “1日にお会いできることを” & vbCr & _
    “楽しみにしております。”

    ‘.Send
    .Display

    End With

    Set mItem = Nothing
    Set OLApp = Nothing

    End Sub

  28. お世話になります。

    知見が全くない中Outlookマクロを作成を緊急で迫られており、
    お力添えいただけると大変助かります。

    ■VBAで実行したいこと
    1)特定フォルダの特定期間(マクロ実行時に指定)のメールをmsgファイルでエクスポート
    2)同時に出力されるmsgファイルをエクセルで一覧化(項目:件名/送信者/受信日時/分類項目)

    ■環境
    OS:windows 10
    Outlook:Office 365 MSO

    何卒、よろしくお願いいたします。

  29. お世話になります。
    個人用の連絡先に既にある連絡先の内容をマクロの実行で一括変更するマクロを作成したいと考えております。
    お力添えをいただけると助かります。

    ◆環境
    Win10、Outlook2016

    ◆実施したいこと
    選択した既にある連絡先をマクロの実行で一括変更したい
    (例として架空の設定を使用しますが書式は全て同じです)

    ==変更前==
    姓:YAMADA
    名:TARO
    勤務先:○○社
    部署:Engineering Div. (エンジニア部 第三係)
    役職:Team Leader (班長)
    表題:YAMADA, TARO
    電子メール:taro.yamada@example
    表示名:Taro Yamada (山田 太郎) (taro.yamada@example)
    国:Japan
    その他:空白

    ==変更後==
    姓:山田
    名:太郎
    フリガナ姓:YAMADA
    フリガナ名:TARO
    勤務先:○○社
    部署:エンジニア部 第三係
    役職:班長
    表題:山田, 太郎
    電子メール:taro.yamada@example
    表示名:山田 太郎
    国:Japan
    その他:空白

    上記のように英語部を省くようにするのと、名前を表示名の漢字から参照したいです。
    (フリガナはあってもなくてもどちらでも構いません)

    何卒、よろしくお願い致します。

  30. Office2016を利用しています。ExcelのVBAでOutlookメールを送信しようとしています。
    リッチテキスト型の本文に、「表を挿入」する方法が分からず困っています。また、挿入した表の任意のセルに文字を代入する手順も知りたいです。(Excelシートの貼り付けではありません。)
    よろしくお願いします。

  31. はじめまして

    いつも参考にさせてもらっています。
    検索フォルダの条件をエクスポートして、別のストアに複製する方法はありませんか?

    メインのストアは1年ぐらい分のメールを置いておいて、それ以上に古いものはオンラインアーカイブという別のストアに置くことにしてしようと思っていますが、検索フォルダをメインのものから複製するのに、目視で比べながら行うのも面倒だなと感じております。

    以下の記事も参考にしました。新規に検索フォルダを作成する方法は分かりましたが既存の検索フォルダの検索条件を得る方法が分かりませんでした。
    https://outlooklab.wordpress.com/2016/10/01/%e3%83%a1%e3%83%bc%e3%83%aa%e3%83%b3%e3%82%b0%e3%83%aa%e3%82%b9%e3%83%88%e7%b5%8c%e7%94%b1%e3%81%a7%e9%80%81%e4%bf%a1%e3%81%95%e3%82%8c%e3%81%9f%e3%83%a1%e3%83%bc%e3%83%ab%e3%81%ae%e5%ae%9f%e9%9a%9b/

    Session.DefaultStore.GetSearchFolders()で検索フォルダそのものにアクセス可能なことは分かりましたが、検索条件にはたどり着けませんでした。アドバイス頂けると幸いです。

  32. Outlookのバージョン1902を使っています。
    マクロで検索ボックスに任意の文字列をセットしたいのです。そういうコーディングのサンプルをネット上で探したのですが見つけることができませんでした。ぜひよろしくお願いします。

    • 例えば、”Test” という文字列を検索するのであれば以下のコードで実現できます。
      ActiveExplorer.Search “Test”, olSearchScopeAllFolders

  33. いつも参考にさせて頂いております。

    不躾ではございますが、案件対応上取り決められているメールを出したいのですが
    送信タイミングが不定、且つ送信に使うPCは遠隔接続NGとの環境的条件がある為
    とても困っております。

    OutlookでのVBAはまだまだ経験値が足りず、以下の需要にご助言等頂きたく相談申し上げます。

    ▼参考として拝見中のコンテンツ
     転送時に差出人のアドレスを置き換えるマクロhttps://outlooklab.wordpress.com/2014/01/11/%E8%BB%A2%E9%80%81%E6%99%82%E3%81%AB%E5%B7%AE%E5%87%BA%E4%BA%BA%E3%81%AE%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%82%92%E7%BD%AE%E3%81%8D%E6%8F%9B%E3%81%88%E3%82%8B%E3%83%9E%E3%82%AF%E3%83%AD/

     本文に特定の文面を含む場合に、そのメールとファイルを添付して転送するマクロ
    https://outlooklab.wordpress.com/2012/01/21/%e6%9c%ac%e6%96%87%e3%81%ab%e7%89%b9%e5%ae%9a%e3%81%ae%e6%96%87%e9%9d%a2%e3%82%92%e5%90%ab%e3%82%80%e5%a0%b4%e5%90%88%e3%81%ab%e3%80%81%e3%81%9d%e3%81%ae%e3%83%a1%e3%83%bc%e3%83%ab%e3%81%a8%e3%83%95/

    ▼需要について
     ・最終的に実行したいこと
      - 社内デスクトップPC(社外からの遠隔操作NG)から、特定のメール3通を出させたい

      - 3通は案件で「関係者宛に送る」と取り決められているメール
        ※3通ともほぼ定型。送信先(TO、CC)は固定の面子。
        <対応開始時刻前時点>
          ①「当該案件の対応開始」告知
           ※件名は「yyyymmdd 固有文字列」。
           ※本文は、差出人苗字と責任者苗字以外定型。

        <作業完了後>
          ②対応内容の報告PDF添付メール ※報告PDF=要対応事項なしの際も必ず記載・添付。
           ※件名は「yyyymmdd 固有文字列」。
           ※本文は、差出人苗字以降は不定。報告書掲載内容のポイントに触れた文面2~3行等。

          ③(報告PDF添付メール送付も含めた) その日の「当該案件対応完了」告知
           ※件名は「yyyymmdd 固有文字列」。
           ※本文は、差出人苗字と責任者苗字以外定型。

     ・実現させたい使い方
      - 社外持ち出しPC(社内デスクトップPCや社内ネットワークへの遠隔接続NG)から
        社内デスクトップPCへメールを送る
        ※社内デスクトップPCとは別ドメインのメール
        ※社内デスクトップPCは完全に、社内ネットワーク専用。
         ただしメールやネット等の一般的な利用は可の為、外からメールを受けることはOK。

      - 受信したメールの件名ルールが合致するかを確認

      - 合致すれば、固定面子の送信先(TO、CC)を持つ新規メールに本文を転記

      - 添付があればそれも添付へ転用

    ▼得られる結果
     ・終了が大抵夜間~深夜に及ぶ為、現場から直帰が出来る為1~2時間早い帰宅が可能に。

    こちらの都合に起因した相談の為誠に恐縮なのですが、運用のやりくり上でも手詰まりとなり
    簡単に「こんな働きをするスクリプトたちを、上からこういう順に配置すれば良いのでは」等
    構成配置などだけでも、ご助言を賜れれば幸いです。

  34. すみません、先程ご相談を投稿致しましたが
    環境についての記載を漏らしておりました。大変失礼致しました。
    下記の環境にて、試行錯誤しております。

    OS:Windows10 Ver1803 (OSビルド 17134.829)
    Outlook:バージョン1902 (ビルド11328.20368クイック実行) 半期チャネル
    ネットワーク環境:社内独自ドメインのActiveDirectory。WAN内の拠点内LAN。

  35. いつも参考にさせて頂いています。

    Exchange アカウントで、特定のフォルダに特定の件名のメールを受信した場合、
    開いているExcelファイルに受信日時、件名、内容を書き出したいのですが、
    上手くいかないので教えてください。

    既定のプロファイルに対してはできるのですが、
    それ以外の別のExchange アカウントの場合はどのような方法になりますでしょうか?

    • 自己解決しました。ありがとうございました。
      いろいろと参考にして作成したコードを載せさせて頂きますので
      どなたかの参考になればと思います。

      Sub test()
      Dim oApp As New Outlook.Application
      Dim oFolder As Outlook.Folder
      Dim oItem As Outlook.MailItem
      Dim i As Long
      Dim j As Long
      ‘場所を指定
      Set oFolder = oApp.Session.Folders(“アカウント”).Folders(“受信トレイ”).Folders(“サブフォルダ名”)
      i = 1 ‘書き出す行を指定
      For Each oItem In oFolder.Items
      If InStr(oItem.Subject, “件名”) > 0 Then
      Cells(i, 1) = oItem.Subject ‘件名
      Cells(i, 2) = oItem.ReceivedTime ‘受信日
      Cells(i, 3) = oItem.Body ‘本文
      For j = 1 To oItem.Attachments.Count
      Cells(i, j + 4) = oItem.Attachments.Item(j).Filename
      Next
      i = i + 1
      Else
      MsgBox “対象でないメールは除外します。”
      End If
      Next
      Set oItem = Nothing
      Set oFolder = Nothing
      Set oApp = Nothing
      End Sub

  36. 特定の文字(半角カンマ)を含む差出人(SenderName)からのメールを受信した際に、
    その特定の文字を全角カンマなどに自動置換したうえで、SenderNameでMsg形式でメールを保存する、ということはできますでしょうか。
    メール件名(Subject)にこれらの文字を含む場合の置換はできていますが、
    SenderNameでの置換ができず困っています。

    • これは、SenderName を変更したいということでしょうか?
      残念ながら、受信メールの SenderName は読み取り専用であり変更することはできません。

  37. いつも参考にさせていただいております。
    複数のemlファイルをフォルダごと取り込む方法についてご相談があり、
    お力添えいただきたく存じます。
    マクロを行うことにより、マクロファイルを実行したフォルダとサブフォルダ内のemlファイルを
    1件ずつ開き、emlファイルの存在したフォルダと同名のフォルダをOutlookの受信トレイ内に作成。
    各対応フォルダにメールを移動させているのですが、
    emlを開き、フォルダに移動するという処理を行う度に.emlを開いたウィンドウが瞬時開いては閉じるが繰り返し行われ、処理中にアクティブウィンドウが他ソフトに固定できない状態になっております。
    1つずつのeml展開時のウィンドウをユーザーには見えない形でフォルダ移動するということは可能でしょうか?
    何分、勉強不足で、できるかどうかが分かっていません。
    どうかご教授いただければ幸いです。

    以下作成マクロ
    ———————————————————————————————–

    ‘// eml ファイルを OUTLOOK に取り込むスクリプト
    ‘//
    ‘// 仕様:スクリプトを置いてあるフォルダにある .eml ファイルを対象
    ‘// サブフォルダ配下の .eml も対象とする
    ‘// OUTLOOK の「受信トレイ」内にeml配置フォルダと同名フォルダを作成し取り込む
    ‘// コマンドプロンプトから実行した場合は進捗状況を表示する
    ‘//
    ‘// 実行方法:スクリプトをダブルクリック、またはコマンドプロンプトから
    ‘// > cscript スクリプト名.vbs で実行
    ‘//

    ‘//===================================================================
    ‘// FileSystemObject
    Const ForReading = 1 ‘// ファイルを読み取り専用として開きます。このファイルには書き込むことができません。
    Const ForWriting = 2 ‘// ファイルを書き込み専用として開きます。
    Const ForAppending = 8 ‘//ファイルを開き、ファイルの最後に追加して書き込みます。

    ‘//===================================================================
    ‘// オブジェクト準備
    Dim FSO
    Set FSO = WScript.CreateObject(“Scripting.FileSystemObject”)

    Dim WSH
    Set WSH = WScript.CreateObject(“WScript.Shell”)

    Dim OutlookApp
    Set OutlookApp = WScript.CreateObject(“Outlook.Application”)

    ‘//===================================================================
    ‘// OUTLOOK側インポートフォルダ設定
    Const olFolderInbox = 6
    Dim fldImport
    Set fldImport = OutlookApp.Session.GetDefaultFolder(olFolderInbox)
    fldImport.Display

    ‘//===================================================================
    ‘// ログ準備 – ログはスクリプトと同じ場所に作成
    ‘// – ログファイル名は スクリプト名_年月日.log
    Dim oLog, fn
    fn = FSO.getParentFolderName(WScript.ScriptFullName) & “\” & _
    FSO.GetBaseName(WScript.ScriptFullName) & “_” & _
    Replace(Left(Now(),10), “/”, “”) & “.log”
    If FSO.FileExists(fn) = False then
    Set oLog = FSO.CreateTextFile(fn)
    Else
    Set oLog = FSO.OpenTextFile(fn, ForAppending, True)
    End If

    ‘//===================================================================
    ‘// 開始
    log “START:” & FSO.GetFolder(“.”).Name
    Call LoopFolder( FSO.GetFolder(“.”) )

    ‘//===================================================================
    ‘// 終了
    OutlookApp.ActiveExplorer.Close
    MsgBox “インポートは終了しました。”
    log “インポートは終了しました。”
    oLog.Close
    Set oLog = Nothing

    ‘//===================================================================
    ‘// emlファイル取り込み(サブフォルダも対象)
    Sub LoopFolder(objFolder)
    Dim objSubFolder
    Dim objFile

    log “LOOP: ” & objFolder

    ‘// ファイルを登録
    For Each objFile In objFolder.files
    ‘// 拡張子が .eml ならインポート処理
    If LCase(Right(objFile.Name,4)) = “.eml” Then
    ‘// 複数フォルダがあった際に入れ子でフォルダが作成されたため受信トレイトップに戻す
    Set fldImport = OutlookApp.Session.GetDefaultFolder(olFolderInbox)
    ‘// emlファイルのあるフォルダ名でOutlookの受信フォルダ内にフォルダを作成、既に作成されている場合は次の行から実行
    On Error Resume Next
    fldImport.Folders.Add(objFolder.Name)
    Set fldImport = fldImport.Folders(objFolder.Name)
    OpenEml objFile
    End If
    Next

    ‘// フォルダがあれば再帰
    For Each objSubFolder In objFolder.SubFolders
    LoopFolder objSubFolder
    Next
    End Sub

    ‘//===================================================================
    ‘// eml ファイルを開いてインポート
    Sub OpenEml( emlFile )
    ‘// エラー無視
    On Error Resume Next
    Dim folderName
    log “OPEN EML: ” & emlFile.Name

    ‘// メールが開いていたら閉じる
    While Not OutlookApp.ActiveInspector Is Nothing
    OutlookApp.ActiveInspector.Close
    WScript.Sleep 500
    Wend

    ‘// eml ファイルを Outlook で開くコマンドを実行
    WSH.Run “outlook /eml “”” & FSO.getParentFolderName(emlFile) & _
    “\” & emlFile.Name & “”””

    ‘// Outlook 起動待ち
    While OutlookApp.ActiveInspector Is Nothing
    WScript.Sleep 500
    Wend

    ‘// メールフォルダ移動
    OutlookApp.ActiveInspector.CurrentItem.Move fldImport

    End Sub

    ‘//===================================================================
    ‘// ログ出力
    Sub log(strMsg)
    ‘// エラー無視
    On Error Resume Next

    ‘// ログファイルに出力
    oLog.WriteLine(Now() & ” ” & strMsg)

    ‘// CSCRIPT なら ECHOで表示
    If LCase(Right(WScript.FullName, Len(“cscript.exe”))) = “cscript.exe” Then
    WScript.Echo Now() & ” ” & strMsg
    End If
    End Sub

    • 残念ながら Outlook では EML ファイルを開くには一度メールを表示する必要があり、ご要望の動作を満たすことはできません。

  38. 初めまして。「メール 解析」で検索していてこちらにたどり着き、救世主と思い投稿させていただきました。どうぞよろしくお願いします。
    業務で障害が発生していて、やりとりのスレッドが複数発生してしまっており、解析と記録を要求されています。どうかご教示よろしくお願いします。
    ————————————————————
    受信メールで、件名にある文字列が含まれている場合、解析して、以下の項目をエクセルに一覧で出力し、添付がある場合は格納フォルダに保存するようにしたい。
    ————————————————————
    ■件名にある文字列:以下のうちどれか1つ以上

    キーワードA|キーワードB|キーワードC|キーワードD|キーワードE

    ■抽出先のExcelの項目と添付ファイルの保管いついて

    1.No(A列)|連番
    2.受信日時(B列)|メールを受信した日時を取得
    3.件名(C列)|メールの件名
    4.送信者名(D列)|メールの送信者名
    5.本文(E列)|メールの本文。
    6.添付ファイル数(F列)|添付ファイル

    7.添付のフォルダ保管|フォルダの作成から、エクセルファイルと同じ場所に作成。既にフォルダがある場合は、既存のフォルダでいいか確認msgをだしてから保存する。
    ファイルの重複がある場合は、上書きか別名保存か選択して保存ができる。

    8.(G~K列)本文にキーワードの文字列があるかどうかをチェックし、ある場合は○を入力する

    No|受信日時|件名|送信者名|本文|添付ファイル数|キーワードA|キーワードB|キーワードC|キーワードD|キーワードE

    ■実現したい事
    上記の、Excelの入力は、受信日時と件名が重複しないようにする。
    エクセルへの取得は昇順にする。

    ■実現可能かどうか
    メール本文で、スレッドが複数ある場合、スレッドごとにExcelに取得することは可能でしょうか。
    ・例えば本文中のResごとに行を変えて取得する
    ・受信メールから件名をみてスレッド単位を取得する
    ・メールのプロパティで、スレッドのidか何かを(メーラーでスレッドに表示がかえられるので値を持ってると思うのですがよくわかっていません)取得して、スレッドをそれぞれExcelに取得する。

    以上、マクロが全く知識不足ではありますが、どうぞよろしくお願いします。

    • こちらマクロの実装にあたって添付ファイルを格納するためのフォルダーの命名規則が不明なのですが、どのような名前を設定すべきでしょうか?

  39. いつも参考にさせて頂きありがとうございます。

    メールに添付されたメールのPDF化が自動化について是非ご教示いただけますでしょうか。

    メールの自動転送で、受信されたメールが添付ファイルとして送られてきます。
    PDF化して、特定のフォルダに格納したいのですが、添付ファイルのPDF化というのが見つかりませんでした。

    過去ご投稿されている以下参考にして、「表示中のフォルダーのメールを PDF でエクスポートするマクロ」から
    メールボックス内のメールPDF化は活用させて頂いておりますが、
    (これとは別に)自動転送されてきたでメール内の中に添付されたメールを、直接PDF化出来ると非常に助かります。

    なにとぞ、ご教示のほどよろしくお願いいたします。

    (参考)表示中のフォルダーのメールを PDF でエクスポートするマクロ
    https://outlooklab.wordpress.com/2016/05/14/%e8%a1%a8%e7%a4%ba%e4%b8%ad%e3%81%ae%e3%83%95%e3%82%a9%e3%83%ab%e3%83%80%e3%83%bc%e3%81%ae%e3%83%a1%e3%83%bc%e3%83%ab%e3%82%92-pdf-%e3%81%a7%e3%82%a8%e3%82%af%e3%82%b9%e3%83%9d%e3%83%bc%e3%83%88/

    • 添付ファイルの PDF 化ということですが、メールの PDF 化は Word を経由することで可能なものの、添付ファイルについてはファイルの種別によって操作が異なり、PDF にできるかどうかは添付ファイルの種類やそれを開くアプリケーションによって異なります。
      そのため、直接 PDF 化は難しいと思われます。

  40. いつも参考にさせていただいております。
    連絡先のサブフォルダに「電子メールのアドレス帳にこのフォルダーを表示する」のチェックボックスにチェックを利用者が入れなくても良いように、スクリプトでチェックを入れさせたいと考えています。
    レジストリ操作かとは思いますが、良きお知恵がありましたら、ご教示いただけますと嬉しく思います。

  41. いつもお世話になっております。
    VBSでの外部コマンド実行する際のRunメソッドに関して
    分からない動作があり、質問をさせていただきます。
    元々、Outlookの実行を最小化して表示したいと考え、調べたところ
    Runメソッドの実行オプションから実行した際のウィンドウのオプションが
    指定できるとのことで指定を行ったのですが最小化、最大化、非表示など
    何を指定しても、展開されるウィンドウに変化が無くネット上サンプルを動かしてみたところ
    全く同じ処理で実行した際にメモ帳(“notepad”)の時には指定通りウィンドウが
    最大化して開かれるにもかかわらず、電卓(“calc”)など他アプリケーションでは
    エラーも出ていないが指定の実行ウィンドウオプションが全く反映されない現象が発生しました。
    同現象について調べてみましたが有用なものが無く、手詰まり困っております。
    分かる方がもしおられましたら、ご教授願えると幸いです。
    実行環境は
    Windows10 Pro 64bitにです。

    以下スクリプトになります。
    Dim oWshShell
    Set oWshShell = CreateObject(“WScript.Shell”)
    ‘// メモ帳実行、最大化指定(3)→最大化され開かれた
    oWshShell.Run “notepad”, 3, True
    WScript.Echo “Bye!”

    Set oWshShell = CreateObject(“WScript.Shell”)
    ‘// 電卓実行、最大化指定(3)→最大化されない、念のため非表示(0)でも試したが反映されない
    oWshShell.Run “calc”, 3, True
    WScript.Echo “Bye!”

  42. 「選択したフォルダーとそのサブフォルダーのすべてのアイテムを MSG ファイルとして保存するマクロ」ページへのコメントと同じポストです。)

    基本的なことで申し訳ありません。outlookのフォルダ名が “5/1締切XXX” という場合,そのフォルダが作成されず,中のメールも保存されません。
    多分,
    ‘ ファイル名として不適切な文字を _ に置き換える
    For i = 0 To UBound(arrErrChars)
    strFileName = Replace(strFileName, arrErrChars(i), “_”)
    Next
    の部分をフォルダ作成にも適用できればいいと思いますが,やり方がわかりません。
    VBの問題ですが,ヒントはどこかにありますでしょうか。

  43. Outlook2016を利用しています。
    メールを受信した際、予め指定した複数のドメイン(outlook.jpなど)からのメールであれば、予め指定したエクセルファイルに、送信者のメールアドレスを書き出すマクロが作成可能でしょうか。
    書き出し時は、
    ・ドメイン事にシート分け
    ・名前表示(あれば)とメールアドレス、受信日時を別列に出力
    ・同一のアドレスがあれば、受信日時のみ更新、新規受信のときは追加
    のようにしたく、よろしくお願いいたします。

  44. OUTLOOKのVBAがあることを知り、今の作業を自動化できないか調べています。
    過去記事を参考にさせていただきマクロ作成を試しているのですが、
    うまく動作することができず、お力をお貸しいただけないでしょうか。

    ■利用環境
    OSバージョン:Windows10(64bit版)
    Outlookバージョン:office365

    ■前提
    毎日、出荷データをメール受信しています。1日8~12回。
    メールには、CSVデータが2つ添付されています。(出荷AAA.csv 出荷BBB.csv)。固定。
    夕方に1日の受信した出荷データをエクセルにまとめてファイル名に日付をつけて保存しています。
    ファイル名:出荷データ_20190930.excel
    それぞれ、出荷AAAと出荷BBBシートそれぞれに、データをまとめている。

    多い時には、12個のメールの添付ファイルを開いて、エクセルにコピペの繰り返し、名前を付けて保存をしており、作業の効率化を図れないか考えています。

    ■実現したいこと
    (1)指定フォルダ内のすべてのメールの添付ファイル2つををエクセルのそれぞれのシートに書き出し、その日の日付入りの名前をつけて保存したい。
    指定フォルダにまとめたいメールをコピペしておき、マクロを実行すると、(1)を行ってほしい。
    できれば、データが古いものから順に貼り付けていきたい。(指定フォルダ内の上から順に)
    更にできれば、出荷AAA.csv 出荷BBB.csvは、データだけでタイトル行がないので、エクセルシートのそれぞれ1行名にタイトル行も設定したい。

    決まった件名のメッセージを受け取ったら添付された CSV ファイルの 2 行目を Excel ファイルの最後尾に追加するマクロ
    特定のフォルダーにあるメールの添付ファイルの情報を Excel にエクスポートするマクロ
    を参考にしてみましたが、2つの添付ファイルがあるのでわからなくなってしまいました。
    どうぞよろしくお願いいたします。

  45. はじめまして。
    outlookでのマクロ作成ははつです。
    基本的なことで恐縮ですが、outlookにて受信済みメールのリンクをクリックすると、注意喚起のメッセージとともにはいいいえを表示。はい⇒そのままリンク先表示。いいえ⇒リンク先を表示しない。
    OS:Windows10 Pro
    Outlook:Microsoft Outlook for Office 365(詳細は不明です・・・)

      • ご確認ならびにレス、ありがとうございます。Applicationオブジェクト以外など自身でもいろいろ調べてみましたが、リンクのクリックイベント自体を取得が・・・ お手間をおかけいたしました。

  46. 過去の記事等を参考に、受信と同時にMsg形式+添付ファイルを特定フォルダに保存等のマクロ処理を行っています。
    メール本文保存と併せて、本文印刷を行っています。
    ご質問ですが、印刷ページを2ページまでに設定したいのですが、
    PrintOutではページ指定まではできないものなのでしょうか。
    他のサイト含め調べていますが、どうしてもうまく動作せず困っています。
    どうぞよろしくお願いいたします。

    <環境>
    Win10、Outlook365

  47. 現在、複数のアドレスに、それぞれ異なるPDFファイル(ファイルの名前は全部違う、数字①_日付け_数字②で次のような形、000000_20190929_00)を添付して、メールを送っています。アドレスが600件、添付ファイルは2,000個位を毎月手作業で毎回添付してから送信しています。

    数字①が同じものは、同じ人に送信するので、自動でPDFファイルをメールアドレスに添付できるマクロを作成できればと考えています。ファイル名の一部だけ同じものを自動で添付できるのか?
    人によって添付ファイルは3個だったり10個だったり、毎月決まっていません。

    マクロでこのような作業はできるでしょうか?
    マクロの作り方を、教えていただけたら、大変たすかります。
    outlook2010、windows7を使っています。

  48. お世話になっております。
    outlookでマクロが使えることをはじめて知り、本サイトを参考に試させているのですが、うまくいかずヘルプをお願いしした次第です。
    本サイトや他のサイトでも、受信トレイやサブフォルダーのデータをエクセルへエクスポートする方法の記述はあるのですが、送信済みトレイのエクスポート方法が見当たりません。
    やりたいことは以下の通りです。

    ・エクスポートしたい送信期間を設定する
    ・ターゲットは「送信済みトレイ」
    ・エクスポートしたい情報は「送信日時」「送信先」「件名」

    それほど難しいことではないと思いますが知識が乏しく、お手数をお掛けいたしますが、ご教示いただけると大変助かります。
    よろしくお願いします。

  49. 仕分けルール設定のされていない宣伝メールについてご相談したく質問させていただきました。

    毎回、都度新しい仕分けルールで
    ①受信トレイの中のメールを選択
    ②ルール → 仕分けメールの作成
    ③「差出人が次の場合」をチェック
    ④「アイテムをフォルダーに移動する」 ※ここで受信トレイの下位に「広告メール」というフォルダを事前に準備していますので、このフォルダを選択します。
    ⑤ルール作成後に、「現在のフォルダーにあるメッセージにこの仕分けルールを今すぐ実行する」をチェックし、OKをクリック
    ⑥ルール仕分け作成およびメールの移動が完了

    都度やっているのですが、マクロ化は可能でしょうか?

    大変恐れ入りますがOutlookのマクロの知識に乏しくご教示いただけると幸甚に存じます。
    何卒宜しくお願いいたします。

  50. 質問失礼します。
    https://outlooklab.wordpress.com/2019/04/06
    以前上記で記載いただきましたマクロに関しまして、条件を「5分以内にメールの件名が同一で、同じ特定文言が含まれているものを5件以上受信したらバッチを起動する」という条件のマクロの構文を伺って宜しいでしょうか?

  51. Outlook2016 にて予定表にマウスを合わせるとポップアップヒントで予定表の内容が表示されると思いますが、共有の予定表をたくさん表示し、予定表が横表示になった状態だと、
    上記のポップアップヒントが表示されなくなります。
    これをマクロでなんとか表示出来るようにならないかと思いコメント致しました。

    https://answers.microsoft.com/ja-jp/msoffice/forum/msoffice_outlook-mso_winother-mso_2013_release/outlook2013%e4%ba%88%e5%ae%9a%e8%a1%a8%e3%81%ae/76579a5b-c074-4bdc-9873-7226d4a63b57

    お手数をおかけしますが、宜しくお願い致します。

  52. 受信する際に指定の発信者AND指定のタイトルTUREの場合
    添付ファイル(ほかのユーザ転送メールです。)を指定のOUTLOOKのフォルダへコピーしたいです。
    コピーする部分がなかなかうまくできません。
    mMailItem.Attachments.Item(1).SaveAsFile ……をやってみましたがダメみたいですね!
    お手数をおかけしますが、宜しくお願い致します。

    <環境>
    Win10,64bit、Outlook2013

  53. 本サイトにていつもoutlookのマクロの書き方を勉強させて頂いております。
    まだ自分が不勉強なこともあり、ご相談させて頂きたく思います。

    業務でメールのやりとりをするのですが、メールを書くのが苦手で、色々と推敲しているうちに時間がかかってしまいます。
    効率化を考え短時間でメールを書く必要があると認識しており、それには実際に一つ一つのメールにどれだけ時間を要しているかが見える化出来れば考えています。

    そこでご相談としては、新規作成もしくは返信画面に移行してから、送信までの時間を計測するマクロを組みたいと考えおります。
    もうすでに類似のマクロがあれば、自分の確認漏れで恐縮ですが、御教授頂けないでしょうか?

  54. Outlookの処理を一部自動化したくて、このサイトにたどり着きました。

    ■やりたいこと
    メールで打ち合わせの参加可否を問い合わせた際に、返信されたメールの返信者や同報者を
    一括して「会議」の参加者として登録したいのですが、どのようなマクロを組めば良いかご教示
    いただけないでしょうか?

    ■動作イメージ
    (1) メールを受信して受信画面を開く
    (2) マクロ登録してあるボタンをクリックする
    (3) 「予定」画面の[宛先…]に、メールの送信者や同報者が設定されている
    (4) 件名や場所を入力して、[送信]する

    よろしくお願いいたします。

  55. こんにちは。VBAにはあまり詳しくないのですが、自動返信の方法を模索しており
    出来ましたらお教えください。

    ■環境
    ・Windows10
    ・Outlook2016

    ■実現したいこと
    メール受信時に、outlookのルール設定で「テスト」フォルダにメールを振り分けています。
    「テスト」フォルダにあるメールに対して、任意のタイトル・本文・BCCを自動返信できるように
    する方法はないでしょうか。

    受信時に自動返信をするやり方などは、こちらのサイトにもあったので出来るかなと思ったのですが
    自分ではVBAが分からず・・・・。
    宜しくお願い致します。

  56. こんにちは。メールを開くことによるウイルス感染を防止するため、メールを開かずにヘッダ情報より、送信者のアドレスを表示する方法を検討しています。

    ■環境
    ・windows10
    ・Outlook2010(サポート終了後はOutlook2016)

    ■知りたいこと
    別の方法があればご教示いただけますと幸いですが、現在は、PropertyAccessor を使用し、ヘッダ情報より「From:」を検索し、送信者アドレスをmsgboxで表示できるようにvbaを作成しております。

    ここで疑問なのですが、PropertyAccessor を使用し取得したヘッダ情報は、メールを開いて取得したものではないのか?ということです。

    やりたいことが、ウイルス感染防止。そのために、メールを開かずに送信者アドレスを知りたいなので、PropertyAccessorで、実はメールを開いていたでは、全く意味がありません。
    上記の情報または、別にアドイン等導入することなくメールを開かずに、送信者アドレスを取得する方法がありましたら、ご教示いただければと思っております。
    よろしくお願いします。

  57. いつも参考にさせていただいています。
    Outlookの特定のメールフォルダの未読数を、リボンに表示させたいのですが
    良い方法はないでしょうか?
    リボンのボタンをクリックすること表示されるダイアログボックスに表示する方法
    でもよいです。
    よろしくお願いいたします。

  58. 教えてください。
    エクセルに、とある作業をやる期間を書いております。
    例えば、A1のセルに12/5 E1のセルに12/10
    (12/5~12/10に作業をするという意味)
    この、12/5から12/10までの期間を
    アウトルックの予定表に予定を反映させることはできますか?
    VBAなどを使って、できますでしょうか?

    わかる方いらっしゃいましたら教えてください。
    よろしくお願い致します。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中