分享

VBA中处理OUTLOOK

 战神之家 2014-05-06

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多