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

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

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

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

  1. コメント失礼します。
    outlook2010を使用しています。
    現在メールの返信や新規作成時、署名が入るように設定しておりますが、自動転送したメールにも署名が入ってしまっている状態です。
    転送メールを見る際に、一々署名が入っていると見づらいため、転送時のみ署名を消したいと思うのですが何か方法はありませんでしょうか。
    ご回答いただけると幸いです。
    よろしくお願いします。

      • Outlook 予定表について教えてください。
        Outlook2016、Windows10

        新規予定を相手先に送る場合、送信の時間指定はできますでしょうか?
        操作方法含めて、詳しく教えていただけたら、うれしいです。
        Outlookメールでは、配信オプションでできますが、予定表では、やり方が判りません。
        よろしくお願い致します。

  2. はじめまして。
    いつも参考になる多数の記事ありがとうございます。
    さて、投稿されている記事から
    「入力した文字列で検索し、見つかったアイテムをその文字列の名前のフォルダーに移動するマクロ」
    「本文に特定の文面を含む場合に、そのメールとファイルを添付して転送するマクロ」
    「Excel ファイルのキーワードをもとに転送するマクロ」
    などを参考にマクロを作成しているのですが、どうもうまくいかず、助言をいただきたくコメントさせていただきました。
    いま作成しているマクロは下記のようなものです。
    1.EXCELにOutlookフォルダ名と特定のキーワードを保存(複数キーワードでのAnd/Or条件)
    2.EXCELに記述したOutlookの特定フォルダから特定のキーワードを含むメールをローカルフォルダにmsgファイルとして保存
      この時、キーワードが件名に含まれるか、本文に含まれるか、添付ファイル内(Excel,Word,Ppt,PDF等)に含まれるかをEXCELに結果出力
    3.保存したmsgファイルの添付ファイル(EXCEL,Wordのみ)の該当キーワード部分を色付する。

    まず、お聞きしたいのは2の時に添付ファイル内にキーワードが含まれるメールの保存方法です。
    私が試したのは、EXCELからマクロを実行し、Outlookの検索窓にキーワードを入れ、検索結果を表示(ここまではうまく動きました)
    その後に検索結果のメールをmsgとしてローカルに保存する方法が分からず、一旦諦め。
    次にEXCELからマクロを実行し、GetNamespaceから該当のメールフォルダを捕捉、
    含まれるメールアイテム1件ずつを、InstrでSubjectとBodyで検索、検索結果はEXCELに出力。
    添付ファイルが含まれる場合には、その添付ファイルを全てローカルフォルダに一時保存し、
    一時保存したフォルダに対してShellとFileSystemObjectを使いNavigateやFilterViewで、
    キーワードが含まれるかどうか判断(残ったファイル数が1以上なら含まれる)する。
    その後、一時保存ファイルは削除し、判断結果によって該当のメールをmsgとして保存する。
    かなり力技ですが、この方法は何とか動きました。
    ですが、非常に時間が掛かるのと、FileSystemObjectのFilterが終わっているかが判断できず、
    稀に検索が失敗(キーワード含まれるのに無と判断)してしまいます。
    何とかスマートに作動させる方法が無いでしょうか?一旦諦めた検索結果メールを取得できるのが良い気がしますが・・・

    それが、出来れば上記3の添付ファイルを開いて文字への色付ですが添付ファイルを開いて編集し、
    上書きする方法を、合わせてご教示いただければと思います。VBA(EXCELマクロ)については、
    ある程度分かりますので、色付などは問題なくできると思っています。

    長文になってしまいましたが、何とかお知恵をお借りできればと思います。
    宜しくお願い致します。

    【マクロ使用環境】
    Windows 7
    Outlook 2013
    Excel 2013

    • 実行しようとしている内容が非常に高度であるため、マクロでの実装は困難でしょう。
      まず、件名、本文、添付ファイルの内容について検索するには、Windows Search での検索を実行する必要があります。
      マクロで Windows Search での検索をするには Explorer.Search を使用しますが、このメソッドで検索されたアイテムだけにアクセスするというメソッドは用意されていないため、この結果をマクロで使用することはできません。
      マクロではなく C++ で実装すれば Windows Search の API を呼び出して処理することも可能かもしれませんが、ちょっと大掛かりになりすぎますし、どの程度のコードが必要なのかの予測もつきません。
      そのため、力技といわれている方法で検索を実行する以外に手段はないと考えられます。
      なお、添付ファイルを開いて編集し、上書きするという処理を実装するとなると以下のような形になるでしょう。
      1. Outlook で添付ファイルをローカルに保存する
      2. 保存したファイルを編集できるアプリケーションのマクロを使ってそのファイルを開き、編集して上書き保存する
      3. Outlook でメールの添付ファイルを削除し、2. で編集したファイルを追加する
      これも複雑であり、ファイルの種類ごとにコードを書く必要があるため、私の力量ではカバーしきれません。

  3. 困っているので教えてください。
    Office2013ProPlusを使っていますが、Excel2013の起動が不安定になったため、やむなくOffice自体の再インストールを実施することにしました。
    Outlook2013についてはフォルダ構成や振り分けなどの設定を入れているため、完全に元に戻したいと思っています。
    そこでアカウント情報や振り分けルールなどを完全に戻す方法を教えていただけませんでしょうか?
    なお、pstファイルのエクスポートは振り分けのエクスポートなどは検索して見つかったのですが、メールアカウントのバックアップ方法は見つからなかったため、質問させていただきます。
    よろしくお願いします。

    • Office のアンインストールや再インストールではメール アカウントの設定などは削除されませんのでご安心ください。
      どうしても心配であれば、以下のレジストリとフォルダーをバックアップしておいてください。

      レジストリ:
      HKEY_CURRENT_USER\Software\Microsoft\Office\15.0

      フォルダー:
      c:\users\ユーザー名\AppData\Local\Microsoft\Outlook
      c:\users\ユーザー名\AppData\Roaming\Microsoft\Signatures

  4. WebにOutlookのVBAの情報が少ないため、いつも活用させていただいております。
    ありがとうございます。

    現在、メール送信後に、自動で送信済みアイテムフォルダから
    異なるデータファイルの別のフォルダへメールをコピーするマクロを作成しております。

    「送信済みフォルダーに保存されるメールにフラグを自動的につけるマクロ」
    (https://outlooklab.wordpress.com/2015/01/31/)を参考にさせていただき、
    作成していますが、コピー先のフォルダの指定で躓いています。

    コピー先のフォルダがデフォルトのデータファイルではない場合、どのように指定すればよいのでしょうか?
    (仕分けルールでは、下書き状態のメールがコピーされてしまうため、出来ませんでした。)

    マクロは以下のようにしています。

    Dim WithEvents mySentItems As Items

    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    Set mySentItems = Session.GetDefaultFolder(olFolderSentMail).Items
    End Sub

    Private Sub mySentItems_ItemAdd(ByVal Item As Object)
    If TypeName(Item) = “MailItem” Then
    Dim myItem As MailItem
    Dim myCopiedItem As Outlook.MailItem
    Dim myFolder As Outlook.Folder
    Set myItem = Item
    Set myCopiedItem = myItem.Copy
    Set myFolder = ‘ ここの指定がわかりません。
    myCopiedItem.move myFolder
    End If
    End Sub

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

  5. 助けてほしいです。
    小さい転職先の会社でOutlook 2013をIMAPで使っているのですが、色分類項目が使えません。POPに変えると他の端末(IPHONE)からメールが見れないくなると聞きました。この分類項目を是非使いたのですが、方法はあるのでしょうか?
    宜しく、お願い致します。

  6. oulook2010のデフォルト設定では、
    受信トレイに新着メールがあると通知領域に封筒のアイコンが出ますが、
    新着メールが仕分け条件にヒットし他のフォルダに仕分けられると封筒のアイコンが出ません。

    新着メール受信で常に封筒のアイコンを出すマクロを作ることはできるでしょうか?

  7. ユーザフォームを使ってアンケートを収集したい。

    はじめまして、Hiroと申します。
    OutlookのVBAスクリプトを作成する必要があり、参考にさせていただきたいと考え、
    投稿を読ませていただいています。

    [やりたいこと]
    最初に記載しました通りユーザフォームを使ってアンケートを集約したいと考えております。
    こちらがアンケート用のフォームを作成し、対象者がそのフォームに入力したうえで
    ユーザフォーム内の「送信」ボタンを押したら私宛にその回答内容が返信されるようにしたいと存じます。

    [シーン]
    ・まずアンケートを取りたい人Aとアンケートを回答する人B(Bは複数)がいる

    ・Aがユーザフォームを使ったアンケートをBに送信
     ⇒Bがアンケートのフォームとなったメールを受け取る。

    ・Bがアンケートフォーム内にあるチェックボックス、リストボックス、テキストボックスに回答を入力する。

    ・Bが「送信」ボタンを押すとA宛に下記のメールが送信される。
     ⇒・フォームに入力された内容がメールの本文に書きだされている
      ・フォームに入力された内容がExcelに書き出されてメールの添付となっている

    ・VBAスクリプトやフォームを作成するのはもちろんA

    [特にできるようになりたい機能]
    ・ユーザフォーム内の「送信」ボタンを押したらメールを送信する機能
     ボタンとスクリプトを関連付ける方法
     そのスクリプトでメール送信をするコマンド(方法)

    ・エクセルファイルを開き、内容を書き込んでメールの添付ファイルとする方法
     添付ファイルの指定

    [情報]
    使用環境はWindows10、Outlook2010です。
    私自身はOutlookによるVBAは完全に初めてですが、
    プログラム関連は20年近く経験があります。
    ※プロのプログラマーとしての経験はなし、
     C言語を大学での授業やなどで10年ほど
     MATLAB/Simulinkを業務で10年程度
     EXCELでのVBAを仕事に有用なアプリ作成など
     

    • Outlook で HTML 形式の本文にフォームやスクリプトを埋め込んでを送信したとしても、受信側ではそのフォームやスクリプトは動作しません。
      メールの送信者が何らかのスクリプトを埋め込んで、それを受信者側で動作可能にすると、ウイルスなどに悪用されるためです。

  8. エラーを回避出来ず、悩んでいます。

    メールの本文をExcelシートに追記したいです。
    メール本文
    日時 AAA
    場所 BBB
    プロセス CCC
    バッテリ残量 DDD
     :
     など40項目程度

    Excelシート
    日時  場所  プロセス  バッテリ残量  ・  ・  ・  40項目程度
    AAA  BBB  CCC    DDD    
    AA1  BB1  CC1    DD1

    項目の順番がメール本文とExcelで合致しないため、メール本文の項目を抜き出しExcelの項目から検索して追記をしたいのですが、For文の2回目でエラーになります。
    メッセージ
    「オブジェクト変数またはWith ブロック変数が設定されていません。」

    以下プログラム

    ‘ TABで区切られたメール本文をExcelシートの項目に追記する
    ‘ メール本文の設置場所に記載されている場所と
    ‘ プロセスに記載されている状態をファイル名とする

    Public Sub ExportBodyToExcel()

    ‘ エクスポートする Excel ファイルのファイル名を指定
    Const Carent_Dir = “c:\temp\”
    Dim objBook As Object
    Dim objSheet As Object
    Dim r As Integer
    Dim strBody As String
    Dim strl As String
    Dim c As Variant

    ‘ メール状態の確認
    If TypeName(Application.ActiveWindow) = “Inspector” Then
    strBody = ActiveInspector.CurrentItem.Body ‘ 開いてる
    Else
    strBody = ActiveExplorer.Selection(1).Body ‘ 閉じてる
    End If

    If “” GetValueByToken(strBody, “設置場所”, False) Then
    ‘ メール本文の設置場所名のEcxelファイルを作る
    FileName = GetValueByToken(strBody, “設置場所”, False)
    EXCEL_FILE = Carent_Dir & FileName & “.xlsx”

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

    ‘ 空行を探す
    r = 1
    While objSheet.Cells(r, 1) “”
    r = r + 1
    Wend

    ‘ メール本文の最後まで一行ずつ切り出す
    For s = 1 To Len(strBody) – 1
    e = InStr(s, strBody, vbCr) ‘ 改行までの
    strLine = Mid(strBody, s, e – s) ‘ 1行ずつ切り出す
    s = e

    t = InStr(strLine, vbTab) ‘ TABまでの文字数
    strTit = Mid(strLine, 1, t – 1) ‘ TABまでの文字列
    strVle = Mid(strLine, t + 1, Len(strLine)) ‘ TAB移行の文字列

    c = objSheet.Range(“A1:BZ1”).Find(strTit).Column   <—-ここでエラー
    objSheet.Cells(r, c) = strVle
    Next

    どうしたらよいのでしょう。
    ご教授お願いします。

  9. こちらのサイトいつも参考にさせていただいております。ちょっと諦めかけているのですが、
    お知恵をお借りしたく、よろしくお願いします。

    【フォルダサイズを取得したい】
    選択されたフォルダ以下の合計サイズを取得する

    【相談事項】
    対象フォルダやファイル数が多いと、とてもじゃないですが遅くて使い物になりません。
    Outlook上のフォルダを右クリック-プロパティ-フォルダサイズで確認できますが、とても速いです。
    ただしこちらはデータをコピーすることができません。
    もちろんFor Eachで足し算しているところが遅い原因です。なにか違うメソッドでもあるのでしょうか?

    【参考】
    ttps://gallery.technet.microsoft.com/office/c9c72a2e-3ed0-47b4-a044-3bc2197b59cf

    【コード】
    Sub GetSubfolders(ByVal objParentFolder As Outlook.Folder, ByRef aryFolder As Variant)
    Dim colFolders, objFolder, objSubfolder, oFolder As Outlook.Folder
    Dim objItem As Object
    Dim intSize As Long
    Dim strParentName As String

    ‘ 現フォルダの参照
    Set colFolders = objParentFolder.Folders

    For Each objFolder In colFolders
    Set objSubfolder = objParentFolder.Folders(objFolder.Name)

    Call GetSubfolders(objSubfolder, aryFolder)

    ‘ 選択フォルダ直下のメールの合計サイズ
    intSize = 0
    For Each objItem In objFolder.Items
    intSize = intSize + objItem.Size
    DoEvents
    Next
    ‘ 選択フォルダのサイズを配列へ格納する
    ReDim Preserve aryFolder(UBound(aryFolder) + 1)

    ‘ サブフォルダのサイズを取得
    aryFolder(0) = aryFolder(0) + Int(intSize / 1024)
    aryFolder(UBound(aryFolder)) = objFolder.FullFolderPath & “,” & Int(intSize / 1024) & “,KB,” & objFolder.Items.Count & “,Files”
    Next
    End Sub

    Sub GetFolderSize()
    Dim objFolder As Outlook.Folder ‘フォルダー
    Dim aryFolder As Variant
    Dim intSize As Long
    Dim objItem As Object

    ‘ 選択フォルダへの参照を取得
    Set objFolder = Application.ActiveExplorer.CurrentFolder

    ‘ 配列の宣言
    aryFolder = Array()

    ‘ 選択フォルダへのサイズを取得
    intSize = 0
    For Each objItem In objFolder.Items
    intSize = intSize + objItem.Size
    Next
    ReDim Preserve aryFolder(UBound(aryFolder) + 2)

    ‘ 選択フォルダのサイズと総合計を配列へ格納する
    aryFolder(0) = aryFolder(0) + Int(intSize / 1024)
    aryFolder(UBound(aryFolder)) = objFolder.FullFolderPath & “,” & Int(intSize / 1024) & “,KB,” & objFolder.Items.Count & “,Files”

    ‘ サブフォルダのサイズを取得
    Call GetSubfolders(objFolder, aryFolder)
    aryFolder(0) = aryFolder(0) + “,KB”

    End Sub

      • PST ファイルや OST ファイルならそれほど時間はかからなそうなのですが、Exchange サーバーにオンライン モードで接続している状況でしょうか?

      • コメントありがとうございます。
        下記に返信リンクがでない為、こちらに回答します。

        参照先はPSTファイルです。サブフォルダは100-120くらい、それぞれのフォルダに1000-1500件ほど
        保存しています。PSTファイルで4-6GBです。

        どんどんメールがたまっていくため、優先的に添付ファイルを整理するため
        フォルダ単位でサイズを取得したく。。。

        右クリック-プロパティ-フォルダサイズ で 大よそ20-30秒くらい、
        このマクロでは6000件の合計を計算させるだけで30秒はかかってしまいます。。。

      • PSTでも発生となると、ディスクアクセスなどがボトルネックになっているように思われます。
        優先的にサイズが大きいメールを処理したいということなら、検索フォルダーの[サイズの大きなメール]を使ってみてはどうでしょうか?

  10. マクロ作成について、ご教示ください。
    outlook2013を使用しています。

    ある特定の期間に受信したメールのうち、
    件名に特定のキーワードが入っているメールをカウントし、
    件数とその件名を抽出したいと思っています。

    また、今日を基準に、先月を自動算出し、
    先月分の条件に該当するメールをカウントするなどは可能でしょうか。

    よろしくお願いします。

  11. すみません、教えてください。Office 365 より Office 製品をダウンロードして利用しています。SharePoint Online で何か不具合があるらしく、Office 2013 を利用しています。最新版があたっているのですが、メールを作成途中になぜかクラッシュしてしまいます。周りの人も同じような状況でクラッシュしているのでアカウントの問題ではなさそうなのですが、何か改善する方法はありますでしょうか?

    バージョンは以下になります。
    15.0.4893.1000 MSO (15.0.4893.1000) 32 ビット
    Microsoft Office 365 ProPlus の一部

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

    • メールの作成中にクラッシュとなると、Word のコンポーネントの不具合の可能性もありますね。
      ひとまず、2 月中にリリースされる Outlook と Word の修正を適用してみてください。
      また、頻繁にクラッシュするようならマイクロソフトのサポートに問い合わせてみてください。

      • ありがとうございます。2月にリリースされる Outlook と Word の修正を適用して様子を見ようと思います。

  12. Liveメールの送信済みアイテムの画面で送信したメールのマークが開いた状態になっていますが、相手が見たら開いたマークにできませんか?相手が既読したかどうかの確認メッセージは要りません。

  13. メールの本文など、あるキーワードを選択した状態で、
    右クリック->Google検索(マクロ)->ブラウザが起動(googleサイトで検索)
    となるようなマクロは作成できませんでしょうか?

  14. 色々検索していたらこのサイトにたどり着きましたので、お世話になりますが質問させていただきます。
    outlook2013を使用していますがメールを受信したら本文を自動で読み上げるという事をやりたいのですが仕分け等の機能を探してもみつかりませんでした。VBA等を使いメール着信後、本文を読み上げる事はできないのでしょうか?コピペし専用ソフトで読み上げる事は出来ますが、特定のアドレスに送られたメールを自動で読み上げてもらいたいと思います。

    使用環境は、
    Windows10
    Outlook2013

    • Outlook のルールやマクロではメールの本文を読み上げるという機能はないのですが、Excel の機能を使えばできるかもしれません。
      受信したらすぐにメールの読み上げをするということで良いのでしょうか?
      何らかの作業中や電話中に突然メールの読み上げが始まるというのは、ちょっと不都合があるのではないかと思いますが。

      • 早速の回答有り難うございます。お世話になります。
        受信後、直ぐにメールを読み上げて構いません。
        私もエクセルに貼り付けて読み上げさせてみましたが単語登録がないため結構読み違いが多かったので、
        今はSofTalkというフリーソフトに単語登録し使用しています。
        エクセルに単語登録できれば良いのですが・・・。いずれにしても自動で読み上げてくれれば大変たすかりますのでよろしくお願いいたします。

  15. お世話になります。windows7でoutlook2010を使用しています。超初心者で基本の質問で申し訳ありません。
    「受信したメールの添付ファイルを自動保存するマクロ」を仕分けルールのスクリプトで使いたく、マクロをVBA project.OTMのMicrosoft Outlook Objects内のThisOutlookSessionに張り付けたのですが、スクリプトを選択できません。どうしたらよいでしょうか。

  16. 別件(祝日追加)でマクロを利用させて頂き大変助かりました。

    可能であればマクロ作成をご検討頂きたいのです。

    OS:Windows 7 Professional(64bit)
    Outlook2013

    Outlook.comのアカウントの予定を個人の予定表として利用する為
    アカウント登録し、Outlook2013側で
    Outlook.comアカウントの予定を入力しております。

    Outlook2013の予定表でも同様だとは思うのですが
    予定の【件名】【場所】に入力した文字を検索は可能なのですが
    置換をしたいのです。

    よろしくお願い申し上げます。

  17. 上記に追記です。

    CSVでエクスポートし置換えた後に
    CSVでインポートという方法で可能なのは承知していますが
    以下の理由でCSVのインポートは避けたいという状況です。

    Outlook.comをAndroidのアプリで見ると表示されかなったりとなります。
    原因はバージョンの違いのように思います。

    予定表のビューで一覧にし、
    表示フィールドに【バージョン】を表示させると以下の状況となります。
    Outlook2013で入力(データ更新)分 バージョン【15.0】
    AndroidのOutlookで時間等を更新 バージョン【15.1Ex】
    CSVでインポート バージョン【空欄】

    CSVデータに【バージョン】の情報はエクスポートされないようです。
    CSVデータに【バージョン】の情報はエクスポートされ
    【バージョン】の情報【15.0】でインポート可能であれば問題ないのかもしれません。

    よろしくお願い申し上げます。

  18. win10(32bit)、outlook2016を使用しています。以下の操作を手作業でやっていますが、マクロで行うことは出来ますでしょうか。
    ・サブフォルダにある複数のメールを選択。(サブフォルダ内の全てのメールでも構いません。)
    ・選択した状態で「ファイル」「名前を付けて保存」をクリック。
    ・任意のフォルダを指定、「ファイルの種類(テキスト)」を選択、ファイル名は例えば「123.txt」として保存する。
    (結果的に、複数のメールの内容が並んだ1つのテキストファイルが作成されます。)

  19. Windows7(32bit)Outlook 2016をMicrosoft Exchangeで使用しています。
    以前、Outlook 2013を使用していたときに、アドレス帳に登録してある名前を連絡先に関連付ける下記のマクロを使って、差出人の名前を表示していました。
    ところが、同じマクロをOutlook 2016で使うとエラーが出てしまい、どこをどう修正して良いか分かりません。
    どなたか、分かる方はいらっしゃいませんか?

    Sub 関連付け()

    Set myNamespace = Application.GetNamespace(“MAPI”)
    Set myCfolder = myNamespace.GetDefaultFolder(olFolderContacts)
    Set myMItems = Application.ActiveExplorer.Selection

    For Each myMitem In myMItems
    With myMitem
    If .Class = olMail Then
    myAddress = .SenderEmailAddress
    For Each myCitem In myCfolder.Items
    Select Case myAddress
    Case _
    myCitem.Email1Address, _
    myCitem.Email2Address, _
    myCitem.Email3Address
    .Links.Add myCitem
    .Save
    End Select
    Next myCitem
    End If
    End With
    Next myMitem

    End Sub

  20. Windows8.1 (64bit) Outlook2013 (64bit)を使用しています.
    Subjectの先頭に”Re:”以外の文字が入ると,スレッドが切れてしまうことを避けるため,他のサンプルを参考にさせていただき,下記の置換をしました.
    Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    Dim objItem ‘As MailItem
    Dim msgItem As MailItem
    Set objItem = Session.GetItemFromID(EntryIDCollection)
    Set msgItem = objItem
    If msgItem.Subject Like “回:Re:*” Then
    msgItem.Subject = Replace(msgItem.Subject, “回:Re:”, “Re:”, 1, 1, vbBinaryCompare)
    End If
    msgItem.Save
    End Sub
    ところが,プレビューではRe:となるのですが,スレッドは回:Re:のままでスレッドは切れました.
    スレッド表示にはheaderの中のMIME encodeされた部分を参照しているのかもしれませんが,マクロで対策する方法はありませんでしょうか?
    よろしくお願いいたします.

  21. いつもこちらのVBAを見て勉強をさせていただいております。Outlookの予定表からCSVをエクスポートをするというマクロを基にファイルを作成しているのですが、一点どうしても回避できないエラーが発生してしまい、ご相談させていただきます。

    予定表の件名のところになるのですが ”✳会議”など 通常の記号ではないものが入力されたときに
    実行時エラー=’5’ プロシージャの呼び出し、または引数が不正です。というメッセージが表示され
    止まってしまいます。
    中味を確認すると objAppt.Subject = ”?会議”となっており StrLineで”?”を置き換えても
    全く エラーが回避できない状態になっています。

    XX = Replace(strLine, “?”, ” “)

    stmCSVFile.WriteLine  XX  ← ここで デバック。

    大変お手数ですが 回避方法を教えていただけますでしょうか。よろしくお願いいたします。

  22. Excelファイルで集計表を作成し、マクロや数式を省き値に変換したものを別シートに移し、これをコピーして新規ブックを「特定のフォルダ」に保存。

    更に同じファイル上でマクロを実行、メール作成画面起動、定型文入力後、上記で保存したファイルを添付するよう「ファイルを開くダイアログ」を表示させたいのですが、プログラムで指定するフォルダが開きません。

    集計表の種類により保存するフォルダが変わる為、それぞれフォルダを別個に指定したプログラムで運用していますが、直近で添付したファイルのフォルダが開いてしまいます。

    該当のフォルダが存在しないとエラーになるので、あと一歩で何とか出来そうな気がするのですがうまくいきません。

    指定通りのフォルダが開くように修正できればありがたいです。
    宜しくお願いします。

    使用環境・・・
    OS:Windows7及びWindows10
    アプリケーション:Office2010

    VBAファイルの保存先:Cドライブ
    帳票ファイルの保存先:Dドライブ\フォルダ

    Sub メール作成()

    ‘ 添付ファイルをメールで送信
    ‘ Outlook専用

    Dim oApp As Object
    Dim objMAIL As Object
    Dim strMOJI As String
    Dim strSign As String

    On Error Resume Next
    Set oApp = GetObject(, “Outlook.Application”)
    On Error GoTo 0
    If oApp Is Nothing Then
    Set oApp = CreateObject(“Outlook.Application”)
    oApp.GetNamespace(“MAPI”).GetDefaultFolder(6).Display
    End If

    Set objMAIL = oApp.CreateItem(0)

    ‘本文の作成
    strMOJI = “ABC商事株式会社” _
    & vbCrLf & ” ” _
    & vbCrLf & “総務課 ○○様” _
    & vbCrLf & “写し:㈱COPO ○○様 ” _
    & vbCrLf & ” ” _
    & vbCrLf & ” ” _
    & vbCrLf & “いつもお世話になっております。” _
    & vbCrLf & ” ” _
    & vbCrLf & “標記の件、ご依頼の備品調査表、送付させていただきます。” _
    & vbCrLf & ” ” _
    & vbCrLf & “以上、宜しくお願い致します。” _
    & vbCrLf & ” ” _
    ‘署名作成
    strSign = “* ・ * ・ * ・ * ・ * ・ * ・ * ・ * ・ * ・ * ・ *” _
    & vbCrLf & “ 株式会社 COPO” _
    & vbCrLf & “ 山田 タロウ (内線111)” _
    & vbCrLf & “ E-mail yamada-taro@ac.copo-net.jp” _
    & vbCrLf & “* ・ * ・ * ・ * ・ * ・ * ・ * ・ * ・ * ・ * ・ *” _
    & vbCrLf & ” ”

    objMAIL.To = “abc.syoji@ab.abc.com”
    objMAIL.CC = “oo.kaco@ac.copo-net.jp”
    ‘objMAIL.BCC =
    objMAIL.Subject = “備品調査票送付の件”
    objMAIL.Body = strMOJI & vbCrLf & strSign
    objMAIL.Display

    Set TestObj = objMAIL.GetInspector.WordEditor

    Set objMAIL = Nothing
    Set oApp = Nothing

    ChDrive “D”     ’ここと・・・
    ChDir “D:\調査表”  ’ここです

    ‘ファイル添付
    DoEvents
    ‘「ファイルを開く」ダイアログを開きます
    With CreateObject(“WScript.Shell”)
    .SendKeys “%NAF”, True ‘添付ファイルの参照
    End With
    DoEvents
    End Sub

    • お世話になっています。
      添付ファイルの件(フォルダ指定ができない)、自己解決しました。

      【Outlook でフォルダ選択のダイアログを表示するマクロ】の解説で「Outlook 自体には Excel や Word のようにファイルの保存ダイアログを表示する機能はありません。」・・・という事でしたので、
      ファイルを開くダイアログ表示は、いささか無理があるものとあきらめました。

      そこで、パス毎直に指定したファイル名を「変数」に格納して対応させるように変更しました。

      帳票作成後のコピーの保存で自動的に付けられるファイル名を、作業シート上のセルに書出、これを変数に格納して対応させます。

      帳票作成からメールの送信まで、すべてマクロで実行でき、ファイルを開くダイアログを表示してファイルを選択させるより、スムーズに正確な作業が出来ることとなりました。

      以上報、告まで。
      また何かありましたら宜しくお願いします。

      ‘帳票作成作業のVBAに下記を追加
      Cells(24, 10).SELECT
      ActiveCell.FormulaR1C1 = 自動保存のファイル名の変数

      ‘追加した構文・・・
        Dim bookName As String

      bookName = Cells(24, 10) ’ファイル名が入力されたセルの値を変数に格納

      objMAIL.display’のあとに・・・
      objMAIL.Attachments.Add bookName ’変数に格納されたファイルを添付

  23. はじめまして。こちらのサイトでいつも
    Outlookのマクロ勉強させていただいています。

    受信トレイを未読メールのみにしたいのですが
    メールを開封済みにした際
    自動で別フォルダへ移動させることは
    出来るでしょうか。

    仕事でまだ処理していないメールを未読にしているのですが
    開封済みメールに埋もれてしまい処理漏れしてしまいます。
    手動で1件ずつ別フォルダへ移動させるのは
    大変なのでどうにか自動化できないかと考えています。

    使用環境は
    Windows7 + Outlook2010 です。

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

    • はじめまして

      こちらのページは大変参考になり、私も勉強させていただいています。
      「未読メール」だけをまとめたいだけでしたら「Outlook」の機能で可能です。
      ※別フォルダーに移動するわけではありません

      複数のフォルダーにわたるすべての「未読メール」を「未読フォルダー」にまとめて表示することが可能です。
      「未読フォルダー」は下記の手順で作成します。

      1.検索フォルダーを右クリックし、[新しい検索フォルダー] をクリックします。

      2.新しい検索フォルダーダイアログから、[メールの読み取り] セクションで [未読のメール] を選択し、[OK] をクリックします。

      3.作成された「未読メール」フォルダをお気に入りにドラッグします(ショートカットが作成されます)。
      ※あえて、お気に入りに表示しなくてもいいですが便利かと思います

      参考ページ
      Outlook2010:未読のメールフォルダを作成するには
      http://outlook-navi.com/qa/ol97.htm

      • halyakko さん、こんばんは。

        なるほど!
        検索フォルダを使うと
        未読メールだけまとめられるのですね。

        お気に入りに表示させて
        さっそく使います。

        ありがとうございました。

  24. 初めまして。現在特殊な環境でexchange2010にmapiで接続する際、接続できなくて困っております。
    環境は、ドメインa にexchange、adのユーザーがいるのですが、
    ドメインbに参加している仮想マシンに、ドメインaのユーザでログインし、outlookで受信しようとしており、NGとなります。

    なお、ドメインa bは双方の信頼関係を結んでおります。

    そのため、owaでは、パスワードの入力も必要なく正常に閲覧できております。

    exchange側に、何か追加設定が必要なのでしょうか?
    それともクライアント側に何か設定した方がいいのかわからない状態です。
    確認した方がいいこと等ありましたらお教えいただけないでしょうか。

    よろしくお願いします。

  25. こんばんは。
    Outlook 2010で以下のようなことができないか考えています。
    ・連絡先に登録されたメールアドレスをキーワードに、Outlook アドレス帳に設定したLDAPサーバーへ問い合わせて情報を取得し、連絡先を最新化するマクロ
    社内で所属が変わった場合を想定しています。
    よろしくお願いします。

  26. はじめまして。
    いつもサイトを拝見させていただき、大変お世話になっております。
     
    Outlook2013で連絡先の閲覧ウインドウで、名前の下にある4つのアイコンの中から一番右のメールのアイコンからメールを作成しようとすると、宛先にはメールアドレスが表示されます。この時にメールアドレスでなく、連絡先に登録してある表示名を宛先に表示する設定とかあるのでしょうか。新しい電子メールから作成した時と、送信済みアイテムの宛先が異なる名前で残ってしまうのが困っています。
     
    宜しくお願い致します。

  27. 本文や件名に期限が記載されているメールを期限の●日前に自動で自身や指定のMLにリマインドするマクロって作れますか?

  28.  Outlook新しい予定(無題-予定)を開きます。その後、UserFormに配置されたListBoxから、文字列を選択し、この文字列を新しい予定の[場所]のコンボボックスに入力したいと考えています。
    文字列をstrTextとして
     Active予定Form.combo場所.text = strText
    とできればよいとは思うのですが、「Active予定Form.combo場所.text 」の正しい表現が
    いろいろ調べたのですがわかりませんでした。
     どのようにしたら場所のコンボボックスにマクロから入力できるようになるでしょうか?
     お知恵をお貸しください。

    • 自己レスです
      「アイテムに対してマクロを実行する際の記述方法」という記事がありました
      解決しました
      板汚しすみません

  29. 勝手ながらいつもお世話になっております。

    メッセージ送信の際、ハンドで宛先を(アドレス帳から選択)入力した時は、「連絡先の表示名(漢字表記)」で表記されますが、マクロで宛先・CCをあらかじめ設定していると(自動入力)、宛先・CCがメールアドレスの表記になってしまいます。

    自動入力で間違いは起こりえない筈ですが、送信ボタンをクリックする前に、ざっとでも宛先を確認したいです。
    ※仕事での使用なので、移動等で担当者が変わる場合もありますので・・・。

    しかし、メールアドレス表記では確認作業が若干手間であり、いまひとつでピンときません。
    マクロでの実行(入力)でも「連絡先(アドレス帳)の表示名(漢字表記)」になるようマクロを組みたいのですが方法がわかりません。
    可能であれば例文等、ご教示御願い致します。

    以下、現状です(3月3日に投稿したときのマクロです)。

    objMAIL.To = “abc.syoji@ab.abc.com”
    objMAIL.CC = “oo.kaco@ac.copo-net.jp”

    使用環境:Windows10、Outlook2010

  30. お世話になります。
    Outlook2010環境において、
    マクロで仕訳ルールのチェックのオンオフを操作したいと考えております。
    このルールがオフだったら有効とかオンだったらオフとかをOutlook起動時の操作やメール送受信時の操作を考えています。
    ご教示お願い致します。

  31. はじめまして
    WebにOutlookのVBAの情報が少ないため、いつも活用させていただいております。

    まだまだvbaに関して未熟のため教えて頂きたいのですが、現在”受信メッセージの差出人を連絡先の表示名に置き換え”を使用さして頂いてるのですが、outlook起動時の同期メッセージ?(未起動時の受信メール)は表示名が変更されないのですが、変更することは可能でしょうか?

    それと上記のvbaと同時に”受信メールの宛先やCcをアドレス帳の名前に置き換えるマクロ”を使用したいと考えているのですが可能でしょうか?

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

  32. はじめまして、いつもこのサイトの内容に助けられております。
    要望なのですが、メール返信時に特定の連絡先フォルダーを参照して、同じメールアドレスの連絡先の、電子メール2のアドレスに置き換えて返信ウィンドウを開くマクロを作成することは可能でしょうか。
    よろしくお願いします。

  33. はじめまして。
    いつもこのサイトにはお世話になっております。

    ActiveExplorer.CurrentFolder.Items(cntItem)
    を、選択された状態にしたいのですが、下記を調べてもメソッドが分かりませんでした。

    Items オブジェクト
    https://msdn.microsoft.com/ja-jp/library/office/ff863652.aspx

    Explorer オブジェクト
    https://msdn.microsoft.com/ja-jp/library/office/ff860356.aspx

    #.select とか、.Activateとかかと思いきや、思わぬ苦戦を強いられております。

    ご教示頂けますと幸いです。

    • 失礼します。補足です。
      「フォルダを開いたときに最新のメールを選択するマクロ」にて、
      ActiveExplorer.AddToSelection ActiveExplorer.CurrentFolder.Items(cntItem)
      を用いて選択状態にすることが出来ました。

      ただ、やりたかったこととしては10000件を超えるメールが格納されたメールボックスから、2年前の日付のメールをまとめてMailDropZoneというWebアプリ上にドラッグ&ドロップするという作業がありまして、その際まとめて選択したアイテムをドラッグしやすくしたかったので、「選択したい」=「選択されたメールまでメールボックスをスクロールしたい」でした。

      ご教示頂けますと幸いです。

  34. いつも大変お世話になります。

    さて、このサイトを参考に、メールチェッカーを作成し使っております。

    Private Sub Application_ItemSend

    でメール送付時に、作動するようにしております。

    ところが最近、部署を移動したら、スケジュールの承諾/拒否のような感じでスケジュールを

    聞いてくるメールにいくつか出くわし、「承諾」を選択して、送信のような感じで返信するのですが、

    その際、かならず、上記のPrivate Sub が作動し、エラーになります。

    スケジュール確認の場合は、作動させないように、修正コードを入れたいのですが、

    コーディングを教えていただけますと幸甚でございます。

    恐れ入りますが、宜しくお願い致します。

    ぺたぽん 拝

  35. いつもお世話になっております。

    OUTLOOK2013とWEBのOFFICE365をあわせて使っているのですが、OUTLOOK2013上で【条件付書式】にてカレンダーに色づけをした場合、WEBのOFFICE365には反映されないものなのでしょうか?
    分類項目で設定しているものはWEB上でも確認できるものの、条件付書式のものの場合反映されないので、そういうものなのか、何か設定方法があるのかご教示頂けますと幸いです。

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

  36. いつも大変お世話になっております。

    可能であればマクロ作成をご検討頂きたいのです。
    OS:Windows 7 Professional(64bit)
    Outlook2013

    【ビューの定義をエクスポート(インポート)するマクロ】
    【印刷スタイルの定義をエクスポート(インポート)するマクロ】

    ビューの定義や印刷スタイルの定義を社内で統一して利用したい。

    私が現在設定しているビューを
    PC内(Outlook2013)でコピーする事は出来ますが
    別PC(Outlook2013)へビューや印刷スタイルの定義を
    エクスポート(インポート)する事は出来ないでしょうか?
    標準の機能として、これらの定義のエクスポート(インポート)はないようなので
    マクロで作成可能であればお願いしたい次第です。

    ビューについては
    【現在のビューの設定をサブフォルダにコピーするマクロ】や
    2014年2月22日 コメントでの要望を受けての
    全てのストアのフォルダー階層にアクセス可能な
    【現在のビューをすべてのフォルダーに適用するマクロ】
    上記の2つのマクロをどうにかすれば可能なのでしょうか?

    ご検討の程、よろしくお願い申し上げます。

  37. BOLANです。
    OUTLOOK2010 Windows7で
    連絡先フォルダーのメールアドレスを取得したいのですが
    該当するマクロが無いようですが、ご教示お願いします。

  38. いつも参考にさせて戴いております。今回初めて質問致します。
    HTML形式で図が含まれているメールに対して
    mailItem の reply メソッドを行うと図が保持されますが、本文に何かを追記しようとすると図が失われます。
    保持する方法はありますでしょうか。
    (Outlook 2010 or 2013, VBA はExcel から起動)
    ex) objReply.body = “test” + objReply.body –> 図がなくなる

  39. お世話になります。今回初めてコメントをさせていただきます。Outlook2010、Outlook2013の環境で、決まった差出人のメールを、受信トレイ配下に階層深くチェックした後に、移動させたいのですが、その時にフォルダが存在しない時は、作成してメールを移動させたいのですが、1回目は階層深くフォルダを作成し、移動することはできるようになったのですが、翌日、同じマクロを実行すると、最階層の下にフォルダをまた、階層深く作成してしまって、どうにかして、最階層だけ作成して、メールを移動するようにしたいのですが、よくわからないのです。ご教授いただけると助かります。
    受信トレイから→チェック済→年度→月→日に移動させたいのです。翌日は新しい日のフォルダが月の下に作成されて、メールが移動される。月が変わったら、新しく月と日のフォルダを作成して、日のフォルダにメールが移動される。年度が変わったら、年度、月、日のフォルダが作成され、新しい日のフォルダにメールが移動されるようにしたいのです。マクロVBAを作成した経験がなく、非常に困っております。どなたかご教授いただけると助かります。よろしくお願いいたします。

  40. いつも拝見しています。初めてコメント致します。環境はOutlook2016です。
    リボンのユーザー設定にて新しいタブを作成しました。
    メール画面、予定表画面、タスク画面用にそれぞれ作成したタブを、画面切り替え毎に併せて表示/非表示を切り替えたいのですが、マクロで可能でしょうか?
    Outlookのリボン切替に関するVBA情報が見つけられず苦労しています。
    ご教授いただければ幸いです。

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中