• ベストアンサー

OutLook本文を、VBAでExcelに落としたい

こんにちは。 先日、こちらのサイトのVisualBasicのカテゴリで質問したのですが、 1件アドバイスが入ったのに、表示されず、削除も出来ず 困ってしまったので、もう一度質問させていただきます。 タイトルの通りなのですが、 ExcelVBAで、OutLookの受信トレイの「未読」の件名、本文、受信時間を Excelに一覧として落としたいのです。 いろいろサイトを見たりして、参考サイトで見つけたコードを 使って、思うとおりにカスタマイズしてもみたのですが、 どうしても思っていた通りには出来ませんでした。 上記やりたいことが出来るコード、参考サイトをご教示願えませんか? ちなみに、OSはWindows2002です。 どうぞよろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

#1 です。 こちらとしては、どなたが解決してもかまいませんので、ずるいようですが、#2,#3 で書かれているname_mm_ok 様のコードで様子を見させていただきます。 なお、 >セキュリティ関連のダイアログが開き、アクセス可能な時間を選択 >する必要がある事です。 >この件に関しては、私のレベルでは回避不可能でした。 Faq ですが、一応、セキュリティレベルなので、Outlook では、解決は出来ないというのが、一般的な回答です。他は知りません。 なお、 .UnRead = True で、私の回答は、逆に書いてしまいました。間違えました。

hyorono
質問者

お礼

再度のアドバイスありがとうございます!! せっかくアドバイス頂いたのに、お礼が遅くなってしまってごめんなさい!!! ちょっと別件で忙しくなってしまい、こちらは保留となっておりました。 お二人に頂いたアドバイスを元に、頑張ってやってみます。 まだ保留状態で、実動できる状態ではないので、結果報告が出来ないのですが これ以上遅くなってしまうと申し訳ないので、一旦ここで閉じようと思います。 今後はもっと勉強して、今度は自分が誰かの質問に答えられるようになりたいと思います。 本当にありがとうございました!!! またよろしければ、ご教示くださいね。 お礼に関しては、まだ結果が出ていない状態なので 勝手ですが順番に付けさせてください。 失礼でしたら申し訳ございません。

その他の回答 (3)

回答No.3

これが、OfficeXP(2002)のOutlook、Excelで動作したコードです。 このコードで回避できないのは、メール本文にアクセスした際、 セキュリティ関連のダイアログが開き、アクセス可能な時間を選択 する必要がある事です。 この件に関しては、私のレベルでは回避不可能でした。 Option Explicit 'Excelアプリケーション内にアクティブになっているワークシートが '存在する事を前提に作りました。 Private Sub GetRcvMailInfo() Dim objOApp As Object 'Outlook.Application Dim objNameSpace As Object 'Outlook.NameSpace Dim objDFld As Object 'Outlook.MAPIFolder Dim objFld As Object 'Outlook.MAPIFolder Dim objItem As Object 'Outlook.MailItem Dim objEApp As Object 'Excel.Application Dim objASht As Object 'Excel.Worksheet Dim i As Long '複数のデータフォルダを使用している場合 Const DATAFOLDER As String = "業務用フォルダ" '抽出対象のフォルダ名称を指定 Const SUBFOLDER As String = "受信トレイ" Set objOApp = CreateObject("Outlook.Application") Set objNameSpace = objOApp.GetNamespace("MAPI") For Each objDFld In objNameSpace.Folders Debug.Print objDFld.Name If objDFld.Name = DATAFOLDER Then For Each objFld In objDFld.Folders Debug.Print objFld.Name If objFld.Name = SUBFOLDER Then Exit For End If Next objFld 'objFld.Name = SUBFOLDER の判定でTrueとなったかを判定 If Not objFld Is Nothing Then i = 1 Set objEApp = Excel.Application objEApp.ScreenUpdating = False 'Excelの更新を一時的に停止 Set objASht = objEApp.ActiveSheet For Each objItem In objFld.Items If objItem.UnRead = True Then objASht.Cells(i, 1) = objItem.Subject objASht.Cells(i, 2) = objItem.Body objASht.Cells(i, 3) = objItem.ReceivedTime i = i + 1 End If Next objItem objEApp.ScreenUpdating = True 'Excelの更新を再開 Exit For End If End If Next objDFld objOApp.Quit Set objASht = Nothing Set objEApp = Nothing Set objASht = Nothing Set objItem = Nothing Set objFld = Nothing Set objDFld = Nothing Set objNameSpace = Nothing Set objOApp = Nothing End Sub

hyorono
質問者

お礼

アドバイスありがとうございます!! せっかくアドバイスいただいたのに、お礼が遅くなってしまい 本当に申し訳ございません!!! ちょっと別件で忙しくなってしまい、こちらはいったん保留となっておりました。 詳しいコードをありがとうございます。 まだ、実動できてはいないのですが このコードを解読して、頑張ってみたいと思います。 もっと勉強して、私も誰かの質問に答えられるようになりたいとおもいます。 本当にありがとうございました! またどうしても解らないことがありましたら、ぜひご教示ください。

回答No.2

VisualBasicでご質問された際のコードを確認しました。 追加行(1~3)とコメントしている行の追加及び、追加行のXXXを取得したいフォルダの名称に変更し、Wendy02 様が回答されている未読メールの判定を For Each objItem ~ のループ内に挿入すれば動作すると思います。 今のPCにはOutlookがインストールされていないため、動作しないようであれば、その旨回答への補足を頂ければ、動作確認可能な環境で確認後再度回答致します。 今後のためにも、オブジェクトブラウザ、ブレイク、ウォッチ等、VBAの動作確認する際の方法について調べられたほうがいいかと思います。 For nFCNT = 1 To olNameSPC.Folders(1).Folders.Count 'イミディエイトウィンドウにフォルダ名称が出力されます。 'この行は現在取得可能な正しいフォルダ名称を確認後削除して下さい。 debug.print olNameSPC.Folders(1).Folders(nFCNT).Name if olNameSPC.Folders(1).Folders(nFCNT).Name = "受信トレイ" Then '追加行(1) 'フォルダーの名称を書き込む Cells(nYLINE, 1) = olNameSPC.Folders(1).Folders(nFCNT).Name nYLINE = nYLINE + 1 '見出しを書き込む Cells(nYLINE, 1) = "No." Cells(nYLINE, 2) = "タイプ" Cells(nYLINE, 3) = "作成日" Cells(nYLINE, 4) = "件名" Cells(nYLINE, 5) = "内容" nYLINE = nYLINE + 1 'メッセージ数分ループ For Each objItem In olNameSPC.Folders(1).Folders(nFCNT).Items intCounter = intCounter + 1 '変数に代入(セルに直接でもいいかも?) With objItem dteCreateDate = .CreationTime strSubject = .Subject strItemType = TypeName(objItem) strBody = .Body End With 'セルに代入 Cells(nYLINE, 1) = intCounter Cells(nYLINE, 2) = strItemType Cells(nYLINE, 3) = dteCreateDate Cells(nYLINE, 4) = strSubject Cells(nYLINE, 5) = strBody 'セット位置を移動 nYLINE = nYLINE + 1 Next objItem exit for '追加行(2) end if '追加行(3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 VBカテゴリでは、その1件は、削除されてしまったようです。 たぶん、ここの部分では? >Set olAPP = CreateObject("Outlook.Application") >Set olNameSPC = olAPP.GetNamespace("MAPI") ' Namespace オブジェクト > >nYLINE = 1 >For nFCNT = 1 To olNameSPC.Folders(1).Folders.Count  '←ここの部分 いきなりMapiの名前空間ではなくて、もう一度フォルダを取り直したらどうでしょうか?今、コードを動かしているわけではないので、あまり断定的に言えませんが。 Set olNameSPC = olAPP.GetNamespace("MAPI") ' Namespace オブジェクト Set myFolder = olNameSPC.GetDefaultFolder(6)  'olFolderInbox For nFCNT =1 to myFolder.Items.Count >OutLookの受信トレイの「未読」の件名 >という件に関しては、 If  myFolder.Items(i).UnRead = False Then で、未読のフラグを、取れるはずです。

hyorono
質問者

補足

さっそくのお返事ありがとうございます。 そして、いつもご教示いただき、ありがとうございます。 現在、Wendy02さまのアドバイスに沿って、コードを見直しているのですが、 まだうまく動作できません。 もう少し頑張ってみますので、お礼&締め切りはお待ち下さい。 思い通りの動作が出来たら、ここにアップして締め切りたいと思います。 もし、お手すきでしたら再度アドバイスして頂けたら嬉しいです。 本当にいつもありがとうございます。

関連するQ&A

  • 【WIN】outlook2010本文が受信されない

    一通り検索してみたのですが、解決方法が見つけられなかったので力を貸してください。 【microsoftのoutlook2010について】 (1)先ほど、Livemailからoutlook2010にエクスポートしました。  それぞれの既存のフォルダ(メール)のエクスポートは無事移行できたのですが  移行後、新規で受信した分の本文(アドレス・件名・本文)が表示されません。  何かの設定が足りないのかな?と思いいろいろいじってみたのですが解決せず・・・。  ちなみに、受信トレイにはメールのマークだけ増えてくるので、  何かのメールを新規で受信したことは確認できます。 (2)受信トレイをいくつか作っています。(複数のgmailを受信しています)  受信メールを見るときに、フォルダ名をクリックして、【gmail】をクリックして初めて  受信トレイ(●)が出てきますよね?  それを、最初のフォルダ名のところで今何件の未読があるのかをわかるようには  できないでしょうか? (3)先日までXPでOutlook Expressを使用していました。  その時は、gmailのサブフォルダがこんなにたくさんなく、スッキリしていました。  メインの送信済みトレイですべてのアカウントの送信済みを管理したりできる等  Outlook Expressに近づけた便利?な使い方があったら教えてください。 よろしくお願いします。

  • Outlook Express 本文が自動的に表示出来ない

    Outlook Express Ver6 を使用していますが、 受信トレイを表示すると、送信者・件名・受信日時は表示出来ますが、本文が自動的に表示出来ません。(以前は件名にカーソルを持って行くと本文が自動的に表示できました。現在は、件名をダブルクリックすれば表示できます。) なんとか以前のように、自動的に表示できるように、設定を変更したいので、お教えいただければありがたいです。

  • Outlookでメール本文を別窓等で開くのは可能?

    最近WinXP機からWin7機へ乗り換えました。メールは以前に使用していたOutlook ExpressがないのでOutlook2010を使っていますが、色々な面で前とは違い少々当惑しています。その一つに受信したメールの表示の問題があります。Outlook Express6の場合は、受信トレイを開くと受信したメールの一覧が表示され、目的のメールを選択してダブルクリックしてはじめてそのメールの内容(本文)を別ウインドウで表示することができました。今使っているOutlook2010の場合は、受信メール一覧の横に常にいずれかのメールの本文が表示されています。今までは迷惑メールは勿論、送信者あるいは件名から判断して興味ないメールはすぐ削除するので、それらの本文を目にすることはありませんでした。しかし現在は受信メールの中から削除したいものを選択した段階でその本文がすぐ横に表示されてしまい、とても煩わしく感じます。これを以前のOutlook Expressのように読みたいメールの内容のみを(別ウィンドウ等で)表示させることは可能でしょうか。

  • outlook2019について

    いつもお世話になります。outloook2019を立ち上げると以前のPCでは直ぐに件名の一覧が表示されたのですが、今回買い換えたPC(outlook2019)では直ぐに一覧が表示されなくて受信トレイタブをクリックして始めて一覧が表示されます。以前のようにoutlookを立ち上げたら直ぐに受信トレイの件名が表示される方法が知りたいです。よろしくお願いいたします

  • 新着メールが古いメールの本文の中に入ってしまう。

     初めて質問をします。  OUTLOOK2007でメールをしています。  数ヶ月前から何回か起きているのですが、新着のメールが、受信トレイ内の古いメールの本文の中に入ってしまう事があり、困っています。  OUTLOOKを起動して、メールを受信して、未読の件数が表示されますが、受信トレイを開くと、何故か古いメールの中で未読になっているものがあり、メールを開くと、古いメールの本文の後に、新着メールのヘッダーと本文が続いているのです。  送信者は別の人です。  携帯に転送設定をしていて、そちらは問題ないので、OUTLOOKが原因かと思うのですが‥‥  とても困るので、もし解決法が分かる人や、同じ事が起こる人がいらしたら教えて下さい。

  • outlookで本文が表示されない

    Windows2000でoutlook6.0を使い始めましたが受信メール、送信済みメールともに全てのメールが件名や表題などが表示されるものの本文が全く表示されず、真っ白です。エンコードも変えてみましたが全く効果ありません。どなたかお助けください。

  • Outlook 2003 で本文が真っ白

    頻繁ではないのですが、メールを送信後、「受信者から本文が真っ白ですよ。」 と連絡をもらうことがここ半年で3回ほどありました。 受信者は特定の人物ではなく、3名とも別の人です。 ccで社内の人間にも送っておりますが、その受信メールも本文が真っ白。 自分の送信済みアイテムフォルダを見ても同様に本文が真っ白。 送信アドレス、件名はそのまま表示されております。 どうしたものでしょうか?ご教示くださいませ。 メッセージ形式はHTML形式で作成したものです。 本文に他からコピーしたテキストを貼り付け、署名を挿入しております。 使用メーラ:Outlook 2003 SP3 OS: Windows XP Proffessional

  • outlook express6の本文が表示されない。

    outlook exprees6を使っています。 メールを受信するんですが、受信した全てのメールの本文が表示されません。 新しく受信したもの、以前に受信して見れたものの両方表示されません。 件名は表示されるんですが、本文の部分が真っ白でなにも表示されません。 メールを送信するのに問題はありません。 急に本文が表示されなくなって、特に変わったことはしなかったんですが。。。 表示されていた日のチェックポイントでシステム復元をしたのですが、なおりませんでした。 どうすれば表示されるようにできるでしょうか? 教えて下さい。よろしくお願いします。

  • outlook2002の未読表示について

    既出でしたら申し訳ありません。検索がかからないため質問させていただきます。 outlook2002を使用しています。 受信トレイにサブフォルダを作り自動振り分けを行っています。 通常メールを見るときは「フォルダ一覧」を使用しています。 このときサブフォルダに振り分けた未読メールを見るためには、振り分けられたフォルダまでツリーを開いて、直接見に行かないとわからない状態です。 ビューで未読メールを選ぶと視えると思っていたのですが受信トレイの中しか見えませんでした 高度な検索で調べることは出来るのですがより簡単に見ることはできないでしょうか 良い方法を教えてください。 よろしくお願いします。

  • Outlook Express6 の件名が文字化けします。(改めて質問

    Outlook Express6 の件名が文字化けします。(改めて質問) 受信トレイを開くと件名がずらりと表示されますが、 外国からのメールの中に、件名が文字化けしているものがあります。 そのメールを開いたときに起ち上がるウインドウでは、 件名も本文も文字化けしておりません。 どのような解決策がありますでしょうか? 補足1 全く同じ質問を2007年にしている方がおりましたが、 解決の参考になったというサイトは今では開くことができませんでした。 補足2 以前に質問しましたが、質問内容が呆けてしまいましたので、 一旦締め切って、改めて質問することにしました。 尚、締め切った際、ベストアンサーを選択しないと締め切ることが できない仕様になっているようですので、そのようにしましたが、 解決しているわけではありません。

専門家に質問してみよう