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

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

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

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

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

  1. 予定表で、
    定例会議をほかユーザーと共有しているのですが、
    ある個別の会議を このアイテムのみ開く で調整した際、

    ほかユーザーの予定は変わりますが、
    私の予定のみ一瞬変わるのですが、
    すぐに私の予定だけ変更前に戻ってしまいます
    おかしな設定を下覚えはないのですが、
    何か設定を変えることで処置できるならすぐに対応したいです

    • 以下のレジストリを設定して回避するか試してみてください。

      キー: HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Cached Mode
      名前: Upload
      種類: REG_DWORD
      値: 1

  2. つい先日よりOutlookを使用し始めて、こちらにお邪魔して勉強させて頂いております。
    (環境:WIN10, Office365)
    さて、「名前が適切ではありません」のコンパイルエラーで困っております。
    マクロは例の「豆腐メール」受信後の削除、及びメール受信後の添付エクセルファイルを
    デスクトップへ保存する の2種類のマクロを上下並べて記述させましたところ、
    上述のエラーが出ております。
    具体的には、Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    のところが、2種類のマクロ故に2重になっていることでのエラーだと思いますが、その回避方法を
    ご教示お願いしたいと存じます。いろいろ試しましたが、初心者故に対応が不明です。
    (豆腐メール用マクロは、サブ プロシージャがなく、もう一方はそれがあることで、混乱しているのかも知れません) どうぞよろしくお願い致します。

  3. いつも参考にさせていただいております。

    現在outlook2010を使用しております。

    特定の文字列から始まる件名のタスクを
    実施済みにした際に
    エクセルシートに①件名②タスク所有者の氏名
    が転記されたいと考えております。

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

  4. 初めてOutlookVBAに挑戦しており、とても参考にさせて頂いております。
    どうしても実現したいものがあり、お力添えいただけないでしょうか。

    本文にHTMLの表のあるメールが毎日数件届きます。
    1時間ごとにマクロを実行し、表内の項目を既存のエクセルの最下行に追記していくようにしたいです。

    HTML表は列数は2で固定、行数が変動します。

    「HTML 形式のメールの本文中に含まれる表を Excel にコピーするマクロ」を加工して作っているのですが、
    オブジェクトに関するエラーが出てしまい打破できません。
    何卒宜しくお願いします。

    • どのようなマクロのどのようなコードでエラーになっているかがわからないのですが、具体的なマクロやエラーの内容などを教えていただくことは可能でしょうか?

      • ご返信ありがとうございます。
        参考にしているのは、https://outlooklab.wordpress.com/2015/06/06/html-%e5%bd%a2%e5%bc%8f%e3%81%ae%e3%83%a1%e3%83%bc%e3%83%ab%e3%81%ae%e6%9c%ac%e6%96%87%e4%b8%ad%e3%81%ab%e5%90%ab%e3%81%be%e3%82%8c%e3%82%8b%e8%a1%a8%e3%82%92-excel-%e3%81%ab%e3%82%b3%e3%83%94/ そのままです。
        オブジェクトに関するエラーは乗り越えられました。お騒がせしました。
        Excelにペーストする際にテキストのみにしたいのですが、貼付け後にExcel側で書式を変更するしか無いでしょうか。

  5. OutlookVBA初心者です。

    お力添えを頂きたく初投稿させて頂きます。

    予定表に関して以下イベントのハンドラを実装したいのですが、
    どのようにしてイベントを検知すればよいかわかりません。

    ・予定表に新たにスケジュール登録された場合
    ・予定表に存在するスケジュールの件名や時間等のプロパティが変更された場合

    上記タイミングを検知し、外部システムへ通知を送りたいと思っております。

    コメント等頂けますと幸いです。

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

  6. OutlookVBA初心者です。
    1クリックで以下の作業を行いたいと考えております。
    (環境:Win10/Outlook2013)

    ・本文の一部だけを抜粋してヘッダーまたはフッターに表示
     もしくは件名の後ろから7文字
    ・抜粋した文字列をバーコード表示(バーコードフォントは入っております)
    ・クイック印刷

    抜粋する条件は指定文字列の後ろの7文字です。
    (バーコードフォントはBC39のため前後に*を結合する必要があります)

    また、実現出来たら他の(遠隔地の営業所)PCにも同様の設定を行いたいのですが、
    直接使用しているPCにコードをコピペする以外に方法はありませんでしょうか?

    お力添えいただけますと幸いです。
    何卒宜しくお願い致します。

    • こちらは印刷するのはバーコードのみでよいのでしょうか?
      それともメールの本文の最初または最後にバーコードを追加して印刷するのでしょうか?
      ちなみに、Outlook のマクロについては複数端末に展開する方法は用意されておらず、マクロを手入力するか、マクロではなくアドインとして実装する必要があります。

      • 返信が遅くなり申し訳ございません。
        展開方法に関してご教授いただきありがとうございます。
        印刷はメール本文に追加していただきたいです。(用紙の右上ないし右下)
        重ねてのお力添えをお願い申し上げます。

  7. Outlook VBA 初心者です。
    Outlook 2016を使用しています。

    Msg BoxとInput Boxの併用について。
    まずMsg Boxで、YES/NOの質問。Noの場合はそのまま送信。
    YESをクリックした場合で、Input Boxを表示させ、任意の文字を入力させる。
    入力させた文字は、メール本文の文末に『Checked (任意の文字)』と追記したい場合のコードをご教示いただきたく。
    メッセージボックスからインプットボックスまでのつなぎ方がいまいちわかりません。
    お力添えいただきますと、幸いです。
    宜しくお願いいたします。

    • objMail が本文を変更するメールアイテムとすると、以下のようなコードになります。

      If MsgBox(“確認メッセージ”,vbYesNo) = vbYes Then
      strText = InputBox(“任意の文字列:”)
      objMail.Body = objMail.Body & “Checked (” & strText & “)”
      End If

  8. アウトルックメールから送れないメールアドレスにメールを送るには、どうしたらいいですか?

    例→ メールアドレスの@の直前にピリオド(.)がある。

    よろしくお願いします。

  9. Outlookマクロについて質問です。
    メール本文から特定文字以降を抽出したいです。
    Outlook2016です。

    ★条件
    ・新規メールを受信後、件名に”パスワード”とあったら実行

    ★やりたいこと
    ・下記を指定Excel(C:\test\PW.xlsx)に書き出し
    ・件名をA2以降に書き出し(空白行の最終行)
    ・本文内の【パスワード】後に改行してあるパスワードをA3以降に書き出し(空白行の最終行)

    ★例
    ******* このようなメールを受信 *******
    〈件名〉
    パスワード送信
    〈メール本文〉
    お疲れ様です。

    【パスワード】
    ABC123

    ******* 指定Excel *******
    (A2)       (A3)
    パスワード送信  ABC123

    以上、お力を貸していただきたいです。
    少し急ぎ目だと助かります。
    よろしくお願いいたします(@_@)

  10. はじめまして。
    こちらのサイトをいつも参考にさせていただいております。
    投稿されていた添付ファイルを保存するマクロを実行しているのですが、
    会議通知が来るたびにエラーが起こり、デバックが必要となります。
    ○エラー箇所
    > Set mail = Application.Session.GetItemFromID(strEntryID)
    会議通知をよけるにはどうすればよいでしょうか。

    ○実行マクロ
    Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    Dim i As Integer
    Dim id As Variant

    If InStr(EntryIDCollection, “,”) = 0 Then
    SaveAttachments EntryIDCollection
    Else
    id = Split(EntryIDCollection, “,”)
    For i = LBound(id) To UBound(id)
    SaveAttachments id(i)
    Next
    End If

    End Sub

    Private Sub SaveAttachments(ByVal strEntryID As String)
    Dim attach As Attachment
    Dim file As String
    Dim bat As Object
    Dim mail As Object

    Set bat = CreateObject(“WScript.Shell”)
    Set mail = Application.Session.GetItemFromID(strEntryID)

    For Each attach In mail.Attachments
    With attach

    ‘保存する添付ファイルをファイル名で指定
    If Not .FileName Like “ファイル名” Then
    GoTo L1
    End If

    ‘保存先のフォルダを指定
    file = “フォルダ” & attach.FileName
    .SaveAsFile file

    ‘実行するbatファイルを指定
    bat.Run “batファイル”, 1, True

    L1:
    End With
    Next

    Set bat = Nothing
    Set mail = Nothing
    End Sub

    • 本来なら mail を Object として定義しているので、GetItemFromID で会議出席依頼のアイテムが取得されてもエラートはならないはずなのですが…
      原因がわからないので On Error Resume Next を Application_NewMailEx の冒頭に挿入してみてください。
      こうすると、エラーが発生しても無視されます。

  11. 始めまして。こちらのサイトで勉強させていただいております。
    VBA初心者で浅学で誠に申し訳ございませんが、お力添え頂けないでしょうか。
    (環境:Win10/Outlook2013)

    <実現したいこと>
    ・特定サブフォルダに見積メールが新規格納されたら、管理簿登録するExcelマクロを実行する。
    ・管理簿登録時の引数は、メール本文に記載の案件名とする。

    <エラー箇所>
    ・Outlookマクロ→Excelマクロの呼び出し方法が分かりません。
    ※「特定サブフォルダに見積メールが新規格納されたら」の部分は過去質問を基に作成予定です。

    ===エラーになったマクロ===
    Sub 呼び出し()
    Dim BookName As String
    BookName = “C:\test.xlsm”
    Application.Run “‘” & BookName & “‘” & “!見積マクロ”
    End Sub
    ================

  12. 貴Windows 転送ツールで転送後に Outlook で連絡先がアドレス帳に表示されない現象について
    の表記で紹介されたvbsをoutlook2019で実行したところ
    行25 文字1 エラー 型が一致しません UBound コード800A000D 実行エラーが出ました。
    お忙しいところ恐縮ですがご教授いただけると幸甚です。
    よろしくお願いいたします。

    • Outlook 2019 で実行してみたのですが、正常に動作しました。
      プロファイルのレジストリ情報がスクリプトで修正できないような不整合となっている可能性があるので、プロファイルを再作成してみてください。

  13. いつも参考にさせてもらっています。
    Outlook365(2016?)で、受信メールの表示画面のフォントをすることはできない
    でしょうか?
    テキスト形式でひな型のフォントを固定長フォント(MS ゴシック)に変更して
    いますが、受信したメールは罫線などの記号が適用されていないため、罫線で
    作成された表がとても見辛いのです。

    ちなみに、メール本文をテキストエディタにコピー&ペーストすると、きちんと
    表が表示されます。
    また、メール作成時も問題なく表として表示されているのですが、自分宛に
    送信してみると、やはり、表が崩れて表示されます。
    もしかすると、文字コードの問題なのかもしれませんが、まずは、受信した
    メールのフォントを変更する方法があれば、ご教示ください。

    以上です。

    • 相手が HTML 形式やリッチテキスト形式で送信してきた場合、テキスト形式のために設定したフォント情報は使用されず、相手が指定したフォントで表示されます。
      受信側でフォントを強制することはできません。
      すべてのメールをテキスト形式で表示するようにすれば受信側で指定したフォントで表示されますが、その場合は本文中の図やテーブルが失われたりしてかえって見づらくなる可能性もあります。
      表の埋め込みをしたいなら、罫線文字で表を作るのではなく、HTML 形式で表を作ったほうが良いのではないかと思います。

  14. はじめまして。いつもこのサイトにて勉強させてもらっています。
    Excelから会議開催通知を送信するマクロを作成したのですが、本文のフォントやサイズ、文字色の変更方法がわかりません。行毎にそれぞれ指定した書式にすることは可能でしょうか?
    また文章内に例えば、ファイル名.xlsxと書いた部分にハイパーリンクを設定する方法を教えて頂けると大変助かります。
    よろしくお願い致します。

  15. すいません。もう1つ教えて頂きたいです。
    Excelからメールの本文を作成する際もフォント、サイズ、文字色を変更する方法も教えて頂けると助かります。行毎や何行目の何文字目から何文字目までのように指定した位置を変える事も可能でしょうか?又、ハイパーリンクの設定方法も教えて頂けると助かります。
    よろしくお願い致します。

    • 残念ながら会議出席依頼の本文でフォントのサイズや色などの書式を設定することはできません。
      会議出席依頼自体は HTML 形式やリッチテキスト形式をサポートしているのですが、Outlook オブジェクト モデルでは会議出席依頼はテキスト形式の本文しか扱えないのです。

  16. Outlook2016を使用しています。先日から受信したメールの画像が四角い枠で表示され
    画像が表示されなくなりました。
    以前は、メールの編集オプションの詳細設定の図をイメージ枠で表示するという項目にチェックが
    入っていると
    同じような現象が起こっていたようですが、システムの更新があってその項目が無くなっています。
    どうすれば表示できるようになるでしょうか?

    • Outlook 2016 でも [図をイメージ枠で表示する] という項目は残っています。
      この設定はメールの新規作成時のウィンドウの [ファイル]-[オプション] で表示されるものなのですが、どこの [オプション] で確認されたのでしょうか?

  17. はじめまして
    Outlook 2016 を使用しています。
    メール自動転送のマクロの相談です。

    受信メールを転送時、送信メールの差出人は「自分」のアドレスとし、
    本文一行目には”転送します”の一文を追加したいです。
    受信メールの条件や転送先は仕訳ルールで自分で設定します。

    経緯:社内にて、非常勤社員から送られたメールを別の非常勤社員へ転送する(お互いのメールアドレスは分からないようにする)という煩わしい作業が日に10件近くもあり解決方法を模索していました。似たような質問はここでいくつか見つかったのですが私ではプログラムが読み解けず質問に至りました。大変初歩的な質問で申し訳ありませんが、上記解決できるマクロをご教授願います。

    • 残念ながら転送先をルールで指定するという場合、マクロで本文を編集することはできません。
      実装するとなると、転送処理自体をマクロで処理し、転送先の指定もマクロ内で行う必要があります。

  18. いつも大変お世話になっております。
    業務効率化のために実現したい機能があり、ご支援いただけないでしょうか?
    Outlook2016を使用しています。

    社内システムにて受注入力すると受注票(PDF)が添付された出荷依頼メールが送信されます。出荷担当はその都度この添付ファイルを印刷するのですが、日々数十件発生するため自動化したいです。
    そこで当サイトの過去事例を参考に以下のようなマクロを作成しました。メール受信イベントをトリガーに、条件に合致するメールだったら、添付ファイルを保存→印刷→フォルダ移動を実行します。

    Private Declare Function ShellExecute Lib “shell32.dll” Alias “ShellExecuteA” _
    (ByVal hWnd As Long, ByVal lpsz0p As String, ByVal lpszFile As String, _
    ByVal lpszParams As String, ByVal lpszDir As String, ByVal FsShowCmd As Long) As Long

    Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    Dim objItem As Object
    Set objItem = Session.GetItemFromID(EntryIDCollection)
    If TypeName(objItem) = “MailItem” Then
    ‘メールを受信したら添付ファイル保存・印刷・フォルダ移動を実行
    Call PrintAttachments(objItem)
    End If
    End Sub

    Public Sub PrintAttachments(ByVal objMail As MailItem)
    On Error Resume Next
    Const ATTACH_PATH = “C:\受注票PDF\” ‘添付ファイルの保存先フォルダ
    Const FromAddress = “aaaa@bbb.cc.dd” ‘Fromメールアドレス
    Const ToAddress = “wwww@xxx.yy.zz” ‘Toメールアドレス
    Dim objAttach As Attachment
    Dim strFileName As String
    Dim fldInbox As Folder
    Dim fldPrinted As Folder
    ‘件名・From/Toアドレスが条件に合致した場合
    If objMail.Subject Like “出荷依頼【NO. *” And _
    objMail.SenderEmailAddress = FromAddress And objMail.To = ToAddress Then
    ‘添付ファイルが存在する場合
    If objMail.Attachments.Count > 0 Then
    For Each objAttach In objMail.Attachments
    ‘添付ファイル名が条件に合致した場合
    If objAttach.FileName Like “SYUKAIRAI_*.pdf” Then
    ‘添付ファイルを指定フォルダに保存
    strFileName = ATTACH_PATH & objAttach.FileName
    objAttach.SaveAsFile (strFileName)
    ‘保存したファイルの印刷
    Call ShellExecute(0, “print”, strFileName, 0, ATTACH_PATH, 0)
    ‘受信トレイ・印刷済フォルダの取得
    Set fldInbox = Session.GetDefaultFolder(olFolderInbox)
    Set fldPrinted = fldInbox.Folders(“印刷済”)
    ‘印刷済フォルダにメールを移動
    objMail.Move fldPrinted
    End If
    Next
    End If
    End If
    End Sub

    このマクロですが、受信するメールが1件ずつなら問題ないのですが、同時に複数件のメールを受信すると1件だけ処理して残りはスルーしてしまいます。最初の受信イベントを検知して後続の添付ファイル保存・印刷・フォルダ移動の処理をしている間に発生した残りのメールの受信イベントは検知できないようです。

    そこで、受信イベントを検知したら、30秒間待機させて、受信トレイ内のすべてのメールに対して添付ファイル保存・印刷・フォルダ移動を実行するようにしたいのですが、どのようにコーディングすればいいのか分かりません。このマクロのコーディングをお願いできないでしょうか?

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

    • 残念ながら複数のメールを同時に受信した際にマクロが実行されなくなるという問題についての回避策がまだ見つかっていません。
      Outlook のマクロは常にメインのスレッドで行われるので、マクロの中で 30 秒待機するとその間 Outlook が処理できずに固まってしまうだけで、回避策とはなりません。

  19. たいへんお世話になります。
    OutlookのVBAについての質問です。

    やりたいこと:
    Outlookに複数のアカウントがあります。例えば
    アカウント1 のアドレス:address-1
    アカウント-2 のアドレス:address-2 とした時

    新規メール、返信、転送 などのウィンドウを開いた時に、
    BCCに差出人アドレスのaddress-1 またはaddress-2を自動で入力したい。

    質問:
    ・アカウント-1が選択されているとき、address-1 を変数の値として取得したい
    ・アカウント-2が選択されているとき、address-2 を変数の値として取得したい
    VBAのSender PropertyやSenderEmailAddress Property などの具体的な使い方が良く分からない。

    参考マクロ:
    Outlook 2013 でメール送信時に常に BCC を付加する
    https://www.compnet.jp/wordpress/archives/2990

    環境:
    Windows10 Professional 64bit
    Office 2019 またはOffice365

    以上よろしくお願い致します。

  20. こんにちは、よろしくお願いします

    決まった件名のメッセージを受信したら、データを CSV ファイルに保存するマクロ

    を参考にしてパスワードをクリップボードへコピーするようにできました
    ありがとうございます

    それで、この動作を「メール受信時」ではなく「メール選択時」にしたいのですがうまくできません

    Application_ItemLoad に記述すればいいと思ったのですが
    マクロ初心者でオブジェクトの概念が理解不足と感じています

    ■実現したい事
    件名に「[パスワード/Password]」 の文字があるメールをプレビューするか開く時
    本文にある「パスワード : 」より後ろ、改行までの文字をクリップボードにコピーする

    ■使用環境
    Windows10
    outlook2016

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

  21. はじめまして 。VBA初心者です。
    仕事柄、グラフなどの図を画像形式で共有することが多く、次のようなマクロを探しています。
    snippingツールやスクリーンショットで既にクリップボードにコピーされている画像を、outlookの新規メール本文にペーストするマクロは既に公開されてますでしょうか?宜しくお願い申し上げます。

コメントを残す

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

WordPress.com ロゴ

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

Google フォト

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

Twitter 画像

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

Facebook の写真

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

%s と連携中