Microsoft Office Home & Business 2019 使用PC Dell XPS8940
教えてください。先日、ネットで商品を購入した際、業者から自動配信と思われる確認メールが届きました。たぶん送信専用メールだったと思うのですが、返信をしてしまいました。返信メールは送信済みアイテムに保存されたのですが、タイトルは正常だったのですが、中身は消えており、「釽Ʌ」という記号のみがありました。そこで他の業者の明らかな送信専用メールに試しに返信すると、やはり同様の状況でした。普通のメールの返信は全く正常です。送信専用メールに返信すると、中身が消える、これが正常なのでしょうか。教えてください。今回の場合、配信エラーのメールは届きませんでした。
送信専用アドレスかどうかはプログラムで自動的に判断できるようなものではないため、送信専用アドレスに返信したからといって何か挙動が変わるというようなことはありません。
おそらく元のメールの HTML データに Outlook と互換性のない要素が存在し、それによって返信メールの HTML 本文に問題が生じているのではないかと考えられます。
残念ながら仕分けルールのエラーが発生したときに発生するようなイベントがないため、自動的にマクロを再度有効かすることはできません。
Outlook を動作させ続けているのであれば、仕分けルールでマクロを実行するのではなくNewMailExイベントを使用して受信時に転送するようなマクロを作成してはどうでしょうか?
Outlook vbaからEXCEL vba(EXCELファイル)のクラスをインスタンス生成してOutlook vba側で使用する事は可能でしょうか?可能でしたら方法をご教示頂きたく、よろしくお願い致します。
また、インスタンス生成後、EXCELファイルを閉じても生成された実態のオブジェクトは使用する事が出来ますでしょうか?
現状はアラーム自体はすべての端末で動作し、アラーム契機で処理をマクロ(Private Sub Application_Reminder)で動作させる場合、AかBで先勝ちの処理になり他方のマクロ処理が失敗します。
共通的なマクロ記述は不可で、処理させたくない端末のマクロを殺すしか手がないのでしょうか。
或いは、マクロの記述・タスクの登録方法で対応する方法がるでしょうか。
申し訳ありませんが、このような現象が発生する原因がちょっと思いつきません。
送信後が
SQL> ALTER INDEX W$_A_OBJ_PK REBUILD;
SQL> ALTER INDEX W$_A_OBJ_IDX_01 REBUILD; SQL> ALTER INDEX W$_A_OBJ_IDX_02
REBUILD;
Sub SaveAttachmentFiles()
Dim myNamespace As Namespace
Dim myInbox As Object
Dim mySubfolder As Object
Dim strPath As String
Dim strFile As String
Dim objItem As Object
Dim i As Long
Set myNamespace = GetNamespace(“MAPI”) ‘Messeging Application Programming Interface
Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)
Set mySubfolder = myInbox.Folders.Item(“運用報告書”).Folders.Item(“★ZIP★”)
ご返信いただきありがとうございます。
ご指摘の通り、正確には開封確認ではなく、自動返信の動作になると思います。
自動仕分けによるテンプレートでの自動返信については、すでに準備できているのですが、受信したメール(返信希望等特定の文字が件名に含まれているもののみ)にメッセージ(受信しました等)を入れて返信できることが一番理想的な動作と考えております。
Outlook VBAは超超初心者なので、とりあえず類似のマクロをいろいろと組み合わせて試行中ですが、思うように動作しません。改修いただけるようであれば、ご教示お願いいたします。
‘ 特定の文字列を件名や本文に含むメールを受信した際に自動的に返信するマクロ
Option Explicit
‘Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Set objItem = Session.GetItemFromID(EntryIDCollection)
If objItem.MessageClass = “IPM.Note” Then
Dim msgItem As MailItem
Set msgItem = objItem
CreateAppointment msgItem
End If
End Sub
‘
Private Sub CreateAppointment(msgItem As MailItem)
Const SEARCH_WORD = “返信希望”
Dim strText As String
Dim objRecip As Recipient
Dim objNewRecip As Recipient
‘
strText = msgItem.Subject & vbLf & msgItem.Body
If InStr(strText, SEARCH_WORD) > 0 Then
Dim objReply As MailItem
Set objReply = objItem.Reply
objReply.Body = “以下のメールを受信しました。” & vbCrLf & _
“送信日時:” & objMail.SentOn & vbCrLf & “件名:” & objMail.Subject
objReply.Send
‘ カスタム プロパティに返信済みと設定
userProp.Value = “Done”
objMail.Save
End If
End Sub
添付ファイルも含んだ形で投稿するということになると、マクロなどでは困難と思います。
どうしてもということであれば、いっそチャネルにメールを転送してしまってはどうでしょうか?
Teams のチャネルを右クリックし、[メール アドレスを取得] をクリックすると、そのチャネルにメールを送信するためのアドレスが表示され、[コピー] でクリップボードにコピーできます。
このアドレスにメールを転送すれば、添付ファイルも含んだ形で元のメールが Teams のチャネルに投稿されます。
検索しましたが分からず、失礼致します。
Outlook VBA で、検索ボックスに指定の検索語句を自動入力 -> 自動クリックはできるでしょうか。
Access の顧客名簿などから連携して特定の相手とのやりとりを把握したいのですが、
Excel に単純に抜き出すと宛先、あいさつ、署名や引用(の履歴)がだらだらと出るので、
Outlook 上で見たいと考えています。
お助けいただけるとありがたいです、よろしくお願い致します。
‘ Event handler for outlook
Dim WithEvents OutlookApp As Outlook.Application
Dim outlookSearch As Outlook.Search
Dim outlookResults As Outlook.Results
Dim searchComplete As Boolean
‘ Handler for Advanced search complete
Public Sub outlookApp_AdvancedSearchComplete(ByVal SearchObject As Search)
‘MsgBox “The AdvancedSearchComplete Event fired.”
searchComplete = True
End Sub
Sub SearchAndReply(emailSubject As String, searchFolderName As String, searchSubFolders As Boolean)
‘ Declare objects variables
Dim customMailItem As Outlook.MailItem
Dim searchString As String
Dim resultItem As Integer
‘ Variable defined at the class level
Set OutlookApp = New Outlook.Application
‘ Variable defined at the class level (modified by outlookApp_AdvancedSearchComplete when search is completed)
searchComplete = False
‘ You can look up on the internet for urn:schemas strings to make custom searches
searchString = “urn:schemas:httpmail:subject like ‘” & emailSubject & “‘”
‘ Use: subject like ‘%” & emailSubject & “%'” if you want to include words see %
‘ Wait until search is complete based on outlookApp_AdvancedSearchComplete event
While searchComplete = False
DoEvents
Wend
‘ Get the results
Set outlookResults = outlookSearch.Results
If outlookResults.Count = 0 Then Exit Sub
‘ Sort descending so you get the latest
outlookResults.Sort “[SentOn]”, True
‘ Reply only to the latest one
resultItem = 1
‘ Some properties you can check from the email item for debugging purposes
On Error Resume Next
Debug.Print outlookResults.Item(resultItem).SentOn, outlookResults.Item(resultItem).ReceivedTime, outlookResults.Item(resultItem).SenderName, outlookResults.Item(resultItem).Subject
On Error GoTo 0
Set customMailItem = outlookResults.Item(resultItem).ReplyAll
‘ At least one reply setting is required in order to replyall to fire
customMailItem.Body = “forward mail ” & customMailItem.Body
初めまして。OutlookVBA初心者です。
業務において、メールで受信した添付ファイルを社内ネットワーク上のフォルダへ保存しているのですが、
その際、受信日時をファイル名末尾に記載する決まりとなっております。
添付ファイルをフォルダにドラッグアンドドロップして、名前の変更→手入力で受信日時記載……
という動作を何十通も行うのは非効率的なので、どうにかして自動化したいと思っているのですが、
こちらのサイトを含め「一括保存」や「一括保存の作業を行った日の日付を新規フォルダ名として保存」
までしか辿り着けませんでした。
何分初心者のため、断片的に集めた付け焼き刃の知識では自分の求める機能を追記することができず、、
不躾なお願いで恐縮ですが、下記のような動作を行わせるマクロをご教示いただくことは可能でしょうか?
(環境:Win10/Outlook2016)
・Outlookの特定のフォルダ内に入っているメールから添付ファイルだけを切り出して指定フォルダに保存
・その際ファイル名末尾に【メールの受信日時】を「元のファイル名_yymmdd_hhmm」のような形で追加
※対象となるメールを受信日時で区切って指定できるとなお嬉しいですが、マストではありません
もし叶うなら、お力添えいただけますと大変幸いです。
何卒よろしくお願いいたします。
初めて質問させていただきます。簡単なVBAをやっと自力でコーディングできるようになったほぼほぼ初心者です。
社内の役員のOutlookに、秘書へのメール参照権限を設定したり解除したりするのを自動化したいと考えています。
直接やれば数STEPの作業ではありますが、多忙な役員にリモートで毎度説明して設定・解除してもらうのが面倒なので、Excelマクロをメールで送って「これをクリックしてください」だけで済ませたいというイメージです(メール発信の自動化はできていますが、肝心のメールの参照権限の設定方法がわかりません)。
検索の仕方が悪いのかも知れませんが、ネットで検索してもMicrosoft Office XX.X Object Libraryの参照設定の説明ばかり出てきます。
Outlookの各メニューやボタンの選択の仕方やマクロ上の名称・調べ方等のヒントだけでもいいので、ご教示頂ければ助かります。何卒よろしくお願いいたします。
(環境:Win10/Outlook2016)
残念ながら、フォルダーのアクセス権をマクロで設定することはできません。
役員の方にアクセス権設定を行っていただくことが困難なのであれば、サーバー側で Add-MailboxFolderPermission コマンドレットによりフォルダーのアクセス権の設定を行うことも可能です。
例えば、[email protected] という役員の受信トレイに [email protected] への参照者アクセス権を与える場合は以下のように実行します。
Add-MailboxFolderPermission -Identity [email protected]:\受信トレイ -User [email protected] -AccessRights Reviewer
outlooklab様
返信ありがとうございます。やはり、フォルダアクセス権設定のマクロは無理なんですね。
サーバー側での設定なら参照は可能ということですか。
こういうことを書いてある本とかサイトって、あるのかもしれませんが、見つからないものですね。
また、よろしくお願いします。取り急ぎ御礼まで。
こんにちは。お忙しい中恐縮ですが、よろしければアクセスVBAについて下記ご教示いただきたく、よろしくお願い致します。
行いたい内容は、「選択クエリの実行結果を、表としてメール本文に挿入する」というものです。
現在フォームを作成しており、ボタンを押せばメールが作成され、その本文にクエリの結果が記載されている、という状態を目指しているのですが、初心者がネット検索でやるには限界があり、行き詰っています。
「メール作成し、実行結果をエクセル等で添付」や、「単純にデータを本文挿入(=表形式ではないので幅が揃わない)」などのコードはあったのですが、目指す物にはならず…。
また、このクエリは毎月更新されるので、行数が変動するのもネックです(列数は変わりません)。
環境はwindows10/outlook2016です。
お手数おかけしますが、ご教示いただけますと幸いです。よろしくお願い致します。
以下のURLでマクロを公開しました。
https://outlooklab.wordpress.com/2021/02/27/access-%e3%81%a7-recordset-%e3%81%ae%e3%83%87%e3%83%bc%e3%82%bf%e3%82%92%e3%83%a1%e3%83%bc%e3%83%ab%e6%9c%ac%e6%96%87%e3%81%ab%e8%a1%a8%e3%81%a8%e3%81%97%e3%81%a6%e5%9f%8b%e3%82%81%e8%be%bc%e3%82%80/
初めまして。(Outlook&vba初心者です)
最近Outlookが会社に導入されたのですが、社内統一のアドレス帳(連絡先)を使うと
差出人名が「アルファベット表記」になっています。
以下のサイトで
「連絡先をマクロで活用する 2. 受信したメールの差出人を連絡先から検索する」
https://outlooklab.wordpress.com/2007/03/24/%e9%80%a3%e7%b5%a1%e5%85%88%e3%82%92%e3%83%9e%e3%82%af%e3%83%ad%e3%81%a7%e6%b4%bb%e7%94%a8%e3%81%99%e3%82%8b/
目的と近いことができることが分かったのですが、あと一押し、うまくいきません。
(vba初心者であることが主な理由だと思います)
職場の設定では、「表示名」がアルファベット表記で、「フリガナ(表示名)」が漢字表記です。
「表示名」ではなく「フリガナ(表示名)」を取得する方法を教えていただけないでしょうか?
ひょっとしたら、社内のアドレス帳を定義することから間違っているのかもしれませんが・・・。
お知恵を拝借できましたら幸いです。よろしくお願い申し上げます。
以下のURLでマクロを公開しました。
https://outlooklab.wordpress.com/2021/02/20/%e5%b7%ae%e5%87%ba%e4%ba%ba%e3%81%ae%e5%90%8d%e5%89%8d%e3%82%92%e3%82%a2%e3%83%89%e3%83%ac%e3%82%b9%e5%b8%b3%e3%81%ae%e3%83%95%e3%83%aa%e3%82%ac%e3%83%8a%e3%81%ab%e7%bd%ae%e3%81%8d%e6%8f%9b%e3%81%88/
ご対応&公開ありがとうございます。
早速、URL先のマクロを放り込んで試してみたのですが、うまくいきません。
(すべてのマクロを有効にしています& “Hello World”は表示されました)
その他必要な設定や確認すべきことはありますでしょうか?
初心者のため、お手数をおかけしますが、ご教示くだされば幸いです。
何度かPC及びOutlookを再起動させたところ、機能していました!!
考えていたものそのものが実現できました。
お忙しいところ、感謝申し上げます。
これから、貴社サイトを参考にOutlookのVBAを勉強したいと思います。
時間が経ってからのご連絡になり失礼します。
「フリガナ(表示名)」ですが、切り替わるときと切り替わらないときがあります。
同じ人が同じ環境で同じアドレスから送っている、数分違いのメールであっても、表示がころころ変わります。常に「フリガナ(表示名)」とはならないでしょうか?
一部でも漢字表記で届くようになったので、受け取った瞬間のストレスは減ったのですが、せっかくの機能なのに、差出人でのソートなどができず、残念です。
https://outlooklab.wordpress.com/2007/03/24/%E9%80%A3%E7%B5%A1%E5%85%88%E3%82%92%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%A7%E6%B4%BB%E7%94%A8%E3%81%99%E3%82%8B/
上記のマクロを受信トレイだけでなく、サブフォルダーにも適用させたいのですが、どうすればできますでしょうか。マクロ自体がよくわかっておらず適用させることで精いっぱいです。
お手数をおかけいたしますが、教えていただけますと幸いです。
以下のURLでマクロを公開しました。
Microsoft Office Home & Business 2019 使用PC Dell XPS8940
教えてください。先日、ネットで商品を購入した際、業者から自動配信と思われる確認メールが届きました。たぶん送信専用メールだったと思うのですが、返信をしてしまいました。返信メールは送信済みアイテムに保存されたのですが、タイトルは正常だったのですが、中身は消えており、「釽Ʌ」という記号のみがありました。そこで他の業者の明らかな送信専用メールに試しに返信すると、やはり同様の状況でした。普通のメールの返信は全く正常です。送信専用メールに返信すると、中身が消える、これが正常なのでしょうか。教えてください。今回の場合、配信エラーのメールは届きませんでした。
送信専用アドレスかどうかはプログラムで自動的に判断できるようなものではないため、送信専用アドレスに返信したからといって何か挙動が変わるというようなことはありません。
おそらく元のメールの HTML データに Outlook と互換性のない要素が存在し、それによって返信メールの HTML 本文に問題が生じているのではないかと考えられます。
仕分けルールでスクリプトを実行し、メールの自動転送を行っているのですが、不定期に「エラーを起こしたルール」ウィンドウが起動し、転送が停止してしまいます。
エラーには「操作は失敗しました。」とだけ表示され、原因が不明です。
Outlook2013を使用していますが、仕分けルールの有効化のチェックも外れてしまうため、都度手動でチェックを入れなおす必要があります。
夜間も動作させているので、朝確認すると転送されていないメールが溜まっており、手動で転送しなければならないため、どうにか解消できないか悩んでおります。
スクリプトには「On Error GoTo xxxx」でエラー処理も入れておりますが、キャッチできないようで動作しておりません。
仕分けのエラーが出たときに、実行できるようなマクロはございますでしょうか。
またチェックの外れた仕分けルールに、自動でチェックを入れなおすマクロもございましたらご教授いただきたく。
こちらの記事のフィードバック欄にある事象と同じです。
https://outlooklab.wordpress.com/2009/09/26/%E8%87%AA%E5%8B%95%E4%BB%95%E5%88%86%E3%81%91%E3%81%AE%E3%83%AB%E3%83%BC%E3%83%AB%E3%81%A7%E8%BB%A2%E9%80%81%E3%81%99%E3%82%8B%E3%83%9E%E3%82%AF%E3%83%AD/
残念ながら仕分けルールのエラーが発生したときに発生するようなイベントがないため、自動的にマクロを再度有効かすることはできません。
Outlook を動作させ続けているのであれば、仕分けルールでマクロを実行するのではなくNewMailExイベントを使用して受信時に転送するようなマクロを作成してはどうでしょうか?
こんにちは、VBA初心者でOutlook2016を使っています。
受信フォルダにある、
特定の件名の未読メールを
本文の必要ヵ所を取り出して、
印刷したいです。
どのようなコードになりますでしょうか。
大変お手数ですがご教授お願い致します。
「本文の必要箇所」というのはどのように識別すればよいでしょうか?
例えば特定のキーワードから始まるとか、本文の何行目かというような目印がないと、マクロで必要箇所を特定することはできません。
マクロで条件指定をするには、小学生でもわかるような明確な条件を示す必要があります。
Outlook vbaからEXCEL vba(EXCELファイル)のクラスをインスタンス生成してOutlook vba側で使用する事は可能でしょうか?可能でしたら方法をご教示頂きたく、よろしくお願い致します。
また、インスタンス生成後、EXCELファイルを閉じても生成された実態のオブジェクトは使用する事が出来ますでしょうか?
OutlookのVBAでもExcelファイルのインスタンス(Workbookオブジェクト)を生成することは可能です。
新規にファイルを作ってwbExcelという変数にインスタンスを格納する場合は以下のようにします。
Set appExcel = CreateObject(“Excel.Application”)
Set wbExcel = appExcel.Workbooks.Add
また、既存のファイルを開いてインスタンスを生成する場合は以下のようにします。
Set wbExcel = GetObject(“Excel ファイル名”)
ただし、インスタンス生成後、そのExcelファイルを閉じてしまうと、オブジェクトは無効となるようです。
初めまして。予定表のタイムゾーン設定で戸惑っています。誤って設定した個人用予定表のタイムゾーンを、一括して書き換える作業はVBAで可能でしょうか。以下URLを見ると、予定表のビュー設定の「ユーザー定義フィールド(User-defined fields)で TZ( を設定すると、Timezone が表示されるように読めるのですが、Outlook 2016 環境で、この設定(名前:TZ、種類:テキスト、書式:テキスト)をしても、各予定に設定しされたタイムゾーンは表示されず、vbaからも、それを参照、書き換える方法が判らずにおります。
https://www.slipstick.com/developer/code-samples/use-vba-get-appointments-time-zone/
ご教示いただければ幸甚です。
以下のURLでマクロを公開しました。
初めまして。
Outlook 365 VBAで、PreviewPane(閲覧ウィンドウ)にMailItem(メールの本文)を表示したいのですが、やり方が判りません。
やりたいことは、未読メールを閲覧ウィンドウで順に確認したいだけです。メール数が多いので、データファイル容量を減らすため、アカウントの他に、フォルダを作って、分散させています。この為、未読メールを一覧にするために、検索フォルダを使う事ができません。検索フォルダの対象は1つのフォルダだけですので。
未読メールを探すところまではできたのですが、表示方法が判りません。item.displayですと、新たにInspectorが開いてしまうため、読み終わったら一々閉じる必要があり、使い勝手が悪いです。
お忙しいところ申し訳ありませんが、よろしくお願いします。
あれから更に調べ、AddToSelectionで検索すれば良いことが判りました。
こちらのサイトにも、関連するマクロがありました。
これから色々試してみたいと思います。
どうもお騒がせしました。
はじめまして。
2020年4月25日
「複数アカウントがあるプロファイルで新規メールや返信、転送の際に送信アカウントのアドレスを Bcc 受信者として追加するマクロ」を読ませていただきました。
Microsoft 365 Apps for business
バージョン 2102 (ビルド 13801.20266 クイック実行)
outlook超初心者で、マクロについては全く分かっていない者ですが、上記記事を実行し、新規メール作成時に送信アカウントのアドレスを Bcc 受信者として追加することができました。
本当に助かりました。ありがとうございます。
お伺いしたいのが、受信メールを選んで、「返信」「全員に返信」「転送」ボタンを押してメールを作成すると、Bccに送信メールアドレスが入らないのですが、なぜでしょうか。
別に設定が必要なのでしょうか。
マクロが全く分かっていないので、おかしな質問をしているかもしれませんが、お時間ございましたら、ご回答いただけますと幸いです。
どうぞよろしくお願いいたします。
本サイトについていつも参考にさせていただいております。
ありがとうございます。
タスクの利用方法について以下、判りましたらご教示ください。
Outlook2016(o365)を利用しています。
タスクの登録にアラーム日時を設定することで、ToDoのリマインド(および処理)に利用しています。
企業大でExchange Onlineで利用する環境となっており、同一アカウントのメールボックスを複数の端末から並行して利用する場合があり、今回、仮に端末Aと端末Bで同時にWindowsのOutlookアプリを起動、Exchange に接続しているとき、端末Aでのみタスクのアラームを処理させる方法があるでしょうか。
現状はアラーム自体はすべての端末で動作し、アラーム契機で処理をマクロ(Private Sub Application_Reminder)で動作させる場合、AかBで先勝ちの処理になり他方のマクロ処理が失敗します。
共通的なマクロ記述は不可で、処理させたくない端末のマクロを殺すしか手がないのでしょうか。
或いは、マクロの記述・タスクの登録方法で対応する方法がるでしょうか。
特定の端末でのみアラームを表示させるということはできないので、マクロの方で対処する必要があります。
例えば、分類項目に端末の名前を入れておき、マクロの中で分類項目をチェックして動作するかしないかを判断するというような方法になるでしょう。
Outlook2016(o365)を利用しています。
メール本文にSQL文を書いて送ると、内容(改行位置など)が改変されます。
これは、当方の環境のみの問題でしょうか。
原因がわかりましたらご教示いただきたく存じます。
【送信前】
SQL> ALTER INDEX W$_A_OBJ_PK REBUILD;
SQL> ALTER INDEX W$_A_OBJ_IDX_01 REBUILD;
SQL> ALTER INDEX W$_A_OBJ_IDX_02 REBUILD;
【送信後・受信側】
SQL> ALTER INDEX W$_A_OBJ_PK REBUILD;
SQL> ALTER INDEX W$_A_OBJ_IDX_01 REBUILD; ALTER INDEX W$_A_OBJ_IDX_02
SQL> REBUILD;
申し訳ありませんが、このような現象が発生する原因がちょっと思いつきません。
送信後が
SQL> ALTER INDEX W$_A_OBJ_PK REBUILD;
SQL> ALTER INDEX W$_A_OBJ_IDX_01 REBUILD; SQL> ALTER INDEX W$_A_OBJ_IDX_02
REBUILD;
というように行が連結されているだけなら余分な改行の削除と考えられるのですが…
VBA初心者ですがよろしくお願い致します。指定したフォルダー内のメール内のURLのファイルを指定した場所に保存したく、『メールに含まれる URL のファイルをマイ ドキュメントに保存するマクロ』を応用出来ればとそのまま走らせてみましたがエラーが返ります。
下記は、指定したフォルダー内のメールに添付されたファイルの保存マクロですが、
”DownloadFileInBodyCore”などを組合せ可能であれば、ご教示頂きたくお願い致します。
Sub SaveAttachmentFiles()
Dim myNamespace As Namespace
Dim myInbox As Object
Dim mySubfolder As Object
Dim strPath As String
Dim strFile As String
Dim objItem As Object
Dim i As Long
Set myNamespace = GetNamespace(“MAPI”) ‘Messeging Application Programming Interface
Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)
Set mySubfolder = myInbox.Folders.Item(“運用報告書”).Folders.Item(“★ZIP★”)
strPath = “C:\Users\atsuko-himaki\Desktop\データ振り分け\ZIP\” ‘添付ファイルを保存したいフォルダ
For Each objItem In mySubfolder.Items
With objItem
For i = 1 To .Attachments.Count
strFile = strPath & .Attachments.Item(i)
.Attachments.Item(i).SaveAsFile strFile
Next i
End With
Next objItem
End Sub
初めまして。当然のご質問失礼いたします。
VBA初心者です。どうしてもわからず困っていることがありご質問させていただきました。
本サイトの下記を参考にメールをExcelへの書き出しを実施したいと考えております。
「メールの内容を Excel ファイルにかき出すマクロ」
しかし、受信者(To)のメールアドレスを取得したく、下記を記載しましたが
表示名が抽出されてしまうことがあり困っています。
メールアドレスをピンポイントで書き出す方法をご教示いただけないでしょうか?
.Cells(r, 1) = objItem.To
知識不足で申し訳ございませんが、ご回答いただけますと幸いです。
どうぞよろしくお願いいたします。
いつも参考にさせていただいております。
開封確認メール返信についてのご相談です。
会社でアルファメールを使用しています。(OS:Windows10 メーラー:Outlook2016)
開封確認メールは送信時に「Envelope-From」(ヘッダー上のFromとは異なる)を空(Null)で送信する仕様(Outlook2016以降?)のようで、アルファメールのSMTPサーバでは、不正利用防止のため「Envelope-From」が空のメール送信は許可されておらず(ただし例外として、宛先アドレス(To)にアルファメールサーバ内に存在する正しいアカウント情報が記載されている場合は送信を許可)、開封確認が返信できずに困っています。
できればこれまでと同等の機能を継続利用したく、「開封確認オプションチェック」の代わりに「特定の文字列”返信希望”等を件名に含むメールを受信した際に”受信を確認しました”等のメッセージを自動的に返信するマクロ」の構文を探しています。
是非ご教授のほどお願いいたします。
メールを受信しただけで返信してしまうとなると、開封確認とは異なる動作になると思うのですがどうでしょうか?
もし、受信しただけで返信でも構わないということなのであれば、自動仕分けで特定の件名を含むメールを受信したらテンプレートで自動返信を行うというルールを作成すればよいと思います。
自動仕分けのルールで不十分ということなのであれば、どの点が不都合でどのような動作となればよいのかお知らせください。
ご返信いただきありがとうございます。
ご指摘の通り、正確には開封確認ではなく、自動返信の動作になると思います。
自動仕分けによるテンプレートでの自動返信については、すでに準備できているのですが、受信したメール(返信希望等特定の文字が件名に含まれているもののみ)にメッセージ(受信しました等)を入れて返信できることが一番理想的な動作と考えております。
Outlook VBAは超超初心者なので、とりあえず類似のマクロをいろいろと組み合わせて試行中ですが、思うように動作しません。改修いただけるようであれば、ご教示お願いいたします。
‘ 特定の文字列を件名や本文に含むメールを受信した際に自動的に返信するマクロ
Option Explicit
‘Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Set objItem = Session.GetItemFromID(EntryIDCollection)
If objItem.MessageClass = “IPM.Note” Then
Dim msgItem As MailItem
Set msgItem = objItem
CreateAppointment msgItem
End If
End Sub
‘
Private Sub CreateAppointment(msgItem As MailItem)
Const SEARCH_WORD = “返信希望”
Dim strText As String
Dim objRecip As Recipient
Dim objNewRecip As Recipient
‘
strText = msgItem.Subject & vbLf & msgItem.Body
If InStr(strText, SEARCH_WORD) > 0 Then
Dim objReply As MailItem
Set objReply = objItem.Reply
objReply.Body = “以下のメールを受信しました。” & vbCrLf & _
“送信日時:” & objMail.SentOn & vbCrLf & “件名:” & objMail.Subject
objReply.Send
‘ カスタム プロパティに返信済みと設定
userProp.Value = “Done”
objMail.Save
End If
End Sub
以下のURLでマクロを公開しました。
https://outlooklab.wordpress.com/2021/06/19/%E7%89%B9%E5%AE%9A%E3%81%AE%E6%96%87%E5%AD%97%E5%88%97%E3%82%92%E4%BB%B6%E5%90%8D%E3%82%84%E6%9C%AC%E6%96%87%E3%81%AB%E5%90%AB%E3%82%80%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%92%E5%8F%97%E4%BF%A1%E3%81%97-2/
お世話になります。
いつも参考にさせて頂いております。
受信メールに対して返信したメールを表示するマクロを公開されていますが、
ヘッダーの「In-Reply-To」以外で表示する方法はありますでしょうか。
Windows10 / Ofiice365、Exchangeの環境で使用しておりますが、
送信先が社外の場合に「In-Reply-To」と「References」が表記されておらず、
「Message-ID」のみのため返信済みでも返信したメールの表示ができない状況です。
(社内間や外部から受信したメールには表記されています。)
また、社内担当者が複数おり自分以外が返信したメールもあるため、
送信済みフォルダからメールを探すこともできません。
対処として受信日時以降で受信メールの件名や本文が含まれていたら、というような
強引な方法しか思いつかず、他に方法があればご教示頂けますと幸いです。
よろしくお願い致します。
以下のURLでマクロを公開しました。
https://outlooklab.wordpress.com/2021/05/29/%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%9F%E3%83%A1%E3%83%BC%E3%83%AB%E3%81%AE%E8%BF%94%E4%BF%A1%E3%82%92%E3%81%99%E3%81%B9%E3%81%A6%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E3%83%9E%E3%82%AF%E3%83%AD/
ご返信ありがとうございます。
内容を拝見しましたところ、1つ下の質問の方への内容でした。
恐縮ですが、代替案などございましたらご教授いただけますと幸いです。
失礼しました。元のコメントの URL を修正しました。
お礼が遅くなり申し訳ございません。
ご返信並びにマクロの作成ありがとうございます。
上記ページを拝見しまして、改修の参考にさせていただきます。
この度はありがとうございました。
OutlookVB初心者です。
会社で、本当はGTDに特化したアプリかWebサービスを使いたいのですが、セキュリティの関係でアプリインストールや外部サービスが使えません。
Outlookのタスク管理で、分類項目に、今日やる事や期限のある事のようにつけて運用はしています。
やりたいことは、Outlook起動時に期限を見て、今日だったら分類項目を今日やる事に更新してくれるようにする方法が無いでしょうか?
イベントプロシジャで、出来そうな気もするのですが、何せ知識不足なので、ご教示頂ければ幸いです。
以下の URL でマクロを公開しました。
https://outlooklab.wordpress.com/2021/06/05/outlook-%e8%b5%b7%e5%8b%95%e6%99%82%e3%81%ab%e4%bb%8a%e6%97%a5%e3%81%8c%e6%9c%9f%e9%99%90%e3%81%ae%e3%82%bf%e3%82%b9%e3%82%af%e3%81%ab%e5%88%86%e9%a1%9e%e9%a0%85%e7%9b%ae%e3%82%92%e8%a8%ad%e5%ae%9a/
初心者です。
弊社は、あるPCにOutllokをインストールし、公用させました。
皆(2~3人)は、時々利用しますが、ビュー窓にて、一番右の✖(削除)があります、不便です、該当ボタンもオフできないようです。
よって、誤って削除を防止のため、「削除しようパスワード必要」というマクロを作成してくださいませんか。
該当パスワードは簡単でも構わないです、要するのは、削除時注意喚起のです。
無理な要望かもしれません、よろしくお願いいたします。
残念ながら削除を防ぐようなマクロを作ることはできません。
誤って削除してしまったら、ただちに CTRL+Z で元に戻してください
ご返信ありがとうございます。
下記URLの例は、関連かと思います。
https://docs.microsoft.com/ja-jp/office/vba/api/outlook.mailitem.beforedelete
試行してみましたが、エラーができました。
余裕があれば、ご確認ください。
引用いただいたページにも記載されていますが、BeforeDelete イベントを使用するにはインスペクターを開く必要があります。
インスペクターとはアイテムをダブルクリックした際に表示されるウィンドウのことを意味していますので、BeforeDelete イベントはダブルクリックで開いたアイテムを削除する場合のみ使用可能ということになります。
したがって、メッセージ一覧で削除した際にはこのイベントは実行されず、これを使用して削除を防ぐことはできないということです。
昨年末より、こちらで勉強させて頂き、「自動転送メール」のマクロを活用させて頂いてます。
ただ、ある特定のメールのみ自動転送されません。
違いとして気付けるのは、そのメールのみ外部メールのアドレスになっています。
試しに問題のメールを自分自身に転送しなおすと、転送メールを受信した直後に転送されたので原因はほぼメールアドレスで間違いないと思っていますが、その理由が分からず対処できない状況です。
何かお気付きの点が有りましたらご教授をお願いします。
◇事例(分かっている
内部メールアドレス:****@abc.com ⇒ 転送される
外部メールアドレス:****@def.com ⇒ 転送されない
追記です。
上記記載の自分自身に手動で転送し直すと転送されるのでoutlookのルールで自動転送設定を設定しました。
しかし、自動転送だと転送されません。
差出人はどちらも自分自身で外部メールアドレスではなくなっているので転送されても良いはずなのですが、違いがわかりません。
これが原因かは分かりませんが、どうもoutlookは手動転送とルールを使った自動転送の差異を区別しているようです。
二つのメールを見比べると自動転送メールは本文のうえの方に、「!このメッセージはyyyy/mm/dd h:mmに転送されました。 このメッセージは自動転送されました」と記載されています。
また、本文内の転送を示す追加文字も異なります。
違いはこれくらいで、ルールを使った自動転送がNGになる理由は見当たりませんでした。
追記です。
原因が判明しました。
メールアドレスではなく、メール内の本文から転送先を判断しているのですが、一見見た目は他のメールと全く同じ文章なのに余計な所に空白が入っておりました。
お騒がせしました。
お世話になります。
いつも参考にさせて頂いております。
メール作成中に誤って受信トレイのメールを添付ファイルとしてドラックしてしまい、
送信してしまう誤送信が発生してしまいました。
これを防止するvbaを作成したいのですが、ご教授頂けないでしょうか。
メールが添付されていたら、メッセージ表示して送信キャンセルされるといいです。
よろしくお願いいたします。
以下のURLでマクロを公開しました。
検索エンジンで本ページを知りました。
色々な情報が整理されており、Outlook for vbaの参考にさせていただいております。
当方初心なので教えていただきたいのですが、このページで教えていただきましたoutlookからExcelに件名等の
書き出しを利用させていただいております。
一点何点がありまして、書き込みの先のExcelが開かれている場合(Oulookから起動したものではない)のExcelに
追記したいのですが、開いているExcelをコントロールする方法がわかりません。
Excel for vba のworkbooksのような機能はございませんでしょうか。
やりたいことの説明がうまく説明できませんで申し訳ありませんがよろしくお願いします。
Outlook としては現在開いている Excel ファイルを取得するというような機能はありません。
ただ、そもそも Excel ファイルを操作する場合は Outlook ではなく Excel のオブジェクト モデルを使用することになるので、そのような方法は Excel マクロなどで実行できるのではないかと思います。
以下のページによると GetObject を使用すると既存のファイルを取得できるようです。
https://qiita.com/nukie_53/items/12cc0a3fc295a446a045
お世話になります。
いつも参考にさせていただいています。
Outlookの予定表で、予定がくると特定のアプリケーションを起動したいのですが
どのような方法があるかご教示いただけないでしょうか?
# 会社の方針で、Windowsのタスクスケジューラが使えないため、Outlookの予定
# 表を活用できないかと思い、書き込みさせていただきました。
ご教示のほどよろしくお願いいたします。
以下のURLでマクロを公開しました。
ありがとうございます。OutlookからVBS経由で開いているExcelを終了させてから、再度Excelに接続することで、追加することができました。インスタンスIDが分かって、ADO経由で書き込めるともっと良いのですが、これから探ってみます。
取り急ぎお礼申し上げます。
お世話になっております。
以下を自動的に実行するためのマクロをご教示いただけますと幸いです。
・毎日決まった時間、決まった宛先に、決まった本文・件名のメールを送付する。
また、自動的にではなく、上記のメールを定期的に作成するマクロでも大丈夫です
(あとは、使用者が送信ボタンを押すだけ)
お手数をおかけしますが、どうぞよろしくお願いいたします。
以下の URL でメールを定期的に作成する方法を公開しました。
お世話になっております。早速ご教示いただき誠にありがとうございます。
お陰様で無事、問題を解決することができました。
これからもよろしくお願いいたします。
まだまだ、不透明な状況が続くと思いますが、ご体調くれぐれもお気を付けください。
お世話になります。
検索エンジンで、このページを知りました。
OUTLOOKのVBAの具体的で詳しい情報が入手できない中、本当にありがとうございます。
今回は、以下のようなことがやりたく質問させていただきした。
Office365から、メールの「Teamsで共有」機能があります。
このボタンでできることを自動化したいです。
具体的には、OUTLOOKでメールを受け取った際、
特定のメールアドレスからきたメールを
Teamsの指定した「チャネル」へ自動的に共有化することはできますでしょうか
お忙しいところ申し訳ありませんが、よろしくお願い致します。
以下の URL で Power Automate により共有する方法を公開しました。
ご丁寧なご回答ありがとうございました。
早速トライしてみました。
その結果、本文はうまく登録できました。
大変助かりました。
ただ、メールの添付資料がどうしてもTemasのチャネルに投稿できませんでした。
この内容ですとOUTLOOKを離れてしまうかもしれませんが
もし、方法をご存じであれば、重ねての質問で申し訳ありませんが
教えていただけると幸いです。
添付ファイルも含んだ形で投稿するということになると、マクロなどでは困難と思います。
どうしてもということであれば、いっそチャネルにメールを転送してしまってはどうでしょうか?
Teams のチャネルを右クリックし、[メール アドレスを取得] をクリックすると、そのチャネルにメールを送信するためのアドレスが表示され、[コピー] でクリップボードにコピーできます。
このアドレスにメールを転送すれば、添付ファイルも含んだ形で元のメールが Teams のチャネルに投稿されます。
検索しましたが分からず、失礼致します。
Outlook VBA で、検索ボックスに指定の検索語句を自動入力 -> 自動クリックはできるでしょうか。
Access の顧客名簿などから連携して特定の相手とのやりとりを把握したいのですが、
Excel に単純に抜き出すと宛先、あいさつ、署名や引用(の履歴)がだらだらと出るので、
Outlook 上で見たいと考えています。
お助けいただけるとありがたいです、よろしくお願い致します。
自己レスです。丁寧に検索したら情報が見つかりました。お騒がせ致しました。
お世話になります。
いつも参考にさせて頂いております。
お世話になります。
いつも参考にさせて頂いております。
送信クリック後、社外のアドレスが宛先にあったらメッセージ表示するためにaddressentry.typeがsmtpのとき処理するようにしていました。
しかし、先日、officeの更新を実行後から、今までexとなっていた社内アドレスもsmtpとなり、社外となってしまいます。
確認したところ、オートコンプリートで選択した社内アドレスはsmtpとなっていました。宛先クリックしてアドレス帳から選択した場合は問題ありません。
何か対処方法はないでしょうか。
よろしくお願いします。
おそらく名前解決を実行し直せば EX アドレスに解決できると思いますが、SMTP アドレスの状態でも社内アドレスかどうかについてはメールアドレスのドメインで判断はできるのではないでしょうか?
初めまして。マクロ作成で参考にさせていただいております。
今回Outlook 2013でメッセージをmsg形式で保存するマクロを作成しているのですが、英字以外の外国語がタイトルや送信者の名前などに入っているメールを保存すると、ヘッダ部分が文字化けしてしまいます。(本文は問題ありません)
Outlookから”名前を付けて保存”をする場合、保存形式に”Unicode”とそうでない形式が選択できるようになっており、Unicodeを選択した場合には文字化けせずに保存できることを確認しました。
しかしながら、Unicodeが付いていない形式のmsgで保存すると、マクロで保存した時と同じようにヘッダが文字化けしました。
該当メッセージをマクロの”MailItem.InternetCodepage”で出力すると、UTF-8に設定されていました。
このため、マクロ保存でもUnicodeのmsgファイルで保存できれば良いと思うのですが、その方法がわからず、設定方法や、ヘッダの文字化け回避方法があれば教えていただけないでしょうか?
よろしくお願いします。
自己解決しました。
メッセージ形式に”olMSGUnicode”を選択できることがわかりました。
この形式で保存をすれば、文字化けしないことが確認できました。
outlook 2019 を使用しています。
新規メールを作成した際にアドレス帳の並びが名前順となっています。
部署単位でメールを送付したいのですが方法はありますでしょうか。
連絡先に会社名、部署名はすべて記入済みです。
Outlook の連絡先で会社や部署の単位でサブフォルダーを作り、部署ごとにアドレス帳を分けてはどうでしょうか?
サブフォルダーの作成方法などは以下のリンクを参照してください。
回答ありがとうございます。
作成手順の通りに試してみましたが、そうすると、部署単位ではメールを送付しやすいですが検索がしにくいと感じました。
グローバルアドレスと同レベルの検索方法にすることは不可能なのでしょうか。
複数部署に所属している者もいるためサブフォルダでは分けづらいと感じました。
残念ながら連絡先アドレス帳で部署ごとの表示とすべてのアドレスの検索を同時に実現する方法はありません。
Exchange Online や Exchange サーバーなら階層型アドレス帳という機能でどちらも実現できるので、可能であれば Exchange サーバーの使用をご検討ください。
OutlookのVBAに関する唯一の役立つサイトだと思い日頃からお世話になっています。ありがとうございます。一つ質問をさせてください。
このサイトにある、外部ドメインに対し添付ファイルを送信する際の警告マクロ を活用させていただいておりますが、送信画面を作る際にエクスプローラーから対象ファイルを右クリックして表示されるコンテキストメニューから”送る”⇒”メール受信者” とやった場合には作動しない様です。何か対処方法はありますでしょうか。よろしくお願い致します。
エクスプローラーの [送る]-[メール受信者] によりメールを送信すると、ItemSend のイベントが実行されないようです。
残念ながら対処方法はありません。
そうだったのですね。わかりました。ご回答、有難うございました。
いつも参考にさせて頂いております。
OUTLOOKの長所はメール以外の機能も充実しており、特に検索機能は全てのアイテムを一括で抽出出来ることだと思います。また、分類機能はいわゆる#タグの役割も果たしており、重宝しております。
その中で、分類の色を会議関連、外出・移動関連、プライベートなどで纏めて、視覚的に見やすくしております。
例えば
【TV会議】 —- 分類の色 緑
【技術会議】 —- 分類の色 緑
【出張】 —- 分類の色 オレンジ
【顧客訪問】 — 分類の色 オレンジ
【プライベート】 — 分類の色 黄色
【祝日】 — 分類の色 赤
という感じです。
分類の色をマクロで定義出来るかどうかのアドバイスをお願いします。
自己解決しました。
マクロ本文で直接定義したかったのですが、「色分類項目のマスターをエクスポート/インポートするスクリプト」を参考にして、定義したい内容でcategory.txtに書き出し、定義ファイルをインポートする方法で出来ました。
1点アドバイスいただきたかったのですが、Outlookにコンフィデンシャルかどうかを設定して送信する機能があると思いますが、その設定をVBAで行うにはどのようにしたらよいでしょうか?
いつも参考にさせていただていおります。
メール本文のカーソルがある行の文字数を知りたいのですが、方法がわかりません。
実施したいことは
「■タイトル」の様な文字列の下に下線( ̄)を入れて
■タイトル
 ̄ ̄ ̄ ̄
の様なことをマクロで実施したいのです。
上記の場合、カーソルは「■タイトル」の行にあることが前提です。
ご教示いただければ、幸いです。
回答ありがとうございました。
実現したいことができました。ありがとうございます。
Word Editの使い方も良くわかりました。自身でも調べて精進したいと思います。
以上です。
お世話になります。
outlook VBAの具体的で詳しい情報
ありがとうございます。
今回は、以下のようなことがやりたく質問させていただきした。
メールに添付されているpdf,Excelファイルをマクロで
一括印刷することは可能でしょうか。
お忙しいところ申し訳ありませんが、よろしくお願い致します。
以下のページでマクロを公開しました。
お世話になります。
受信メールの差出人を連絡先フォルダーのサブフォルダーも含めて検索し、表示名を置き換えるマクロ
にて受信トレイの差出人の表示を変更していますが、
表示名ではなく、表題 に置き換わってしまいます。
他のマクロの情報なども確認してみましたが
よくわかりませんでした。
Outlook の連絡先アドレス帳では表題が名前として使用されるので、表題を差出人の表示名として使用しています。
連絡先の表示名というのが「氏名」フィールドを意味するのであれば、objContact.FileAs を objContact.FullName としてください。
お疲れ様です
いつもブログを参考にしています。
現在職場でOutlookの特定のフォルダに
受信したメールをOnenoteに送信する
という作業をOutlookのVBAを使用して
自動化しようとしています。
もしなにか手順等参考になるものがあれば
教えていただけれると助かります😭😭
使用しているOfficeのバージョンは2016です
※社内の環境上仕分けルールの転送を使ってOnenoteに送るという方法は不可でした。
転送する度に、宛先確認用のVBAが起動してしまうため、、😭
以上
よろしくお願いします
OutlookのVBAではOneNoteにメールをコピーすることはかなり困難なのですが、サーバーとしてExchange Onlineを使用し、OneNoteがSharePointかOneDrive上にあるなら、Power Automateで自動化することが可能です。
組織外(指定したドメイン以外)のアドレスがBCC以外に含まれる場合送信を取りやめるマクロが解らず困っています。「複数のドメインが宛先(To Cc含む)に含まれています。BCCに設定し直して下さい。」というポップアップが出るようなマクロが有れば教えて下さい。初めからBCCに混在している場合は警告は不要です。宜しくお願い致します。
以下のページでマクロを公開しました。
いつも参考にさせていただいています。ありがとうございます。
自分では解決出来なかったため質問させていただければと思います。
質問:クイック検索の検索文字列を取得できるでしょうか。
クイック検索(インスタント検索?)の検索ボックス(ウィンドウの最上部、クイックアクセスツールバーの隣の検索窓)に入力されている値をマクロで取得したいのですが、方法が全く分かりません。
そこにVBAでアクセスできますでしょうか。
状況/用途としては、例えばユーザーがクイック検索した時、より精度を高める(特定の業務に合わせた)カスタマイズした検索クエリを提供する、などです。
https://docs.microsoft.com/en-us/office/vba/api/outlook.explorer.search
こちらのドキュメントにあるように、クイック検索はイベントで捕捉できない事や「検索結果」を取得できない事は理解しています。
ただその入力済みの文字列(またはその検索ボックスのオブジェクト)はどうなんだろうと思った次第です。
宜しければお願いいたします。
環境:Outlook for Microsoft365
残念ながらマクロで検索文字列を取得する方法はないようです。
そうなんですね。残念ではありますが、これでハッキリしたのは助かります。ご回答ありがとうございました。
先週から貴サイトを発見し、大変勉強になり参照させて頂いております。
Outlookにもマクロがあったことを知らず、メールに関するマニュアル作業をどうにかできないか悩んでいるところです。
VBAに関しては全くの初心者のため、貴サイトの構文をコピペしてみるも応用が利かずエラーの改善策を見つけられなかったぜひアドバイスいただけましたら幸いです。同じ質問・構文がすでに過去出ておりましたら申し訳ございません。その際はリンクのシェアを頂けましたら幸いです。
[参照済みリンク]
– 受信したメールに添付された Excel ファイルをもとに別の Excel ファイルの内容を更新するマクロ
– フォルダーにあるメールの添付ファイル (CSV) の内容を Excel にまとめるマクロ
[実施したいこと]
毎時受信する4通のメールに添付されている、同形式で別名のcsvファイルのデータを1つのExcelファイルに、かつ4つのタブに分けてまとめたい
<状況詳細>
– メールの件名、及びcsvのファイル名の異なる4種類のメールを30分毎で受信
– Outlookの特定フォルダに振り分けているのでその中の該当メールの最新分4通のみを参照したい
– メールの受信時間はほぼ同じタイミングで受信
– それぞれのメールには別のファイル名でcsvファイルがデータとして添付されている
– メールに添付されてくるcsvのデータ(csvファイル内の1行目/1列目からコピペをしたい)を1つのExcelファイルにタブ分けでまとめたい(タブ分けが不可の場合はファイルが分かれてもOK)
– Excelファイルはマスターのものに上書きしたい
[実施したこと]
– 参照リンクから修正して実施した際、1通分のみのデータを抽出できましたが残り3通分が不可、かつデータを上書きさせることができず毎時過去メールを消さないとならない状況でした。
お手数をお掛け致しますがご教授頂けますと幸いです。
よろしくお願い致します。
以下のページでマクロを公開しました。
こんにちは。いつも参考にさせていただいております。
はじめて質問させていただきます。
下書きフォルダ内のメールの「TO、CC、BCC」を送信前に取引先リストと照合し、誤送信を防ぐマクロを作成しました。
アドレスがexchangeでglobal addressの表示名に自動変換されるため、元のアドレスを取得していますが、
社内スタッフは複数のアドレスを持ち、かつ表示名が氏名のため、表示名からアドレスを特定することができません。さらに、同姓同名が多数存在する氏名の場合、別人のアドレスを取得する可能性が高く、困っております。
宛先の表示名「鈴木一郎」をコピペすると、「鈴木一郎」のように、氏名の後に内にアドレスが表示されますが、
このアドレスを取得する方法はありますか?
Outlook2016です。
以下のページで公開している GetSMTPAddr 関数で SMTP アドレスを取得できます。
「メールのスレッドを保持してExcelにエクスポートするマクロ」にもコメントさせていただきましたがこちらにお伺いするのが正しいようなのでご質問させていただきます。マルチポストになり申し訳ありません。
大変便利なマクロを公開していただき感謝します。「エイリアスバージョン」の方は問題なく実行できましたが、こちらの方はエラーが出て実行出来ませんでした。
自分なりに色々試しましたが解決しませんでした。
実行するとコンパイルエラー「ByRef 引数の型が一致しません。」と表示され、30行目辺りの
ExportThreadByMessageId objItem, objSheet
のobjItemが反転表示されます。何がいけないのでしょうか?
また、図々しいお願いですがメールが大量にあるので実行出来た「エイリアスバージョン」の方でもタイムアウトが発生します。取得範囲を何月何日から何月何日まで、言った具合に指定する方法はありますでしょうか?両方のバージョンでの修正方法があればご教示くださると幸いです。
こんにちは。
初めて質問させていただきます。
メール送信時に、メール本文にハイパーリンクがあった場合、「ハイパーリンクが飛べるか確認しましたか」というダイアログを出したいです。(いいえで送信キャンセル)
ハイパーリンクを送信する際、リンクがきれいていたり、文字列が反映されておらず、リンクに飛べないのに送信してしまったということがあります。
if item.body.Hyperlinks.count > 0 としたのですが、コンパイルエラーが出てしまいます。
お手数をおかけいたしますが、ご教示いただけますと幸いです。
よろしくお願いいたします。
以下のページでマクロを公開しました。
こんにちは。
初めて質問させていただきます。
下記作業について、マクロをくむことで自動化が可能かお伺いしたくこちらにUPさせていただきました。
作業:OutlookでTeams会議の招集を部署ごと(日時もわけて)に送付
下記項目①~⑤をExcelで管理し、こちらをもとに手入力で送付
①必須出席者:
②任意出席者:
③件名:【会議名】部署名
④開始日時
⑤終了日時
また、頼本文 にも上記①~⑤の情報を改めて記載しています
マクロをくむことで、自動化してOutlookのTeams会議を送付することは可能なのでしょうか?
また可能な場合、①~⑤の情報を依頼本文にもいれることはできますか?
ご教示いただけますと幸いです。
どうぞよろしくお願いいたします。
残念ながら Teams 会議をマクロで設定することはできません。
追記です。
上記しつもんさせていただいた会議依頼は、非公開設定も必要になります。
よろしくお願いいたします。
Windows 10 上の Outlook2016 のデスクトップ通知が、毎回、2回連続して表示されます。
2回も消すのは面倒なので、1回の表示にするにはどうしたら良いでしょうか。
デスクトップ通知を表示するようなルールは設定していませんか?
あるいは、Windows 10 の設定の[メールとアカウント]でメール アカウントを設定していませんか?
Windows 10 でメール アカウントを設定すると、Windows のメールでもデスクトップ通知が行われます。
Outlook2019を使用しておりますが、2,3日に一度メール編集時(主に返信時)にOutlookの画面が突如乱れて、作業が続けられない状況になります。Outlookを再起動すると元に戻りますが、2,3日たつと同じ現象になります。Outlook以外のOfficeではその現象は出ていません。社内ではほぼ同じスペックのPCが60台ほどありますが、他のPCでは出ていません。
対処方法がありましたらご教授ください。なお、2017年の記事「Outlook で画面の表示が乱れる現象が発生する場合の対処方法」は試してみましたが、変化はありませんでした。
よろしくお願いいたします。
OS:Windows10 21H1 Windows Update済
Officeの更新済
現象からすると、メモリが不足している状況のように見えます。
参照いただいた記事の対処方法はどの程度試されたのでしょうか?
コメントありがとうございます。どうやら12月のWindowsUpdateが問題だったようです。Microsoftの技術コミュニティーで問題となっておりました。Microsoftの公式発表でも認識しているようですが、まだ修正パッチは出ていないようです。現在、現象が出ているPCはシャットダウンせず(シャットダウンするといんでっく)電源を入れたままで運用しております。
受信したメールの添付ファイル名より Excel を検索し、添付ファイルごと転送するマクロ
https://outlooklab.wordpress.com/2021/09/25/%e5%8f%97%e4%bf%a1%e3%81%97%e3%81%9f%e3%83%a1%e3%83%bc%e3%83%ab%e3%81%ae%e6%b7%bb%e4%bb%98%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e5%90%8d%e3%82%88%e3%82%8a-excel-%e3%82%92%e6%a4%9c%e7%b4%a2%e3%81%97/
へも質問させていただいておりますが、
新着メールの件名 (仮)[ABC-CODEDATE:5桁の数字] を検索ワードとして サブフォルダ内(仮に 0_予約メール返答済み 内) を検索し、転送先メールを探して添付ファイルごと全員返信(自分アドレスはその時に排除)で テンプレートの文章を差し込んで(例:結果を配信いたします)送信(転送?)するマクロもしくは仕分けルールに適用できるスクリプトにすることは可能でしょうか?
英語サイトなどをさまよって以下のようなコードは見つけたのですが、、、特定の件名を設定して動くものなのか、受信時にそのメールの件名を用いて検索して動いてくれるものなのか、私自身の知識では判別がつかず困っております。
Option Explicit
‘ Event handler for outlook
Dim WithEvents OutlookApp As Outlook.Application
Dim outlookSearch As Outlook.Search
Dim outlookResults As Outlook.Results
Dim searchComplete As Boolean
‘ Handler for Advanced search complete
Public Sub outlookApp_AdvancedSearchComplete(ByVal SearchObject As Search)
‘MsgBox “The AdvancedSearchComplete Event fired.”
searchComplete = True
End Sub
Sub SearchAndReply(emailSubject As String, searchFolderName As String, searchSubFolders As Boolean)
‘ Declare objects variables
Dim customMailItem As Outlook.MailItem
Dim searchString As String
Dim resultItem As Integer
‘ Variable defined at the class level
Set OutlookApp = New Outlook.Application
‘ Variable defined at the class level (modified by outlookApp_AdvancedSearchComplete when search is completed)
searchComplete = False
‘ You can look up on the internet for urn:schemas strings to make custom searches
searchString = “urn:schemas:httpmail:subject like ‘” & emailSubject & “‘”
‘ Use: subject like ‘%” & emailSubject & “%'” if you want to include words see %
‘ Perform advanced search
Set outlookSearch = OutlookApp.AdvancedSearch(searchFolderName, searchString, searchSubFolders, “SearchTag”)
‘ Wait until search is complete based on outlookApp_AdvancedSearchComplete event
While searchComplete = False
DoEvents
Wend
‘ Get the results
Set outlookResults = outlookSearch.Results
If outlookResults.Count = 0 Then Exit Sub
‘ Sort descending so you get the latest
outlookResults.Sort “[SentOn]”, True
‘ Reply only to the latest one
resultItem = 1
‘ Some properties you can check from the email item for debugging purposes
On Error Resume Next
Debug.Print outlookResults.Item(resultItem).SentOn, outlookResults.Item(resultItem).ReceivedTime, outlookResults.Item(resultItem).SenderName, outlookResults.Item(resultItem).Subject
On Error GoTo 0
Set customMailItem = outlookResults.Item(resultItem).ReplyAll
‘ At least one reply setting is required in order to replyall to fire
customMailItem.Body = “forward mail ” & customMailItem.Body
customMailItem.Display
End Sub
こちらのコードは件名、検索するフォルダー名、サブフォルダの検索の有無を指定し、高度な検索で検索をした結果から、最後に受信したメールに対して返信のメールを作成するというマクロです。
このマクロを実行するために別のマクロが必要となるもので、これだけでは動作しません。
実行したい処理がいまいち理解できないのですが、以下の点について確認させてください。
> 新着メールの件名 (仮)[ABC-CODEDATE:5桁の数字] を検索ワードとして
> サブフォルダ内(仮に 0_予約メール返答済み 内) を検索し、
メールを受信したら自動的にマクロを実行するのでしょうか?
また、検索に複数メールが合致した場合はどうすべきなのでしょうか?
> 転送先メールを探して添付ファイルごと全員返信(自分アドレスはその時に排除)で
これは検索で見つかったメールに対して全員返信でしょうか?
また、添付ファイルは受信メールのものでしょうか?
それとも、返信を行う元のメールのものでしょうか?
> 新着メールの件名 (仮)[ABC-CODEDATE:5桁の数字] を検索ワードとして
> サブフォルダ内(仮に 0_予約メール返答済み 内) を検索し、
メールを受信したら自動的にマクロを実行するのでしょうか?
また、検索に複数メールが合致した場合はどうすべきなのでしょうか?
→ サブフォルダ内受信済みメールの件名の5桁の数字はユニークな番号なので複数はヒットしません。
→その後、上記の案件の結果が送信されてきます、そちらのメールが新着時に サブフォルダ内を件名で検索したい流れです。
> 転送先メールを探して添付ファイルごと全員返信(自分アドレスはその時に排除)で
これは検索で見つかったメールに対して全員返信でしょうか?
また、添付ファイルは受信メールのものでしょうか?
それとも、返信を行う元のメールのものでしょうか?
→ 結果の新着メールの件名によるサブフォルダ内の検索で見つかったメールに対して全員返信を行いたいです。
どうぞよろしくお願いします。
すみません、携帯で返信したので文章でひどいことになっておりました
再度返信させていただきます
以下の点について確認させてください。
> 新着メールの件名 (仮)[ABC-CODEDATE:5桁の数字] を検索ワードとして
> サブフォルダ内(仮に 0_予約メール返答済み 内) を検索し、
メールを受信したら自動的にマクロを実行するのでしょうか?
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
→ まず流れとして 5桁のユニークな番号を件名に持つ 依頼メールが来ます、そちらを処理後このメールは サブフォルダ内(仮に 0_予約メール返答済み 内)に格納されます。こちらのマクロは不要です。
その後 依頼内容の結果が作業センターより、件名に上記の5桁のユニークな番号いれたものが私へメール 添付PDFありで送信されます。
このメールを受信時に マクロか仕分けルールでスクリプトが起動して 件名の5桁の数字 を検索ワードとして、サブフォルダ内(仮に 0_予約メール返答済み 内)を検索し、おおもとの依頼メールに対して全員返信の形でPDFを転送したいです。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
また、検索に複数メールが合致した場合はどうすべきなのでしょうか?
→上記の通りユニークな番号なのでサブフォルダ内では複数合致はいたしません。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
> 転送先メールを探して添付ファイルごと全員返信(自分アドレスはその時に排除)で
これは検索で見つかったメールに対して全員返信でしょうか?
また、添付ファイルは受信メールのものでしょうか?
それとも、返信を行う元のメールのものでしょうか?
→上記記述の通り おおもとの依頼メールに対して全員返信((自分アドレスはその時に排除))の形で 添付されているPDFを転送したいです。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
何卒宜しくお願い致します。
VBAについて
Outlookで共有メールボックスの特定の
ファイルのメールの内容を
Excelへ転記する方法について。
以下の方法をご教授いただけないでしょうか。
①共有メールボックスの特定のフォルダの
メールをExcelへ転記
②メール本文から欲しい情報だけ取り出して転記
----------------
①現在、VBAを勉強中です。
Outlookの受信トレイの特定のフォルダの
メールをExcelへ転記するのは出来たのですが、
共有メールボックスの特定のファイルの
メールを転記するには
どのようにしたらよろしいでしょうか。
以下は、Outlook受信トレイのVBAテスト
フォルダの中のメールをExcelへ転記する
コードです。
このコードを上手く共有メールボックスの
特定のファイルのメールをExcelへ転記する
コードに修正することを可能でしょうか。
----------------
Sub GetMail()
Dim objOutlook As Outlook.Application
Dim myNamespace As Outlook.Namespace
Dim myInbox, mySubfolder
Set objOutlook = New Outlook.Application
Set myNamespace = objOutlook.GetNamespace(“MAPI”)
Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)
Set mySubfolder = myInbox.Folders.Item(“VBAテスト”)
Dim i As Long
For i = 1 To mySubfolder.Items.Count
With ThisWorkbook.Worksheets(“Sheet1”)
.Cells(i + 1, 1).Value = mySubfolder.Items(i).SentOn
.Cells(i + 1, 2).Value = mySubfolder.Items(i).Subject
.Cells(i + 1, 3).Value = mySubfolder.Items(i).Body
End With
Next i
End Sub
----------------
② メール本文から欲しい情報だけ取り出して転記
定型メールなのですが、以下の例の内容のように、
山田だけを本文から取り出したいのですが、
可能でしょうか。
可能なら①のコードだとどのように修正すれば
よろしいでしょうか。
【例】
名前:山田
住所:神奈川県川崎市
VBAを学んだばかりで分からないこと
だらけですが、よろしくお願い致します。
以下のページでマクロを公開しました。
初めまして。
アウトルックで先月の実績報告などをする際に、年月をVBAの自動入力にしています。
今月のように1月に12月度の報告をする場合、
MyItem.Subject = Replace(MyItem.Subject, “mm”, Month(Now) – 1)
と入力すると0月になってしまいます。
+11に置き換えることで前月に表示させることはできるのですが、連動して年も前年度に表示させる方法はないでしょうか?
DateAdd 関数を使うと、1カ月前の日付を取得することができます。
例えば、件名に含まれる “yy/mm” という文字列を1カ月前の年月で置き換える場合は以下のようにします。
MyItem.Subject = Replace(MyItem.Subject,”yy/mm”,Format(DateAdd(“m”, -1, Now), “yy/mm”))
Outlook vbaを利用して
エクセルのユーザーフォームのテキストボックスに入力された
メールアドレスから Outlookのプロフィール写真をユーザーフォームのイメージに表示されたいのですが方法を教えてください。
初めまして
現在、めー返信時に差出人を配布メールのアドレスに