dポイントプレゼントキャンペーン実施中!

はじめまして。

VBSでOutlookのメール件数(たとえば受信ボックスの)を数えるには、
どうすればよいかどなたか教えて下さい。

メール送信は探せばたくさん見つかったのですが、
(CreateObject("CDO.Message") をつかうみたいです)
件数はどのようなものを使えばよいでしょうか?

乱文にて申し訳ございませんが、
よろしくお願い致します。

A 回答 (2件)

Microsoft Outlook であれば参考URLを。

.NET用のコードですが、COMクラスを使ったものなのでVBSからでもいけるはずです。
オブジェクトとメソッドを調べる手がかりにはなるかと。

VBSでは参照設定が使えないので
Dim oApp As Outlook.Application = New Outlook.Application()
となっている部分はCreateObjectで。
Dim oApp As Outlook.Application
Set oApp = CreateObject("Outlook.Application")

Outlook Express の場合は、タイプライブラリが非公開になっているので、外部からアクセスする手段はないっぽいです。

参考URL:http://support.microsoft.com/kb/313795/ja
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

オブジェクトとメソッドが調べにくいですが、
とりあえず、この情報で何とか調べてみます。

お礼日時:2009/10/21 18:02

小生はこの辺は経験なく、判ってないのですが、


http://www.microsoft.com/japan/technet/scriptcen …
をヒントに
エクセルVBAの標準モジュールに
Sub test01()
'Const olFolderInbox = 5
On Error Resume Next
For i = 1 To 20
Set objDictionary = CreateObject("Scripting.Dictionary")

Set objOutlook = CreateObject("Outlook.Application")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objFolder = objNamespace.GetDefaultFolder(i)
MsgBox objFolder.Name
Set colItems = objFolder.Items
MsgBox colItems.Count
For Each objItem In colItems
MsgBox objItem
strDate = FormatDateTime(objItem.SentOn, vbShortDate)
If objDictionary.Exists(strDate) Then
objDictionary.Item(strDate) = objDictionary.Item(strDate) + 1
Else
objDictionary.Add strDate, "1"
End If
Next

colKeys = objDictionary.Keys

For Each strKey In colKeys

MsgBox strKey & "," & objDictionary.Item(strKey)
Next
Next i
End Sub
を入れて実行してみました。私の場合OLはほとんど使ってないので
テスト確認が十分出来ません。Msgboxの部分はセルに値セットなどを考えてください。
MsgBox colItems.Count  が件数ではないでしょうか。
何かの参考になれば。
ーー
上記のolFolderInbox の意味は
Sub test02()
On Error Resume Next
For i = 1 To 20
Set objDictionary = CreateObject("Scripting.Dictionary")
Set objOutlook = CreateObject("Outlook.Application")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objFolder = objNamespace.GetDefaultFolder(i)
Cells(i, "A") = i & "=" & objFolder.Name
Next i
End Sub
で調べられました。
結果はフォルダ名のIDのようです。
1=なし
2=なし
3=削除済みアイテム
4=送信トレイ
5=送信済みアイテム
6=受信トレイ
7=受信トレイ
8=受信トレイ
9=予定表
10=連絡先
11=履歴
12=メモ
13=仕事
14=アラーム
15=アラーム
16=下書き
17=下書き
・・
    • good
    • 0
この回答へのお礼

ありがとうございます。
imogasi さんの回答を参考に、何とか作ることができました。
-------------------------------------------------------------
Option Explicit

Dim objShell
Dim oApp
Dim oNS
Dim oInbox
Dim oItems
Dim i
Dim j

Set objShell = WScript.CreateObject("WScript.Shell")
Set oApp = CreateObject("Outlook.Application")
Set oNs = oApp.GetNameSpace("MAPI")

For i = 1 To oNS.Folders.Count
Set oInbox = oNS.Folders.Item(i)
For j = 1 To oInbox.Folders.Count
Set oItems = oInbox.Folders.Item(j)
msgbox oItems.Name & ":" & oItems.Items.Count,,oNS.Folders.Item(i).Name
next
next

Set oItems = Nothing
Set oInbox = Nothing
Set oNs = Nothing
Set oApp = Nothing
Set objShell = Nothing
-------------------------------------------------------------

受信フォルダだけなら、objNamespace.GetDefaultFolder(6)
でもってこれました。

これで解決としたいと思います。
みなさまありがとうございました。

お礼日時:2009/10/22 11:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!