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.ken3.org/ 。
关于利用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
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。