Outlook に関する質問・疑問・マクロの要望を募集します


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

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

広告

Outlook に関する質問・疑問・マクロの要望を募集します」への144件のフィードバック

  1. はじめまして。現在、VB.NETでExchangeサーバのパブリックフォルダにアクセスして投稿されている内容をローカルのパソコンに落とすアプリを開発しています。パブリックフォルダにアクセスして、同階層のフォルダを作成するところまではできましたが、投稿内容をファイルとして保存する方法が見つかりません。方法がございましたらご教授願います。

  2. To 東児さん会議出席依頼の承諾ボタンが押せないということですが、承諾ボタン自体は表示されているのにグレーアウトしている、ということでしょうか?ちょっと原因は思いつかないのですが、気になるのは送信者の PST ファイルの破損を疑われている、という点です。もしかして、配信先を PST にしているのでしょうか?であれば、予期しない動作をする可能性があるので、配信先は Exchange サーバーのメールボックスにしてください。To 正和さんExchange サーバーのパブリック フォルダにはどのような方法でアクセスしているのでしょうか?Outlook Object Model でしょうか?それとも、WebDAV や Exchange Web Service でしょうか?何を使っているかでファイルとして保存する方法や、保存できる形式などが異なります。

  3. MillefeuilleさんへExchange サーバーのパブリック フォルダへはOutlook Object Model でアクセスをしております。方法がございましたら、ご教授願いします。

  4. To 正和さんOutlook Object Model を使用している場合、ローカルにファイルとして保存するにはアイテムの SaveAs メソッドを使用します。投稿アイテムの SaveAs メソッドの詳細については、http://msdn.microsoft.com/en-us/library/bb175460.aspx を参照してください。

  5. To 正和さんCDO といっても、CDO 1.21 と CDO for Windows 2000 がありますが、CDO 1.21 は VB.NET からの利用はサポートされていないため、CDO for Windows 2000 と仮定して話を進めます。CDO for Windows 2000 では IBodyPart インターフェイスの SaveToFile メソッドで EML 形式により保存ができます。詳細は http://msdn.microsoft.com/en-us/library/ms527354(EXCHG.10).aspx を参照してください。

  6. Millefeuilleさんへたびたび申し訳ございません。CDO 1.21で開発を進めていますがいかがでしょうか?VB.NET からの利用がサポートされていないのを承知でお願いします。

  7. To 正和さんCDO 1.21 ではアイテムそのものを保存する方法はありません。件名や本文、投稿者などの情報をプロパティとして取得し、それをテキストファイルに書き出すなどをする必要があります。また、本文はテキスト形式でしか取得できません。

  8. outlook2003で、下記エラーメッセが表示されます。「その名前または配布リストは既に削除されているため、使用できるアドレス帳のエントリではありません。アイテムが見つかりませんでした。」outlook2003で、OFTファイルを作成しました。作成したマシン以外のPCで上記のOFTファイルを開き、「宛名」をダブルクリックすると、「その名前または配布リストは既に削除されているため、使用できるアドレス帳のエントリではありません。アイテムが見つかりませんでした。」のエラーメッセージが表示されてしまいます。どう設定すればいいのかご教授頂けますでしょうか。元々やりたい事は、OFTのテンプレートファイルを作成し、宛名部分はメールアドレスそのものを表示するのではなく、名前を表示したいです。ご存知の方、是非教えてください。

  9. To 名前なしさんOFT を作成する際、宛先にはアドレス帳から選択したものを指定しているのでしょうか?その場合、宛先に追加されるデータはアドレス帳へのリンク情報のようなものになるので、別のマシンで使うとアドレス帳にアクセスできずエラーとなります。そのため、ほかのマシンで使う OFT で宛先を指定する場合には、アドレス帳から選択せずにアドレスを指定する必要があります。表示名も付けてアドレスを指定したいのであれば、以下のようにアドレスを指定してください。表示名 <メールアドレス>たとえば、test@example.com というアドレスを「テストユーザー」という名前で宛先に指定する場合は以下のようになります。テストユーザー <test@example.com>

  10. 回答ありがとうございました。はい、確かに宛先は、テストユーザー <test@example.com>になりました。アドレス帳から選択するように、<メールアドレス>を表示したくないのですが、それはできないのでしょうか?表示名:テストユーザーだけでいいのですが・・・。

  11. To 名前なしさんそのメールを送ってみましたか?確かに作成時には <メールアドレス> と表示されますが、受信者にはそのように表示されないはずです。ご確認ください。

  12. Millefeuilleさんたびたびの質問ですみません。このところ、Outlook 2003(主に)クライアントPCから会議招集メールをだすと、・受信メールは文字化けせずに届く・スケジュール(予定表)でみると文字化けしているという現象がかなりの頻度で起きています。(いつもではありませんが)受信するPCは2003でも2007でも同様です。ただ、その会議案内を再送すると文字化けが解消される、という不思議な現象もおきています。OWA(Outlook Web Access)でみても同様に文字化けしています。Exchangeサーバー側で何か対応するようなパッチはあるのでしょうか?それとも、PC側の問題(SP3など)なのでしょうか?以前、グローバルアドレス帳のプロパティを開くと『全般』『組織』『電話番号』といったフィールド名が『?????』になる障害については、http://support.microsoft.com/kb/926872/ja を適用し、解決しましたが・・・・・なにかご存知の情報がございましたら幸いです。

  13. To 東児さんメールボックスが Unicode でない場合、文字化けが発生する可能性があります。以下のレジストリ設定をして試してみてください。(キーや値が無い場合は新規に作成してください。)Outlook 2003 のキー: HKEY_CURRENT_USER\\Software\\Microsoft\\Office\\11.0\\Outlook\\EMSPOutlook 2007 のキー: HKEY_CURRENT_USER\\Software\\Microsoft\\Office\\12.0\\Outlook\\EMSP- 追加するデータの名前と値名前: IgnoreOSTFormat種類: REG_DWORD (DWORD 値)値: 2名前: SilentOSTFormatChange種類: REG_DWORD (DWORD 値)値: 1名前: IgnoreArchiveFormat種類: REG_DWORD (DWORD 値)値: 1名前: PreferANSI種類: REG_DWORD (DWORD 値)値: 0x0

  14. Millefeuilleさんありがとうございます。名前: PreferANSI種類: REG_DWORD (DWORD 値)値: 0x0とありますが、DWORDは値が0x0がはいらないのですが・・・・・

  15. はじめまして。宜しくお願いします。会議出席依頼で教えてください。(Outlook2003使用)年間の会議日程が出席者も承諾してる前提で、会議出席依頼を「定期的な予定」のように、一度に出して、出席者も一度で承諾する(又はワンクリックで予定表に入る)方法はありますか?日程が任意の日なので「定期的な予定」では設定できないようです。何か良い方法があればお教えください。

  16. To すっちさん要するに会社の行事などのように本人の意思を問わず参加する必要がある複数の予定を全員の予定表に入れたい、ということなのでしょうか?であれば、会議出席依頼でまとめて登録、というのは難しいでしょう。ただ、スクリプトを使って複数の予定をまとめて登録するということは可能です。下記の URL で予定表に祝日を追加するスクリプトを紹介していますが、これに手を加えて特定の日時の予定をまとめて追加するようにできると思います。http://outlooklab.spaces.live.com/blog/cns!9D7EA61EC7DAA750!318.entry

  17. 私にはできないマクロの要望です。outlookアドレス帳の「連絡先」・「学校」・「友達」などのフォルダ「A(i=1 to ?)」からすべてのアドレス「B(j=1 to ?)」と名前「C(j=1 to ?)」を認識させ、受信トレイの中に「A(i)」というフォルダを作成し、アドレス「B」からのメールが入るような「C(j)」というフォルダを作成するマクロです。ただし、過去に作ったフォルダまで再作成するとマクロに時間がかかるので、if フォルダが存在しない場合 then  作成else そのままend ifなどの場合分けを行うものをお願いします。利点・見やすくなると思います。*手作業では登録→ジャンル分けフォルダ作成→その人専用フォルダ作成→仕分け機能により分配デメリット100人登録するなどの作業は大変。従ってマクロでこれをおこなっていただきたいのです。よろしくお願いします。

  18. ふたつも要望を投稿してすみません。あなたほどの技術者であればこんどの投稿はちょちょいのちょいだと思われるので簡単な要望をさせていただいます。http://outlooklab.spaces.live.com/blog/cns!9D7EA61EC7DAA750!177.entry?sa=85548443に掲載しているマクロについてですが、私はアドレス帳にデフォルトの「連絡先」以外にもフォルダを作成しています。したがって、↑URLのままでは、連絡先以外のフォルダに登録したアドレスからのメールがマクロに適用されません。そこでアドレス帳の中の「連絡先」・「学校」・「友達」などのフォルダでも適用できるようなマクロを作成していただきたいです。このサイトにはいつも感謝しています。これからもみなさんのため、また作者様自身の技術向上のためにも、このサイトの更新を続けてください!

  19. Millefeuilleさん回答ありがとうございました。状況としては、Millefeuilleさんの言われるようなケースです。ただ、その際に予定表に入れたいのは普通の予定アイテムではなく「会議出席依頼」なのです。日程が後で変わったときに、アップデートしたいので。>スクリプトを使って複数の予定をまとめて登録するということは可能です。とのことですが、スクリプトでこれも可能でしょうか?返信遅れて申し訳ありません。宜しくお願いします。

  20. To ゅぃさんまず、最初のご要望についてですが、「連絡先」、「学校」、「友達」という連絡先フォルダにそれぞれ「Contact1」、「School2」、「Friend3」という連絡先アイテムがあった場合に、それぞれ連絡先から送信されたメッセージを以下のようなフォルダに振り分けるということでしょうか?受信トレイ+-連絡先| +-Contact1+-学校| +-School2+-友達  +-Friend3この場合、例えば連絡先に 100 ユーザーいたら、フォルダが 100 個作成されることになると思いますが。また、この動作はいつ行うのでしょうか?マクロを実行したタイミングですか?それともメッセージを受信したタイミングですか?次に、2 番目のご要望についてですが、FindContactByAddress を以下のように変更すれば実現できると思います。なお、既定の連絡先フォルダ以外の連絡先フォルダは、すべて既定の連絡先フォルダの下に作成されていることが前提となっています。Private Function FindContactByAddress(strAddress As String) Dim objContacts \’As Folder Dim objContact As ContactItem Dim objSubFolder Set objContacts = Application.Session.GetDefaultFolder(olFolderContacts) Set objContact = objContacts.Items.Find("[Email1Address] = \’" & strAddress _ & "\’ or [Email2Address] = \’" & strAddress _ & "\’ or [Email3Address] = \’" & strAddress & "\’") If objContact Is Nothing Then For Each objSubFolder In objContacts.Folders Set objContact = objSubFolder.Items.Find("[Email1Address] = \’" & strAddress _ & "\’ or [Email2Address] = \’" & strAddress _ & "\’ or [Email3Address] = \’" & strAddress & "\’") If Not objContact Is Nothing Then Exit For End If Next End If Set FindContactByAddress = objContact End FunctionTo すっちさん残念ながら会議出席依頼でなければならないということであれば、一括で承諾というようなことはできません。

  21. Millefeuilleさん返信ありがとうございます!1つめの要望について詳しく説明しようと思います!まずoutlookアドレス帳を図示すると図1outlookアドレス帳+連絡先(デフォルトですが、↓でジャンル分けしているので登録件数は0)|+友達(フォルダ)| 佐藤さん(いわゆるファイル。「佐藤」という名前は例)| 佐々木さん| :| :| 鈴木さん|+学校(フォルダ) 石田先生(いわゆる連絡先アイテム。フォルダではない。) 北村先生 : : 佐野先生となっています。そして↑の図示した図と関連させて図2受信トレイ| +友達(ジャンル、フォルダ)| 佐藤さん(フォルダ、ここに佐藤さんからのメールが入るようにする)|   佐々木さん(上におなじ)|   :| 鈴木さん| | +学校(ジャンル、フォルダ)   石田先生(フォルダ、ここに佐藤さんからのメールが入るようにする) 北村先生(上におなじ) : : 佐野先生図1があるのを前提としてこの図2になるようにマクロでフォルダを作成してほしいのです。マクロのタイミングは任意のタイミング、つまり、「今10人アドレス帳に登録したからそのひと用のフォルダ10個つくりたいな!」と思ったときなどです。メール受信時ではありません。そして、「特定のアドレスからのメールを特定のフォルダにはいるようにする」という仕分け機能があると思います。これをマクロで登録してほしいのです。つまり(マクロ構成は作者様の考えるべきものですので、私の考える構成は無視してかまいません。)マクロ1 :図1を認識する。(「フォルダの名前」、「アドレス」、「人の名前」を記憶。)マクロ2 :マクロ1の情報をもとに図2になるようにフォルダを作成マクロ1とマクロ2を「for-next文」などを利用して、まだ作成されていないフォルダを作成。ということです。

  22. 2番目の要望。惜しいですが少しこちらの意を説明するのが下手だったようですおそらく、「連絡先」の中にフォルダは作成できないと思います。やってみようとしましたが、↓の図1のようになりました。私のoutlookアドレス帳は図1outlookアドレス帳+連絡先(デフォルトですが、↓でジャンル分けしているので登録件数は0)|+友達(フォルダ)|  佐藤さん(いわゆるファイル。「佐藤」という名前は例)|  佐々木さん|  :|  :|  鈴木さん|+学校(フォルダ) 石田先生(いわゆる連絡先アイテム。フォルダではない。) 北村先生 : : 佐野先生となっています。そこでFindContactByAddress関数は上図でも認識できるようにしたいのです。無理でしょうか・・?

  23. 2番目の要望解決Function FindContactByAddress(strAddress As String)Dim objContacts As MAPIFolderSet objContacts = Application.Session.GetDefaultFolder(olFolderContacts)Set FindContactByAddress = FindContactByAddress1(strAddress, objContacts)End FunctionFunction FindContactByAddress1(strAddress As String, objContacts As MAPIFolder)Dim objContact As ContactItemDim SubFolder As MAPIFolderSet objContact = objContacts.Items.Find("[Email1Address] = \’" & strAddress _& "\’ or [Email2Address] = \’" & strAddress _& "\’ or [Email3Address] = \’" & strAddress & "\’")If Not TypeName(objContact) = "Nothing" ThenSet FindContactByAddress1 = objContactElseFor Each SubFolder In objContacts.FoldersSet objContact = FindContactByAddress1(strAddress, SubFolder)If Not TypeName(objContact) = "Nothing" ThenSet FindContactByAddress1 = objContactExit FunctionEnd IfNextSet FindContactByAddress1 = NothingEnd IfEnd Functionで成功しました!これよりもっと簡単なプログラムがあればご指導ください

  24. To ゅぃさん2番目の要望は解決されたようで何よりです。前回私が作成したコードでも同じ動作になるとは思うのですが、違ったらすみません。なお、Outlook のアドレス帳の階層構造と、連絡先のフォルダの階層構造は別です。なので、アドレス帳でどのように表示されているのかというのはマクロで考慮する必要はないのです。結局1番目の要望は、連絡先にある情報でフォルダを作るというマクロと、そのフォルダに割り振るという別のマクロの2つを作る、ということなのでしょうか?どうせマクロでフォルダに割り振るなら、割り振る際にフォルダがなかったら作成する、というので良いのではないかと思うのですが。事前にフォルダを作らなければいけない理由は何でしょうか?

  25. >マクロでフォルダに割り振るなら、割り振る際にフォルダがなかったら作成する、というので良いのではないかと思うのですが。そうですね!ではその方向でお願いします!

  26. Millefeuilleさん回答ありがとうございました。実現できないのは残念ですが、、、参考URLためになりました。今後もこのサイトで勉強させていただきます。ありがとうございました。

  27. Millefeuilleさん3/10に文字化けの件で問い合わせをしました、東児です。直接的な原因・操作として、会議案内や予定をBlackBerryで、受信、またはUpdate、または作成するとOutlook上の予定表が文字化けする、ということが判明しました。弊社のBlackBerry Enterprise ServerはUSにあるのですが、これが原因ではないか、というところまでいたっております。BESで何かのパッチが必要なのかどうか調査中です。もちろんRIM社(BlackBerry)から適用パッチがでていないとどうしようもないですが・・・なにかご存知のことがありましたらまた教えてください。

  28. To ゅぃさんhttp://outlooklab.spaces.live.com/blog/cns!9D7EA61EC7DAA750!2241.entry で連絡先ごとのフォルダに割り振るマクロを公開しました。

  29. Millefeuilleさんゆいさんのために作成したマクロはすごいですね!http://outlooklab.spaces.live.com/blog/cns!9D7EA61EC7DAA750!2241.entry使わせてもらいました。しかし、ひとつ誤解されているかもしれませんね汗たしかにメールは分配さられるようですが、ゆいさんがもとめているのは>「特定のアドレスからのメールを特定のフォルダにはいるようにする」という仕分け機能です。このマクロでは、メールが分配されるだけになってしまいます。なので、次回から来たメールは、またマクロを使わないと分配されません。従って、「その人のフォルダがある場合、次メールが来た際、そこのフォルダに分配する」というマクロを付け加えるべきではないでしょうか??あまりに便利なので、口出ししてしまいましたが、申し訳ありません。ゆいさんがそれを求めていなくても、私自信がそのマクロを要望したいと思います。

  30. 私の理想はメールが来たとき動作するマクロで  if「アドレス帳(連絡先フォルダやその他フォルダすべてを含むアドレスアイテム)に存在する」then     「そのメールの差出人を、登録されている名前に変更する」 \’ここからメールの移動作業     if「ジャンルフォルダ(学校・友達等)がない」then「ジャンルフォルダを作成する」     if「差出人専用フォルダ(先生・佐藤さん達等)がない」then「差出人専用のフォルダを作成する」     「メールをそこに移動する」  else \’アドレス帳に登録されていない場合     if「その他フォルダがない」then「その他フォルダ作成」     「そのメールをその他フォルダに移動」  end if

  31. To 名前なしさんご指摘の通り、http://outlooklab.spaces.live.com/blog/cns!9D7EA61EC7DAA750!2241.entry をメッセージ受信のタイミングでもフォルダを作成して振り分けるように修正しました。作成を依頼されたゅぃさんが音信不通なので、これで正しいかどうかは不明ですが…

  32. MillefeuilleさんそちらのマクロはエラーでしたまずPrivate Sub MoveOneItemBySender(objItem As Variant)Dim fldContact \’As FolderDim fldSender \’As FolderDim fldDest \’As FolderDim strFolderName As StringDim objContact \’As ContactItem\’ 連絡先を検索Set objContact = FindContactByAddress(objItem.SenderEmailAddress, strFolderName)If Not objContact Is Nothing Then\’ アドレスで連絡先が見つかったらそのフォルダの名前のフォルダを検索Set fldDest = NothingFor Each fldContact In fldCurrent.Foldersで、 fldCurrentが定義されていないとのこと。定義して実行すると、Set objContact = FindContactByAddress(objItem.SenderEmailAddress, strFolderName)でデバッグが・・・後者は理由がわかりません。環境はアドレス帳の「自分」というフォルダに「morita」というアイテムを作成。マクロが適用されるか実験で受信フォルダにはあえて「自分」というジャンルフォルダを作成せず、また「morita」というフォルダも作成していない状態で「morita」に登録したアドレスからoutlookアカウントのアドレスに送信したところ上記のエラーが発生しました。ところで、ゆいさんのマクロは、半分解決したとして、if「アドレス帳(連絡先フォルダやその他フォルダすべてを含むアドレスアイテム)に存在する」then     「そのメールの差出人を、登録されている名前に変更する」     if「ジャンルフォルダ(学校・友達等)がない」then「ジャンルフォルダを作成する」     if「差出人専用フォルダ(先生・佐藤さん達等)がない」then「差出人専用のフォルダを作成する」     「メールをそこに移動する」  else \’アドレス帳に登録されていない場合     if「その他フォルダがない」then「その他フォルダ作成」     「そのメールを「その他」フォルダに移動」  end ifのマクロはどうなったでしょうか??できればですが、メールが来たときに発生するsubプロシージャと、どのタイミングでも実行でき、今まで受信したメールすべてに適用されるsubマクロを分けて作成してもらえるでしょうか?よく深くて申し訳ございません。

  33. To 名前なしさんすみません。マクロを修正しました。ところで、ゅぃさんのマクロが半分解決、とありますが、何を持って半分なのでしょうか?このマクロには振り分けもフォルダ作成の機能もありますが。(Application_NewMailEx で受信時の振り分け、MoveBySender マクロで任意のタイミングでの振り分けができます。)また、「名前なし」さんのご要望はさらにいろいろと機能が必要そうなので、ゅぃさんのマクロとは別に作成したいと思います。もしそのマクロで問題や追加の要望があるようでしたら、この記事ではなくそちらの記事のコメントでご要望を書き込んで下さい。

  34. OUTLOOK2002を使っています。開発者ではないのですが、メール送信で困っています。どうかお返事お願いいたします。新規作成で宛先にhoge@example.comと入力し送信し、成功しました。送信済みアイテムにこのメールが入っています。しかし、送信済みアイテムの宛先には、シングルクォーテーションで囲まれた\’hoge@example.com\’と表示されています。これをワンクリックすると、最初のシングルクォーテーションから最後まで全部反転して選択状態になります。右クリックでコピーを選択し、再度新規作成メールで宛先欄に貼り付けます。名前の確認ボタンを押すと、\’hoge@example.com\'<\’hoge@example.com\’>となります。送信しますと、サーバから5.1.2エラーが送られてきます。なので疑問が出てきました。そもそも、シングルクォーテーションで囲まれたメールは遅れないそうなのですが、どうして名前の確認でOKになってしまうのでしょうか?その後連絡先に追加とするとメールアドレスにすでにシングルクォーテーションがくっついているのでずっと間違ったままになります。どうして、送信済みアイテムにシングルクオーテーションつけてるのでしょうか?表示名のつもりでつけてるかもしれませんが、メールアドレスってわかってないのでしょうか?どういった操作をすれば送信できないという状況を回避できますでしょうか。よろしくお願いいたします。

  35. こんにちは、ご無沙汰しています。1つ教えてください。携帯に送りたいんですけど、相手のアドレスが abc.@docomo.ne.jp と@の前に"."があります。Outlook2007だと「以下の受信者にメールを配信できません: \’abc.@docomo.ne.jp\’ 2010/04/02 23:57 無効な受信者」となってしまい、送ることが出来ないようです。このチェックを外すことは出来ないのでしょうか?よろしくお願いいたします。

  36. To 名前なしさんご要望の動作となるマクロを http://outlooklab.spaces.live.com/blog/cns!9D7EA61EC7DAA750!2461.entry として公開しました。こちらで問題ないかご確認ください。To yoshie さんOutlook 2007 でもメールアドレスだけを指定するとシングル クォーテーションでくくられるのですが、Outlook 2007 でコピーした場合にはご質問のような現象は発生しないので、Outlook 2002 の不具合かもしれません。To すけけんさん@ の前の文字列を "" でくくると送信できると思います。たとえば、abc.@docomo.ne.jp なら "abc."@docomo.ne.jp というように。なお、このようなアドレスは本来不正なアドレスであるため、アドレスの方を修正していただいた方がよいと思います。詳細は http://outlooklab.spaces.live.com/blog/cns!9D7EA61EC7DAA750!179.entry をご覧ください。

  37. こんにちは。できました…。よかった…。せっかく教えてもらった携帯のアドレスなんで、大事にします(笑。ありがとうございました。

  38. 返事ありがとうございました。不具合ですか・・・ なんとか間違えないようにユーザ全員に指導したいと思います。

  39. To Yoshie さんOutlook 2002 でも試してみましたが、普通の手順では発生しませんでした。もしかして、以下のような手順でしょうか?1. 送信済みアイテムの宛先のアドレスをコピーする。2. 新規作成メッセージを開く。3. [宛先] ボタンまたは [ツール]-[アドレス帳] をクリックする。4. 表示されたアドレス帳のダイアログの宛先フィールドにアドレスを貼り付ける。5. アドレス帳のダイアログを閉じる。6. 名前の確認を実行する。この手順だと Outlook 2007 でも発生します。もともと [宛先] ボタンやアドレス帳をクリックして表示される宛先などのフィールドは、アドレス帳から選択したエントリが挿入されることを前提としており、ユーザーがアドレスを直接入力することは考慮されていないようです。そのため、本来であれば名前解決された宛先をコピーする際には "宛先オブジェクト" としてコピーできるはずなのですが、アドレス帳のダイアログにコピーした場合は表示名だけがコピーされるという動作になってしまいます。したがって、送信済みアイテムなどの宛先をコピーする際には、アドレス帳を表示するのではなく、新規作成メッセージの画面の [宛先] や [Cc] のボタンの右にあるテキスト フィールドに直接貼り付けしてください。

  40. To 0123 さんブログに書き込まれたコメントはまとめて確認する UI があるので、そちらのコメントも見ています。先ほど追加しました。すぐにお返事ができなくて申し訳ありませんが、毎日書き込みできるわけではないので、なにとぞご了承ください。

  41. 以前、CDOでの作成を断念して、VB.NET2008とOutlook2003(Microsoft Outlook 11.0 Object Library)で再構築をしていますが、まったく進みません。アプリケーションの流れは、このようになります。1.Exchangeにログイン2.パブリックフォルダを巡回3.投稿ファイルをローカルのHDDに保存4.2~3を繰り返しすべてのデータをHDDに保存サンプロコードをいろいろ探しましたが、見つかりません。適度なサンプルなど御座いましたらもう一度ご教授願います。

  42. To 正和さん以前のコメントではパブリック フォルダにアクセスするところまではできていたように見受けられるのですが、どのようなところで問題が発生しているのでしょうか?正和さんがしたいことすべてをまとめて実装したようなサンプルを作ることもできなくは無いですが、その場合、考慮しなければならないことがいくつかあります。例えば、・ Visual Studio は Visual Studio Tools for Office が含まれている Edition か?・ Exchange にログオンするプロファイルは作成済みと考えてよいか?・ サーバーとクライアントの両方が日本語版と考えてよいか?・ パブリック フォルダ階層のすべてを保存するのか?・ ローカルに保存する際のパスはパブリック フォルダの階層を維持すべきか?・ 保存する際のファイル名の命名規則はどうするのか? (例えば、件名をそのままファイル名にする場合に重複したらどうするのか?)・ 保存する際のパスやファイル名が OS の制限 (260 文字) を超える場合、単純に超える部分を削除するだけでよいのか?・ 保存する際のファイル形式は MSG 形式でよいのか? それとも Outlook を使用せずに開けるフォーマットにしなければならないのか?・ MSG 形式で保存しない場合、添付ファイルや埋め込みオブジェクトはどうするか?・ パブリック フォルダには投稿アイテムだけが存在するのか? それとも予定や連絡先、ファイルの直接投稿などが混在するのか?などなど。実際に作り始めたらもっといろいろ出てくるでしょう。なので、可能であれば、問題が発生している点について具体的に教えていただけないでしょうか?

  43. 受信トレイのなかにフォルダのメールをすべて受信トレイに移したいんですがそういうVBAを教えてください。手動でもいいのですが、VBAの勉強もしたいので、よろしくです

  44. To mmmmm さん「受信トレイのなかにフォルダのメールをすべて受信トレイに移したい」ということですが、たとえば受信トレイに A、B、C というフォルダがあった場合に、それらすべてのフォルダのメールを受信トレイに移動したい、ということでしょうか。であれば、以下のようなマクロになります。Public Sub MoveItemsInSubFolders() Dim fldInbox Dim fldSub Dim i Set fldInbox = Session.GetDefaultFolder(olFolderInbox) For Each fldSub In fldInbox.SubFolders For i = fldSub.Items.Count To 1 Step -1 fldSub.Items(i).Move fldInbox Next NextEnd Sub

  45. Sub MoveItemsInSubFolders()Dim fldInboxDim fldSubDim iSet fldInbox = Session.GetDefaultFolder(olFolderInbox)For Each fldSub In fldInbox.SubFoldersFor i = fldSub.Items.Count To 1 Step -1fldSub.Items(i).Move fldInboxNextNextEnd SubにおいてFor Each fldSub In fldInbox.SubFoldersがエラーでした fldSub ="empty"とのこと

  46. To mmmmmさん失礼しました。fldInbox.Subfolders は fldInbox.Folders の間違いです。ところで、このマクロでは受信トレイ直下のフォルダのアイテムしか受信トレイに移動しませんが、もしかして http://outlooklab.spaces.live.com/blog/cns!9D7EA61EC7DAA750!2461.entry のマクロの「その他」の下に作成されたフォルダのアイテムを移動しようとしていますか? だとすると、このマクロでは意味を成しませんが。また、その場合、アイテムを移動して空になったフォルダは自動的に削除されたほうが良いのでは?もう少し実現したいことを具体的かつ詳細に書いていただければ、より適切なマクロを提示できるのですが…

  47. To MillefeuilleさんCDOではできていましたが、「Microsoft Outlook 11.0 Object Library」で作り直そうとしたら、パブリックフォルダのアクセス自体からつまづいています。問題点 ・ パブリックフォルダのアクセス方法 ・ フォルダの巡回(階層あり) ・ ファイルの取得と保存と基本的なところで手が止まっています。確かに作り始めたら色々と問題が発生するかもしれませんが、基本がクリアできなければ先に進めなくて困っています。・ Visual Studio は Visual Studio Tools for Office が含まれている Edition か?  → Visual Studio 2008 Professional(Visual Studio Tools for Officeを含む)・ Exchange にログオンするプロファイルは作成済みと考えてよいか?  → プロファイルは作成済みです。・ サーバーとクライアントの両方が日本語版と考えてよいか?  → サーバ,クライアント共に日本語版です。・ パブリック フォルダ階層のすべてを保存するのか?  → 階層すべてを保存します。・ ローカルに保存する際のパスはパブリック フォルダの階層を維持すべきか?  → パブリックフォルダの階層を維持します。・ 保存する際のファイル名の命名規則はどうするのか? (例えば、件名をそのままファイル名にする場合に重複したらどうするのか?)  → 保存するファイル名は、「投稿日_件名」を予定しています。・ 保存する際のパスやファイル名が OS の制限 (260 文字) を超える場合、単純に超える部分を削除するだけでよいのか?  → OSの制限を超える場合は、超える部分移行を削除します。・ 保存する際のファイル形式は MSG 形式でよいのか? それとも Outlook を使用せずに開けるフォーマットにしなければならないのか?  → 保存するファイル形式は、オリジナルを忠実に保存(MSG→MSG,XLS→XLSなど)・ MSG 形式で保存しない場合、添付ファイルや埋め込みオブジェクトはどうするか?  → オリジナルを忠実に保存させるので、大丈夫だと思います。・ パブリック フォルダには投稿アイテムだけが存在するのか? それとも予定や連絡先、ファイルの直接投稿などが混在するのか?  → 投稿アイテムのみ(ファイルの直接投稿あり)です。(予定や連絡先は無視します。)

  48. すみません。ちなみに名前はかわっていますが、hy0123と私は同一人物です。いわなくてもわかるとおもいますが、一応受信トレイの中の階層フォルダにあるすべてのメールを受信トレイに移動し、受信トレイ以外の階層フォルダのすべてを削除するマクロをおねがいしたい

  49. To 正和さんパブリック フォルダには NameSpace オブジェクトの Folders プロパティで Name が "パブリック フォルダ" となっているものを探すことでアクセスできます。フォルダの巡回も、取得したフォルダからさらに Folders プロパティでサブフォルダを取得、という処理を再帰的に実行することで可能です。アイテムはフォルダの Items で取得し、取得したアイテムの SaveAs メソッドで保存します。To mmmmm さんVBA の勉強もされたいということでしたので、まずはヒントだけ。受信トレイは Session オブジェクトの GetDefaultFolder メソッドで olFolderInbox を指定すると取得できます。そのサブフォルダは Folders プロパティ、サブフォルダに含まれているアイテムは Items プロパティで取得可能です。取得した Item の Move メソッドで受信トレイのオブジェクトを指定すると受信トレイに移動できます。なお、Items に含まれるアイテムを移動または削除する場合、頭から実行するとすべてのアイテムを処理することができないので、For i=Items.Count To 1 Step -1 により最後のアイテムから順に処理します。アイテムを全部移動した後、Folder オブジェクトの Delete メソッドで削除ができます。

  50. それは難しい汗私はwordVBAやexcelVBA、powerpointVBAを学んでおりましたのでそれぞれの癖がついおり、outlookの癖にはなれるのに時間がかかりそうです。階層フォルダは回帰関数などを用いればフォルダの中のフォルダの中のフォルダ・・・・のフォルダの中のアイテムまで辿り着けなくもない気がするのですが、回帰ではうまくいきません答えを教えてもらって学ぶタイプなので、解説を踏まえ、解答を教えていただけないでしょうか?

  51. To Millefeuilleさんありがとうございます。・ パブリックフォルダのアクセス方法・ フォルダの巡回(階層あり)まではできました。あとは、「アイテムはフォルダの Items で取得し、取得したアイテムの SaveAs メソッドで保存します。」という部分です。この部分を、ソースコード教えていただけるとありがたいです。ここさえできれば、細かな問題点は作りこみなのでできると思います。

  52. To mmmmm さんご要望の動作をするマクロをコメントで記述すると見づらいと思うので、別途記事にします。To 正和さんhttp://outlooklab.spaces.live.com/blog/cns!9D7EA61EC7DAA750!2223.entry に受信トレイのメッセージをすべてローカルに保存するサンプルがありますので、メッセージの保存方法についてはこちらを参考にしてみてください。

  53. To Millefeuilleさんアイテムの取得&保存ができるようになりました。ただ、MSG形式は開けますが、xls,doc,pdfなどファイルは形式が違うと言われ開けません。(拡張子をMSGにした場合は、開けます。)アイテムをオリジナルに忠実に判別&保存する方法を教えてください。あと、教えていただいたソースで「strFileName = Format(objItem.ReceivedTime, "yyyymmdd_hhmm_") & objItem.Subject」の「objItem.ReceivedTime」で、例外が発生して取得できません。受信日時をファイルの作成日にセットしたいのですが、できないのでしょうか?(マクロとしてテストした時にはできましたが、VB.NET上からだと例外が発生します。)

  54. こんにちは、初めて投稿させて頂きますyamauchiと申します。他でも質問させて頂いているのですが回答頂けておりませんのでご相談させて下さい。現在WINXPPROにてOUTLOOK2003を使用しております。マクロセキュリティの変更を行おうとツール→マクロ→セキュリティと選択したところ何の反応もございません。併せてマクロ・VisualBasicEditorも同様の症状となっております。ツール→マクロ以外の全ての項目は反応があるのですが、このツール→マクロ内のみ反応が無い状態です。http://questionbox.jp.msn.com/qa5822861.html何か心当たり等ございましたらお教え頂ければ幸いです。

  55. To 正和さんPF に直接投稿したファイルは、Outlook では DocumentItem になりますが、このオブジェクトから実際に投稿されたファイルにアクセスするには Attachments プロパティを使用します。例えば、oDocItem という変数に直接投稿したファイルのアイテムが格納されている場合、これを C:\\temp\\aaa.doc として保存するには以下のようにします。oDocItem.Attachments(1).SaveAsFile("C:\\temp\\aaa.doc")また、VB.NET の Format で例外が発生する原因はおそらく前述の DocumentItem が ReceivedTime というプロパティを持たないためと思われます。VBA マクロと同様に ReceivedTime の取得で例外が発生したら LastModificationTime を使用するようなコードにしてください。VB.NET では以下のようなコードになります。Try strFileName = Format(objItem.ReceivedTime, "yyyyMMdd_hhmm_") & objItem.SubjectCatch strFileName = Format(objItem.LastModificationTime, "yyyyMMdd_hhmm_") & objItem.SubjectEnd TryTo yamauchi さんOutlook の VBA は COM アドインとして実装されています。そのため、この COM アドインが何らかの理由でロードに失敗するような場合、マクロのメニューが反応しなくなります。まず、以下の手順でマクロの VBA が無効になっていないか確認してみてください。1. [ヘルプ]-[バージョン情報] をクリックします。2. [使用できないアイテム] をクリックします。3. リストに [Microsoft VBA for Outlook Addin] が存在する場合、それを選択して [有効にする] をクリックします。上記の手順で VBA for Outlook が存在しない場合、VBA の DLL が壊れているか削除されているのかもしれません。その場合は Outlook を再インストールしてください。To mmmmm さんご要望のマクロを http://outlooklab.spaces.live.com/blog/cns!9D7EA61EC7DAA750!2897.entry で公開しました。

  56. To mmmmmさんOffice 2010 になっても VBA の文法は変わらないはずです。ただ、オブジェクト モデルには若干変更があるようです。すでに変更点が以下の通り公開されています。Outlook <http://msdn.microsoft.com/en-us/library/ee836187(v=office.14).aspx>Word <http://msdn.microsoft.com/en-us/library/ee836187(v=office.14).aspx>Excel <http://msdn.microsoft.com/en-us/library/ee836187(v=office.14).aspx>

  57. To Millefeuilleさんご回答ありがとうございます。Millefeuilleさんのおかげで何とか形になりつつあります。あと、パブリックフォルダに投稿されたアイテムがMSG 形式と直接投稿されたファイルと混在しています。Attachments プロパティで取得したら、MSG 形式の添付ファイルのみを保存してしまいました。ファイルほ取得&保存する前にMSG 形式と直接投稿を判別する方法はありますか?

  58. To 正和さん直接投稿のファイルと投稿アイテムではアイテムのクラスが異なります。そのため、TryCast で DocumentItem にキャストして成功すれば直接投稿のファイル、そうでなければ投稿アイテムという判断が可能です。コードにすると以下のような感じです。Dim objDocItem As DocumentItemobjDocItem = TryCast(objItem, DocumentItem)If objDocItem IsNot Nothing ThenobjDocItem.Attachments(1).SaveAsFile(strFileName)ElseobjItem.SaveAs(strFileName)End If

  59. Millefeuille様お礼が遅くなりまして申し訳ございませんが、頂いた内容通りに設定したところ無事に治りました。ありがとうございました。yamauchi

  60. To Millefeuilleさん色々とご教授ありがとうございました。無事、完成しました。参考までに、プログラム中からExchangeにアクセスする場合(Exchange にログオンするプロファイルを作成していない場合)はどのようにコーディングすればよろしいのでしょうか?

  61. To 正和さんプロファイルを作成していない環境では、Outlook Object Model を使用する前にプロファイルを作成しなければなりません。プロファイルの作成は Extended MAPI を使用することで可能ではありますが、非常に手間がかかりますし、サンプルコードなどもほとんどありません。また、Extended MAPI は .NET では使用できず、C++ でコーディングする必要があります。それでもプログラムで作成したいということであれば、http://msdn.microsoft.com/en-us/library/cc842394.aspx のあたりを参考にしてみてください。

  62. To Millefeuilleさんご教授ありがとうございました。プロファイルさえ作れば動きますので、プログラム化まではやめておきます。

  63. 初めて使わせていただきます。投稿方法間違っていたら申し訳ありません。OUTLOOKのメール仕分けについて質問します。サーバーにあるメールを個人フォルダーに入れる場合に仕分けを行っています。条件を幾つか作り、先ず、自分宛の場合には、Aフォルダーに、次に〇〇グループ名で来ている場合にはBフォルダーに、××グループで来ている場合はCフォルダーへ…としているつもりなのですが、何故か一つのメールが複数のフォルダーにコピーされて保存されます。やりたい事は「一つのメールはどこか一つのフォルダーに保存」なのですがどのような設定にすればいいのでしょう?

  64. To 名前なしさん複数の条件に一致するメールを受信した場合、ルールに対する処理で [ルールの処理を中止する] が設定されていない限り、一致するすべてのルールが実行されます。したがって、「一つのメールはどこか一つのフォルダーに保存」したいのであれば、それぞれのルールに対する処理で [ルールの処理を中止する] をオンにしてください。

  65. 初めて利用させていただきます。配布リストのメンバーの並び順です。Outlook2007を使っていますが配布リストに追加したメンバーの並び順はメールアドレス順(数字→アルファベット順)になっているみたいですがこれを任意(たとえば役職順)に固定することはできましたでしょうか?たしか、受信者側では配布リストは展開された状態で表示されていたかと。不確かな記憶なのですがJISコード順での並びだったような記憶がありFAQが見つからずご相談させていただきました。

  66. To 名前なしさん配布リストが展開される際の並び順は表示名 (表示名が無ければメールアドレス) のシフト JIS コード順になります。役職順にしたいのであれば、表示名の前に数字などをつける必要があります。

  67. To Taichiさんまず、Outlook Connector には SMTP ポートの設定は無いため、おそらく Outlook Connector による Hotmail への接続と POP/SMTP による Hotmail の接続の両方が設定に追加されているのだと思われます。Outlook Connector がインストールされているのであれば、POP/SMTP の設定は不要なだけでなく混乱の元になるので、削除してください。もしかすると、追加したアカウントの情報が後々問題になるかもしれないので、プロファイルを新規に作り直したほうがよいかもしれません。http://support.microsoft.com/kb/881356/ja の手順でプロファイルを追加し、電子メールのアカウントの追加の際には "Microsoft Outlook Hotmail Connector" を追加してください。

  68. OUTLOOK2007を使用しています。 ツール>マクロ>VBA を選択しても、ピクリとも動きません。まるで機能が無いかのような動作です。どこか、設定が来るって、VBAを動かなくしたでしょうか?

  69. Millefeuil​leさん、レスありがとうございます。Outlookメンバーのならび順の件です。ギモンなのですがたとえば、ならび順を設定して外部へ送信(Outlook以外のメーラ使用)した場合、このならび順って送信先で保持されるのでしょうか?配布リスト内のメンバーは展開された状態で、表示されていたような記憶が。

  70. To Taichi さん私としてはメールだけでなくカレンダーや連絡先も同期できる Outlook がおすすめなのですが、どうしても Outlook Express が良いということであれば、http://outlooklab.spaces.live.com/blog/cns!9D7EA61EC7DAA750!1341.entry に設定方法をまとめてありますので、参考にしてみてください。To Hanafusa atsushiさんVBA はオプションのコンポーネントです。Office 2007 のセットアップで Microsoft Office Outlook の下の [Visual Basic スクリプト サポート] がインストールされているかを確認してみてください。もし、すでにインストールされているのに使えないようであれば、一旦削除してから改めて追加してみてください。To m さんご指摘の通り、配布リストは送信前に展開されるので、送信先ではメンバーが展開されて個別に表示されます。そして、配布リストが展開された後の並び順は送信先でもそのままのはずです。

  71. こんにちは。先月よりOutlook2010RTMを使い始めました。アカウント作成の際、データファイルの設定があるのですが、デフォルトがアカウント単位のようになっています。今まで”Outlook.dat”1個だったと思うのですが、アカウント単位に分けることが便利というか良いのでしょうか?とりあえず、今まで通り”Outlook.dat”にしていますけど…。

  72. こんにちは。続けてもう1つお願いします。今度はOutlook2007です(笑。HotmailへPOPアクセスしています。アカウント複数あるのですが、全てにメールのコピーを14日間残すの設定をしてあります。で、Hotmail側のメールの件数が増えてくると、Outlookでの送受信の際、すでに受信してあるメールを再度取得してきたりします。昨日は、Hotmail側メールが70件を超えたあたりから頻発しました。本来一度受信したメールはとってこないと思うのですが、何か設定がおかしいのでしょうか? なので今は、受信と同時にサーバーから削除する用にしています。立て続けにメール70件を複数回受信すると、さすがにへこみます…(笑。

  73. おせわになっております。Outlook 2003を勤務先(個人的には自宅でも)使用しています。会社の同僚各人が予定表アイテムと仕事アイテムの違いをどのように考えているかわかりませんが、自分のメールボックスには自分の(主観的な)区分とは関係なく入ってきます。自分の直感通りに仕分けしてくれるのが理想ですが、自分の直感を合理的に説明することが困難なのでせめて(必要に応じて)予定表アイテムの中に仕事アイテムを表示させる方法はないでしょうかたとえば、1.仕事アイテムが終了になるまでしつこく予定表の隅?でアピールし続ける2.(モニタ上でも)予定表アイテムの隣に仕事アイテムを表示させるよろしくご教示ください

  74. To すけけんさんOutlook 2010 の件ですが、おそらく Outlook 2010 で Exchange のアカウントが複数追加可能になったことに起因していると考えられます。Windows Live メールなどでも、アカウントごとにフォルダツリーを作るようになっているので、今後は基本的にアカウントごとにツリーを作る、というのがデフォルトになるのかもしれません。また、Outlook 2007 で Hotmail を使うのであれば、POP ではなく Hotmail Connector を使った方がよいでしょう。Hotmail Connector なら受信トレイ以外のフォルダもダウンロードできますし、未読・既読の情報もサーバーとクライアントで同期できます。To Tatsuhiko さん予定表のビューで仕事リストを表示させるのでは不十分なのでしょうか?仕事リストの表示の仕方は http://office.microsoft.com/ja-jp/outlook/HP011750201041.aspx にあります。

  75. 初めまして。いつも大変参考になっています。基本的なことなのですが、Outlook2007の編集画面(Word2007の機能限定版?)でカラムを表示させることは可能でしょうか。それから、自動的に送付時に指定した文字で折り返して(改行して)送る機能がありますが、事前にどこで折りかえされるかがわからないので、使えません。自分で指定した文字数で自動で改行を入れて折り返すマクロは難しいでしょうか。

  76. Outlookの会議召集メール・承諾についての質問です。何かご存知のことがありましたら、教えていただけないでしょうか。●社内では、Exchange(2007)とOutlook 2003 (or 2007)をつかっています。●会議召集のメールをだすと  ①招待された人が承諾もしていないのに、予定表にはいってしまう。また、そのメールすら受信していない(但し、承諾したことになっているので、削除済みフォルダーにははいっていす)  ②承諾の返信は1回しか送っていないのに、会議主催者のほうへは2通メールが届き、カレンダー(予定表)には、2件書かれる(まったく同じタイムスタンプで)また重複して書かれた予定を1件消してしまうと、2件とも消えてしまう場合がある毎回ではありませんが、上記のようなパターンになることがたびたびあります。PCでOutlookを使用している以外に、BlackBerry(BESとともに)も利用していますが、それも関係しているのでしょうか?それともMS社から何か、バグとしてあがっているのでしょうか?

  77. To Masakazuさんカラムというのが何を意味しているのかがちょっとわからないのですが、ルーラー (ウィンドウの上端に出る目盛) のことでしょうか?であれば、スクロールバーの上端のアイコンをクリックすると表示されます。また、指定した文字数での折り返しのマクロを作るのは、どこまでやるかによって難易度が変わってきます。たとえば、全角・半角の区別をどうするとか、禁則処理をどうするかとか、引用して > がついている行の折り返しはどうするかとか。意図しない改行が困るのであれば、勝手に改行されないように適宜改行を入れたほうがよいかもしれません。マクロを組んだとしても、結局機械的な改行となるので、見づらさはあまり変わらないように思います。To 東児さんExchange Server 2007 ではメールボックスの AutomateProcessing の設定が AutoAccept になっていると、会議出席依頼には自動的に承諾する動作をします。まずはこちらの設定をご確認ください。また、承諾のメールが 2 通送信されるというような現象はちょっと聞いたことがありませんが、BlackBerry を使っている場合には CDO のライブラリを最新のものにする必要があります。おそらく現時点での最新の CDO のバージョンは http://support.microsoft.com/kb/972077/ja でダウンロード可能な修正プログラムと思われますので、こちらを適用してみてください。また、BlackBerry のサーバーでも最新のパッチが適用されているかどうかご確認ください。

  78. 初めまして。メールの仕分けについて質問いたします。バージョンはOutlook2007を勤務先で利用しております。自動仕分けのルールは受信時、または送信時に適用されますが、個人用フォルダに移動したメールを仕分ける事は可能でしょうか。自動仕分けのルールは32KBを超えるルールを保存できないため、自動仕分けを使用せず、かつ自動で仕分けをするにはどうしたらいいかと悩んでおります。何か良い方法がありましたら教えてください。よろしくお願いいたします。

  79. To shimakoさん現時点で自動仕分けのサイズ制限に引っ掛かっているということであれば、自動仕分けは使えないことになるので、マクロで対応することになるでしょう。しかし、マクロで仕分け処理を行うにはそれなりにプログラミングの知識などが必要になります。もしご自分でマクロを作ることができないようであれば、自動仕分けの処理をできるだけまとめたり、個人用フォルダに移動する際には個人用フォルダファイルのパス名を短くしたり、というような工夫をして、なるべく自動仕分けのサイズを抑えるしかないと思われます。http://support.microsoft.com/kb/886616/ja も参考にしてみてください。

  80. こんにちは。宛先の入力候補の表示についておたずねします。OUTLOOK2003SP3で、新規メッセージ作成時に、過去に送受信の経験がある相手先アドレスを、宛先に指定しようとすると、表示名が’’で囲われてドメインが不思議な数字の羅列で表示され、そのまま選択して送信しても、エラーメッセージとなり、相手先に到達しません。例えば日本語で「高橋」と入力すると高橋A子、と高橋A子(ako.takahashi@domain)となるはずなのですが、’高橋A子’(ako.takahashi@294673890)となってしまいます。これはアドレス帳から選択すると発生しません。宛先で入力候補を表示させると発生します。これを回避したいのですが、MSのサポートなどを検索しても答えが発見できません。検索の仕方が悪いのかもしれませんが、足がかりをいただけませんか?お願いします。

  81. こんにちは。アラームの設定について質問があります。アラーム時刻を設定するときに、デフォルトでは『20:00』からスタートするのですが、これを『9:00』に変更することはできないでしょうか。大抵は、その日の朝一番にアラームを出るようにして確認するようにしているのですが初期値が20:00なので、選択し直すのが面倒です。細かいところですいませんがよろしくお願いいたします。

  82. To teru pom さんおそらくニックネームキャッシュと呼ばれる宛先候補を保存する領域に不正なデータが保存されているのでしょう。不正なアドレスとなってしまう文字列を入力して宛先の候補が表示されたら、↓キーでカーソルを移動し、問題の候補を削除してしまってください。To Machida Kazuhiro さんOutlook のフラグで [ユーザー設定] のアラームの既定値は [ツール]-[オプション]-[初期設定]-[予定表オプション] の [稼働日の設定] にある [終了時刻] の 1 時間前になります。こうなっているのは、フラグで [今日] を選択した場合に、業務終了の 1 時間前にアラームが表示できるためと思われます。なお、フラグで [明日] や [今週] などを選択し、それから [アラームの追加] でアラームを設定すると、既定値が [開始時刻] になります。ちょっと手間かもしれませんが、一度 [明日] を選択してフラグを追加してから、[アラームの追加] でアラームの設定を行ってみてください。

  83. ご返答ありがとうございます。なるほど、そういうことなんですね。ありがとうございます。早速試してみます。

  84. Millefeuilleさんメール受信時にSAといサブプロシージャを実行するにはどのようなマクロをくめばよいでしょうか?private sub sample()call SAend subでは手動になってしまいますよね?

  85. To mmmmm さんメールを受信時にマクロを実行する方法には以下の二通りがあります。1. Application_NewMailEx イベントにより実行する。2. MailItem を引数とするプロシージャを定義し、それを自動仕分けのルールで実行する。いずれの方法も、http://outlooklab.spaces.live.com/blog/cns!9D7EA61EC7DAA750!175.entry で紹介していますので、参考にしてみてください。

  86. アクセス2007でMAPIを利用して、受信メールの内容をデータベースに書き込むVBAを作成したのですが、実行時にOutLookが立ち上がっているとOutLookが終了してしまいます  OutLookが終了することなく(OutLookがメールサーバからメール受信しながら)MAPI利用して受信メールを読みだしたいのですが、ご存じの方ご指導願いたいのですがよろしくお願いいたします

  87. 博之です 自己解決することができました VBA上で .QIUT していました これが、OutLookを終了していましたお騒がせいたしました。

  88. Outlook2000を使っています。以前、予定表のビューを「日/週/月」にしているときに、表示を「件名」ではなく「連絡先」にすることはできるでしょうか?という質問をさせていただきました。結論はNOということでしたが、では件名に、その予定の連絡先を転記するマクロはどのようにしたらよいのでしょうか?自分で組もうとしましたがSubjectの変更が反映されずつまっています。ビューに表示されているすべての予定で、機械的に上書きしてしまってよいのですが。よろしくお願いします。

  89. はじめまして。

    職場のOutlook2003で、受信したメールをメモに変換するマクロを使用しています(変換後のメモを携帯電話と同期させています)
    http://soudan1.biglobe.ne.jp/qa5046564.html
    現状では同期前にこのマクロを手動で実行させていますが、これを自動的に実行できないかと考えております。

    実行させたいタイミングとしては、
    1.Outlook起動時
    2.Outlook使用中数時間毎(たとえば4時間ごと等)
    3.Outlook終了時

    です。ご教示いただけましたら幸いです。

    • Outlook の起動時にマクロを実行したい場合は Application_Startup、終了時にマクロを実行したい場合は Application_Quit イベントが使用可能です。
      定期的に実行させるという方法はありませんが、マクロではなく VBScript などで実装すれば、Windows のタスクで定期的に実行させることも可能でしょう。

      ただ、本来は受信したメールをメモに変換したいということですよね?
      であれば、Application_NewMailEx というイベントを使うと、メールを受信したタイミングで直ちにメモに変換することが可能です。
      例えば、以下のような感じになります。

      Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
      Dim objMail
      Dim objNote
      Set objMail = Session.GetItemFromID( EntryIDCollection)
      Set objNote = Application.CreateItem(olNoteItem)
      With objMail
      objNote.Body = .Subject & ” From:” & .SenderName & ” Date:” & .ReceivedTime & vbCrLf & .Body
      End With
      objNote.Save
      End Sub

  90. お返事ありがとうございます。
    ご指摘のとおり、メールを受信したタイミングで直ちにメモに変換したいです。
    ご教示いただいたマクロをApplication_Startupで実行されるようにしておけばリアルタイムで変換できるということでよろしいでしょうか?

    • イベント、というのがわかりづらいのでしょうか…
      イベントはユーザーが実行するものではなく、Outlook が自動的に実行するものとお考えください。
      Outlook はメールを受信すると、自動的に Application_NewMailEx として定義されているプロシージャを実行します。
      つまり、前回提示したマクロをそのまま使えば、受信時にマクロが自動的に実行され、メモに変換されるのです。

  91. お返事ありがとうございます。
    希望通り、メールを受信するたびにメモへ変換がされるようになりました。

    実現して欲が出てきてしまったのですが、

    ・変換するメールは特定のアカウント宛に送られたメールだけにする
    ・変換後、メモの総数が100を超えないよう古いメモから削除する

    という機能を加えるにはどのようにしたらよいでしょうか?

  92. Outlooklab様

    希望通りの動作になりました。大変重宝しております。
    このたびはどうもありがとうございました。

  93. はじめまして。
    会社の都合でメーラーをOUTLOOKEXPRESSからOUTLOOK2003に変更しなくてはならなくなりました。
    OUTLOOKEXPRESSには「次の未開封」というアイコンがあってそれをクリックすると選択しているメールには
    何の変化もなくて、次の未開封メールに移動できていましたが、OUTLOOK2003にはそのような機能がなくて困っています。

    たぶん、簡単な処理でできるんだろうとは思うのですが、本屋さんに行っても今はOUTLOOK2010がほとんどだし、サイトを
    色々探しても見つけることができません。
    シロウトのためそのまま貼り付けて使えるような形でマクロを示していただければ幸いです。

    開封か未開封かで「処理が必要か処理済みか」を判断していたので、とにかく何もしないで次の未開封メールに移動したいだけなのです。
    よろしくお願いします。

    • Outlook 2003 には検索フォルダーという機能があり、検索フォルダーの [未読メール] を開くと、未読のメールのみが表示されます。
      その状態で次のメールをクリックすれば、次の未開封メールを開くことが可能です。
      この機能を使えばマクロを使う必要はないでしょう。

      • 早速のお返事ありがとうございます。
        仰るとおりにすると未開封メールが開封状態になるのでダメなんです。

        メールからメールに次々と移動しながら処理すべきメールは処理したあと開封状態にし
        まだ処理しないで置くメールは何もしないで未開封のまま次の未開封に移動したいのです。
        よろしくお願いします。

      • メールを開いて未開封が開封になるのはOutlook Expressでも同じではないでしょうか?
        もしOutlook Expressではプレビューでメールを表示していたということであれば、Outlook 2003でも閲覧ウィンドウでメールを表示するようにしておき、未読メールの検索フォルダでカーソルキーによりメールの一覧でメールを選択すれば次の未開封メールに移動できるでしょう。

      • OUTLOOKEXPRESSではプレビュー画面で見ておりました。
        会社で色々届くメールの中から「xxxxx承認依頼」というような、あるシステムから自動で届くメールを仕訳ルールにより特定のフォルダに移動しています。
        そのフォルダの中で01~50までの組織コード+受付番号がそれぞれ何十個も順序がバラバラで届きます。
        一方、その承認処理は組織コード01にログインしてその中で受付番号毎に承認処理があります。
        特定のフォルダはこんな感じになります。(それぞれプレビュー画面でメールを見ないとどの組織コードの何番の受付番号かはわかりません)

        ①組織コード01-受付番号080
        ②組織コード05-受付番号085
        ③組織コード06-受付番号087
        ④組織コード01-受付番号092
        ⑤組織コード03-受付番号102
        ⑥組織コード02-受付番号105
        ⑦組織コード05-受付番号112
        ⑧組織コード01-受付番号121
        ⑨組織コード01-受付番号122
        ⑩組織コード01-受付番号123

        組織コード01にログインして①を処理したら次の未開封ボタンで②に移動③も01ではないので次の未開封ボタンで④は組織コード01なので承認処理
        ⑩まで処理して移動したら①④⑧⑨⑩が開封になるので次の未開封ボタンで②に移動、今度は組織コード05があるかないかをチェックしながら最下行のメール
        まで次の未開封で移動する。

        というようなことをしたいので未読メールの検索フォルダでは他のすべての未読メールが出てくるのでダメなのと、開封、未開封がバラバラに混在するなかで
        未開封なら未開封のままにして次の未開封に移りたいのです。

        ダラダラと長文お許しください。

      • ちょっとややこしいフローですね。
        次の未読を表示するというのはマクロでも難しいと思われます。
        組織コードごとにフォルダわけをするなどしたほうがよいかもしれません。

    • 何となくunreadあたりをキーに移動したら簡単にできるのかなと思っていましたが、なるほど、マクロでは難しいですか。
      こちらで難しいのであれば納得です。
      なんとか他の方法でそれらしいことを考えてみます。
      どうもありかどうございました。

  94. 先日「メールを受信するたびにメモに変換して保存するマクロ」を指南していただいた者です。
    現状、タイトルにメールを受信した「年月日 時分秒」が入るようになっていますが、これを「月日 時分」表示にすることは可能でしょうか?
    たびたび申し訳ありませんが、余裕がありましたらご教授ください。
    よろしくお願いいたします。

    • マクロ中の .ReceivedTime を Format(.ReceivedTime,”MM/DD HH:NN”) とすれば可能です。
      元の記事のほうもそのように修正しましたので、ご確認ください。
      また、今度からは変更したいマクロの記事のほうの直接コメントしていただけると、記事を探す手間が省けるので助かります。

  95. はじめまして。是非ご教授頂きたく、投稿させて頂きます。
    [Outlookバージョン]Outlook 2007
    以下の動きがVBAでできないかを考えています。
    ・メール受信者が該当メールを開き(返信/転送などをせず、メールを開いた状態で)、
    ・本文内に配置されたボタンをクリックする
    ・特定のメールアドレスへメールが送信される

    これらの動作を達成するにあたり、メールのデザインフォームを使用し、コマンドボタンを配置。
    スクリプトエディタに下記コードを記述しました。
    Public Sub CommandA_Click()
    Set OL = CreateObject(“Outlook.Application”)
    Set ML = Application.CreateItem(olMailItem)

    ML.To = “abc@abc.co.jp”
    ML.Subject = “テスト”
    ML.Body = “返信メールです”

    ML.Send
    End Sub

    フォームを実行した状態ですと、意図したとおりにメールが送信されるのですが、
    このメール自体を任意のユーザーへ送信し、受信側でボタンをクリックしてもスクリプトが実行されません。

    このメールの目的としては、メール本文に製品使用許諾書の文章を書き、ボタンをクリックすることで承諾と見なすようなフローを描いております。
    (既定の返信/転送ボタンなどは使わずにワンクリックでメールを送信させたいのです)
    その為、このような方法を検討しています。

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

    • メールのフォームに埋め込んだスクリプトを自動的に実行できてしまえば、それを悪用したウィルスが簡単に作れてしまいます。
      そのため、既定では送信したメールに埋め込まれたスクリプトは実行されません。

      フォームのスクリプトを実行するには、事前にそのフォームを受信側で発行し、発行の際に使用したメッセージクラスを設定したメールを送信する必要があります。この場合、送信したメールに含まれるスクリプトではなく、受信側で発行したフォームに含まれるスクリプトが実行されます。
      Exchangeを使用した環境の中であれば、組織フォームに発行したフォームを使ってメールを送信することでワークフローを実装することが可能ですが、受信者は同じExchange組織にいるのでしょうか?

      • 早速の返信ありがとうございます。
        やはり既定の動作なんですね。。

        環境としてはExchange2007を使用しています。また、受信者は同じ組織内に限ります。
        (関係あるか分かりませんが、Outlook自体の設定では”マクロのセキュリティチェックを行わない”が指定されています。)
        大変恐縮ですが、このフローを実装する為の作業内容を詳しくご教授頂けますでしょうか。

      • メールとして送信するフォームのスクリプトを有効にするには、そのフォームを組織フォームライブラリに発行する必要があります。
        そのため、Exchange Server 2007 の場合は下記の URL の手順で組織フォームライブラリ用のフォルダをパブリックフォルダストアに作成します。
        http://technet.microsoft.com/ja-jp/library/cc540468(EXCHG.80).aspx
        そして、現在使っているフォームをフォルダや個人用フォームではなく、組織フォームライブラリに発行します。この時注意が必要な点は、フォームのプロパティの [フォームのレイアウトも送信] をオフにしなければならないということです。これがオンになっていると、組織フォームが使用されず、スクリプトが動作しません。
        なお、Outlook のフォームの開発の詳細については http://msdn.microsoft.com/ja-jp/library/aa155722(v=Office.10).aspx もご覧ください。バージョンは古いですが、フォームによる開発にはほとんど変更はありません。

        ちなみに、マクロのセキュリティ チェックとフォームのスクリプトのセキュリティ チェックは別設定です。
        http://technet.microsoft.com/ja-jp/library/cc179122(office.12).aspx にある、[1 回限りの Outlook フォームでのスクリプトの使用を許可する] をオンにすることで、スクリプトが動作するようになりますが、セキュリティの観点からはお勧めできません。

  96. Outlookに届くメールをiPhoneの携帯アドレスに転送してメールの内容を確認するにはどうしたらよいでしょうか?

    • Outlook には自動仕分けによってメールを自動転送する仕組みがあります。
      しかし、この仕組みは Outlook が起動していなければ働きません。
      もし、Outlook を起動していない間にメールボックスに届いたメールも携帯アドレスに転送したいということであれば、プロバイダの転送サービスなどを使う必要があるでしょう。

      ただ、iPhone で直接そのプロバイダのメールボックスからメールを受信できないのでしょうか?
      Windows Mobile ならプロバイダのメールボックスから直接メールを受信できるので、わざわざ Outlook で転送させる必要はないのですが。

  97. はじめまして。このサイトのおかげで劇的に現在の業務が効率化できそうで、たいへん感謝しております。
    1点、ご教授いただきたいことがあります。
    OUTLOOK2007使用で、ある業務を自動化させようとしていますが、その処理中にカーソルを「待機状態」にしたいと思います。
    その方法をお教えください。
    メール1件を手作業で開いてから、クイックツールバーのボタンにより処理の自動化をさせようとしています。その処理の間には次のメールの処理をさせたくありません。
    よろしくお願いします。

    • Outlook の VBA でカーソルを待機状態にすることはできません。
      ただ、DoEvents を使っている場合を除き、マクロを実行している間は Outlook が他の操作を受け付けないようになっていると思います。
      もし、ハングアップしているように見えるのを防ぎたいということなのであれば、フォームを作成して実行中にはそれを表示するというものをお勧めします。

  98. outlook2007、代理人設定をすると、ツール>オプション>代理人をクリック、outlookがすぐに固まってしまいます。 タスクマネージャで反応なし。
    15-20分ぐらい立っても何にも出てこないですが、なぜこうなるでしょうか

    • おそらく Outlook 2007 が代理人設定で使用する Exchange サーバーの機能へのアクセスが正常にできていないのだと思われます。
      ただ、詳細について調査するにはパケットの採取などが必要になると思われます。
      マイクロソフトのサポート窓口にお問い合わせください。

  99. outlook 2010でメール交信をしています。が、私が発信した内容が総て添付をされてしまいます。
    他人には見られたくない内容です。送信済みファイルから消去をしても駄目です。どうしたら良いのか教えて下さい

    • ちょっと考えられない現象なのですが、すべて添付されるというのはメール本文なのでしょうか?
      それとも、画像ファイルでしょうか?
      もし、画像ファイルということであれば、それは添付されているのではないと思います。
      画像ファイルをダブルクリックして起動されるビューアーには、その画像ファイルの格納されているフォルダーにあるすべての画像ファイルを見ることができるものがありますが、そうしたビューアーで添付ファイルを見ると、添付ファイルが一時的に保存されるフォルダーの画像ファイルも見えることになります。
      そのため、他のファイルまで添付したように錯覚してしまうこともありますが、実際にはそうではありませんのでご安心ください。

  100. はじめまして。現在、VB.NETでExchangeサーバのパブリックフォルダにアクセスして投稿されている内容をSQLServerのDBに格納するアプリを開発しよといています。データ量が膨大です。どんなアクセス方法が適切かご教授願います。

    • Exchange サーバーのバージョンによって使用できる API が変わりますが、最新の 2010 なら Exchange Web Service を使うことになるでしょう。

      • 返信ありがとうございます。
        Exchange Web Service については調べます。
        Exchange Serverは 2003です。
        返信いただく前にMicrosoft.Office.Interop.Outlook
        でパブリックフォルダデータの取得を試みました。

        65番の解答を真似してローカルにファイルとして保存するに
        下記を実行したところSaveAsFileのところはうまく保存できますが、
        SaveAsのところではHRESULT E_FAILがCOMコンポーネントの
        呼び出しから返されました。原因ご教授いただければと思います。
        Dim objDocItem As DocumentItem
        objDocItem = TryCast(objItem, DocumentItem)
        If objDocItem IsNot Nothing Then
        objDocItem.Attachments(1).SaveAsFile(strFileName)
        Else
        objItem.SaveAs(strFileName)
        End If

      • E_FAIL だけではどのようなエラーかを特定することは困難です。
        エラーが発生する際に strFileName に格納されている文字列はファイル名として正しいものでしょうか?
        また、実際にそのファイル名で Msg ファイルとして保存できますでしょうか?

  101. Msg ファイルとして保存できないです。
    targetItem.SaveAs(“C:\temp\a.msg”)個所でエラーになります。
    エラーHRESULT E_FAILがCOMコンポーネントの呼び出しから返されました。
    場所 Microsort.VisualBasic.COmplierServicies.LateBinding.InternalLateCall
    宣言が悪いかどこが悪いか見当つきません。ご教授よろしくお願いいたします。

    Imports Microsoft.Office.Interop

    Dim objOutlook As Outlook._Application = New Outlook.Application()
    Dim objNS As Outlook._NameSpace = objOutlook.Session
    Dim objFolders As Outlook._Folders
    Dim objItems As Outlook._Items
    Dim objDocItem As Outlook.DocumentItem
    Dim subFolderNm As String

    objFolders = objNS.GetDefaultFolder(Outlook.OlDefaultFolders.olPublicFoldersAllPublicFolders).Folders

    For Each targetFolder In objFolders
    subFolderNm = targetFolder.Name
    If subFolderNm = “電子掲示板” Then
    objItems = targetFolder.Items
    For Each targetItem In objItems
    objDocItem = TryCast(targetItem, Outlook.DocumentItem)
    If objDocItem IsNot Nothing Then
    objDocItem.Attachments(1).SaveAsFile(“C:\tempDoc\” + objDocItem.Subject)
    Else
    targetItem.SaveAs(“C:\temp\a.msg”)
    End If
    Next
    End If
    Next

      • 同じエラーになります。
        targetItem.SaveAs(“C:\temp\a.msg”, Outlook.OlSaveAsType.olMSG)も
        同じエラーです。
        DocumentItemにキャストできないですが、
        targetItem.SubjectでExcelのファイル名が取得できます。
        ちなみにCreationTime、EntryIDなどほかのプロパティの取得はエラーになります。
        ご教授よろしくお願いいたします。

  102. VB.NETでパブリックフォルダより(Outlook._Items)取得したアイテムを
    すべてのアイテムにキャストを試みても全部nothingです。
    Outlook.MailItem,
    Outlook.PostItem,
    Outlook.ContactItem,
    Outlook.DocumentItem,
    Outlook.JournalItem,
    Outlook.MeetingItem,
    Outlook.NoteItem,
    Outlook.AppointmentItem,
    Outlook.TaskItem
    アイテムのタイプの判断方法教えていだたけませんか。

  103. パブリックフォルダのItem.HTMLBodyプロパティで本文データを取得するとき、
    本文に貼り付けた表とかピクチャ (メタファイル)は取得できないです。
    ファイルとして保存しようとしてもエラーが発生します。
    取得方法を教えていただけませんか。

  104. いつもありがとうございます。
    vb.netでパブリックフォルダのItem情報を取得するとき、
    最後に更新したuserを取得する方法をご教授いただきたいです。

  105. パブリックフォルダよりItemを取得する時、取得中のItemを判別できる固有のIDがありますでしょうか。
    エラーが発生してる時、ログに出力するつもりにいてます。
    ご教授よろしくお願いいたします。

  106. outlook 2010で重複連絡先フォルダの削除方法を教えて下さい
    メールでメニューのアドレス帳を表示してアドレスを選択するようにしようとしています。
    整理のため会社毎に仕分けしようとしているのですが、重複する会社のフォルダができてしまったのですが削除する方法がわからずに困っています。

    • 通常であれば、連絡先フォルダー自体を削除すればアドレス帳からも削除されます。
      フォルダーを削除してもアドレス帳に残っているということでしょうか?
      それともフォルダーが削除できない理由があるのでしょうか?

  107. パブリックフォルダの移行のために全アイテムリストを作成していて、DocumentItemの投稿者が取得できなくて困っています。
    Outolook 2010では投稿者が表示されているにもかかわらず、Propertiesにはそれらしいものがないようです。
    どうやって取得すればいいのでしょうか?

    • Outlook の UI 上は投稿者というプロパティはなく、「差出人」、「実行者」、「作成者」、「最終更新者」というものならありますが、どの値を取得したいのでしょうか?

      • ありがとうございます。
        MailItemやPostItemにあるSenderName(差出人)に相当する値を取得したいのです。

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中