VBA中使用CreateObject("Outlook.Application")这个方式来处理邮件,是可行的。但是是有条件的可行的。首先它不能对Outlook进行操作。它所支持的是“Microsoft Office Outlook”。
其次,因为那个“首先”,结果如果你不安装“Microsoft Office Outlook”你就不能在VBA中使用这个方法。会出现错误代码为:429 的错误。的确是相当的狗屎。 再次,事实上通过VBA批量发信,包括什么添附文件,可以根本不是用这个工具。VBA本身可以实现,代码我也有。需要的人可以直接联系我。 总结:也就是说Outlook.Application在一定程度上来说属于一个鸡肋。我稍微看了一下,决定放弃,连总结性的EXCEL文档也不做了,直接写了一个blog扔上来就算了。忘记它吧!BTW:如果已经在使用“Microsoft Office Outlook”,并且要整理自己信的人可以学习一下。不过我总觉得除了微软自己员工,一般编程的人,不会喜欢使用微软的产品,毕竟太庞大了…… 具体代码可以看下面的。这是我从日文网站上弄下来的,顺手加了些说明以及自己的尝试。首先要感谢一个不懂中文,不知道我存在的37岁(2009年)的宅男——三流君。我最近在寻找的VBA资料在这位兄台的HP都有。这位兄台的HP: http://www./ 。 关于利用VBA来操作IE的资料,我什么时候用空整理好了,弄上来。不过该死的sina blog对于EXCEL附件居然不能好好支持。这样好了。我的blog地址:http://blog.sina.com.cn/defiler523 ,有事情 email我也可以:defiler_523@hotmail.com 。 '送信 Sub MAKE_MAIL_ITEM() Dim oApp As Object Dim myNameSpace As Object Dim myFolder As Object Dim objMAIL As Object 'メールのオブジェクト Dim strMOJI As String '本文 'outlook 起動 Set oApp = CreateObject("Outlook.Application") Set myNameSpace = oApp.GetNameSpace("MAPI") Set myFolder = myNameSpace.GetDefaultFolder(6) '規定のフォルダーを指定 myFolder.Display '表示 いつものクセで .Visible = True とやりがちだけど 'メールアイテムの作成 Set objMAIL = oApp.CreateItem(0) 'olMailItem=0 直値はいけないと思いつつ、 '宛先?件名?本文 などのデータを代入する objMAIL.To = "ヤン@ginga.com" '宛先 ほかに.cc や.Bccも可能です objMAIL.Subject = "テスト メールの件名です " '.Subjectに文字列設定で件名 '本文を作る、(vbCrLfで改行されます) strMOJI = "こんにちは(このメールtestアドレスなので質問は別便で)" & vbCrLf _ & " ここで 文字列を作って .Bodyに代入する" & vbCrLf _ & " メールアイテムが作成されたらその後、 " & vbCrLf _ & " .save 下書きへ保存 や .sendで送信(確認が出る)" & vbCrLf _ & " 今回は、.Display で メール作成画面を表示" & vbCrLf _ & Now() & "作成" objMAIL.Body = strMOJI '本文の代入 objMAIL.Attachments.Add "d:\hinodrd.xml" '添付ファイル objMAIL.BCC = "ユリア@ginga.com;横島忠夫@gs.com" '(笑って、どうして、美神さんがいないよ) objMAIL.Importance = olImportanceHigh '重要度設定 'olImportanceHigh olImportanceLow olImportanceNormal でした。 objMAIL.Display '途中で編集したい時(メール編集画面を表示してみた) 'ここで、普通はオブジェクトの開放など、後始末をする。 End Sub '受信トレイからメールアイテムを取り出し Private Sub UserForm_Initialize() 'フォームの初期化イベントでリストボックスにメールデータをセットする Dim objOL As Object 'OutLookのアプリケーションオブジェクト Dim objNAMESPC As Object '名前空間 Dim objFLD As Object 'フォルダー保存用 Dim objMAIL As Object 'メールアイテム Dim strWORK As String Me.lstMAIL.Clear '.Clearでリストボックスの内容を全てクリア 'アプリケーションのオブジェクトを新規作成 Set objOL = CreateObject("Outlook.Application") 'Namespace オブジェクト作成 Set objNAMESPC = objOL.GetNamespace("MAPI") 'フォルダーの下、第二階層.Foldersでループさせる For Each objFLD In objNAMESPC.Folders(1).Folders 'フォルダー名が受信トレイか? If objFLD.Name = "受信トレイ" Then 'フォルダーのアイテム数分ループ Folders.Items For Each objMAIL In objFLD.Items '作成日:題名で文字列を作成する strWORK = objMAIL.CreationTime & ":" & objMAIL.Subject 'データをセット Me.lstMAIL.AddItem (strWORK) Next objMAIL End If Next objFLD '後始末 objOL.Quit End Sub |
|