ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: willin2000

[求助][已解决]EXCEL用LOTUS NOTES发邮件

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-8-26 14:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖已被收录到知识树中,索引项:邮件应用开发
QUOTE:
以下是引用chenqqqq在2008-8-26 14:07:50的发言:

斑主, 我还要导出邮件附件附件名怎么写呢?

Sub GetAttachement()
    Dim anotes
    Dim aDataBase
    Dim adocument
    Dim aDocCollect
    Dim aview
    Dim rtitem
    Dim oEmb

On Error Resume Next

    Set anotes = CreateObject("Notes.NotesSession")
    Set aDataBase = anotes.GETDATABASE("", "D:\notes\data\mail3\tonyhf.nsf")
    Set aview = aDataBase.GETVIEW("($sent)")

    If (aview Is Nothing) Then
        MsgBox "Inbox view don't exist!"
    Else
       
        Set adocument = aview.GETFIRSTDOCUMENT
        Set rtitem = adocument.GETFIRSTITEM("Body")
        If (rtitem.Type = 1) Then
            For Each oEmb In rtitem.EMBEDDEDOBJECTS
                If (oEmb.Type = 1454) Then
                    Call oEmb.EXTRACTFILE("d:\" & oEmb.Source)
                End If
                MsgBox oEmb.Source
            Next
        End If
       
    End If
    Set anotes = Nothing
    Set aDataBase = Nothing
    Set aview = Nothing
    Set adocument = Nothing
End Sub

红色部分oemb.source就是附件名,或用oemb.name也可以,

TA的精华主题

TA的得分主题

发表于 2008-8-29 13:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

版主,关于操纵发送个性HTML签名的,我在网上搜到一篇关于这个的,但是没大看懂,麻烦你去看看

http://www.experts-exchange.com/Software/Office_Productivity/Office_Suites/Lotus_SmartSuite/Lotus_Notes/Q_21069618.html

谢谢!

TA的精华主题

TA的得分主题

发表于 2008-8-30 12:17 | 显示全部楼层
QUOTE:
以下是引用swsk在2008-8-29 13:03:59的发言:

版主,关于操纵发送个性HTML签名的,我在网上搜到一篇关于这个的,但是没大看懂,麻烦你去看看

http://www.experts-exchange.com/Software/Office_Productivity/Office_Suites/Lotus_SmartSuite/Lotus_Notes/Q_21069618.html

谢谢!

这个文章也是问怎么发送HTML签名的。他/她只是贴了添加附件的代码,也是不知道怎么添加签名的。不知道这个签名是不是属于UI部分,因为UI部分是没有提供COM给VBA使用的。

另外tonyibm的输入密码的部分,我在公司的电脑上面试也是说不能创建ActiveX对象,很奇怪。。。

TA的精华主题

TA的得分主题

发表于 2008-8-30 12:47 | 显示全部楼层
QUOTE:
以下是引用winland在2008-8-30 12:17:34的发言:

这个文章也是问怎么发送HTML签名的。他/她只是贴了添加附件的代码,也是不知道怎么添加签名的。不知道这个签名是不是属于UI部分,因为UI部分是没有提供COM给VBA使用的。

另外tonyibm的输入密码的部分,我在公司的电脑上面试也是说不能创建ActiveX对象,很奇怪。。。

版主,我运行代码之后,出现的密码输入框如下图所示,我想用sendkeys方法自动输入密码,但是不成功,不知道有没有什么其他的办法,

 


[求助][已解决]EXCEL用LOTUS NOTES发邮件

[求助][已解决]EXCEL用LOTUS NOTES发邮件

TA的精华主题

TA的得分主题

发表于 2008-8-30 15:07 | 显示全部楼层

用不了这个代码,很奇怪。一般这样使用SendKey的方法应该可以的,你多试试看,找找其它人写的Sendkey代码。

TA的精华主题

TA的得分主题

发表于 2008-8-30 20:50 | 显示全部楼层
QUOTE:
以下是引用winland在2008-8-30 15:07:41的发言:

用不了这个代码,很奇怪。一般这样使用SendKey的方法应该可以的,你多试试看,找找其它人写的Sendkey代码。

谢版主,我再试试看,

还有个问题,我在用以下代码发邮件的时候,红色部分是使用的BODY1,如果也使用body的话,发出的邮件就只有附件,没有正文,

但是改成body1之后,附件是有了,但是附件和正文之间有一条横线相隔,这种情况下,用您上次给我的导附件的方法导不出附件,想问一下有什么办法导出这种情况下的附件?

Sub aaaaaa()

Dim no As Object
Dim db As Object
Dim doc As Object
Dim fields As Object
Dim rec(1) As Variant

Set no = CreateObject("notes.notessession") '建立和邮件的连接
Set db = no.CURRENTDATABASE '建立和邮件数据库的连接
Set doc = db.CREATEDOCUMENT '创建一个新的邮件
Set fields = doc.CREATERICHTEXTITEM("body1") '设置新邮件的正文(附件)对象
rec(0) = "tonyhf@cn.ibm.com"
   
With fields '设置邮件的正文和附件
    
        .EMBEDOBJECT 1454, "", ActiveWorkbook.FullName
   
End With

With doc '设置新邮件的除正文和附件外的其他信息
 
    .Form = "Memo" '新邮件
    .sendto = VBA.Array("tonyhf@cn.ibm.com") '发送给
    .CopyTo = rec
    .Body = "this is just for test !"
    .blindcopyto = VBA.Array("tonyhf@cn.ibm.com")
    .Subject = "this mail is just for testing" '主题
    .SAVEMESSAGEONSEND = True '是否保存发送的邮件到发件箱
    .postdate = DateAdd("d", 1, Date) '发送日期等于当天
    .SEND 0 '发送
   
End With

MsgBox "successfully sent out the mail!"

Set no = Nothing '释放内存
Set db = Nothing
Set doc = Nothing
Set fields = Nothing

End Sub

[此贴子已经被作者于2008-8-30 20:52:09编辑过]

TA的精华主题

TA的得分主题

发表于 2008-8-30 23:03 | 显示全部楼层
QUOTE:
以下是引用tonyibm在2008-8-30 20:50:50的发言:

谢版主,我再试试看,

还有个问题,我在用以下代码发邮件的时候,红色部分是使用的BODY1,如果也使用body的话,发出的邮件就只有附件,没有正文,

但是改成body1之后,附件是有了,但是附件和正文之间有一条横线相隔,这种情况下,用您上次给我的导附件的方法导不出附件,想问一下有什么办法导出这种情况下的附件?

Sub aaaaaa()

Dim no As Object
Dim db As Object
Dim doc As Object
Dim fields As Object
Dim rec(1) As Variant

Set no = CreateObject("notes.notessession") '建立和邮件的连接
Set db = no.CURRENTDATABASE '建立和邮件数据库的连接
Set doc = db.CREATEDOCUMENT '创建一个新的邮件
Set fields = doc.CREATERICHTEXTITEM("body1") '设置新邮件的正文(附件)对象
rec(0) = "tonyhf@cn.ibm.com"
   
With fields '设置邮件的正文和附件
    
        .EMBEDOBJECT 1454, "", ActiveWorkbook.FullName
   
End With

With doc '设置新邮件的除正文和附件外的其他信息
 
    .Form = "Memo" '新邮件
    .sendto = VBA.Array("tonyhf@cn.ibm.com") '发送给
    .CopyTo = rec
    .Body = "this is just for test !"
    .blindcopyto = VBA.Array("tonyhf@cn.ibm.com")
    .Subject = "this mail is just for testing" '主题
    .SAVEMESSAGEONSEND = True '是否保存发送的邮件到发件箱
    .postdate = DateAdd("d", 1, Date) '发送日期等于当天
    .SEND 0 '发送
   
End With

MsgBox "successfully sent out the mail!"

Set no = Nothing '释放内存
Set db = Nothing
Set doc = Nothing
Set fields = Nothing

End Sub


改成Body1后GetFirstItem方法应该也改成Body1,你试试看。

Set rtItem = aDocument.GetFirstItem("Body1")

TA的精华主题

TA的得分主题

发表于 2008-8-30 23:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

版主,谢谢,我知道了,

但是问题出在,我发邮件的代码是用VBS来写的,如下,

Dim mydocu , os , myBody , recip(0)
recip(0)="tonyhf@cn.ibm.com"
Set os = CreateObject("Notes.NotesSession")
Set myDocu = os.CURRENTDATABASE.CREATEDOCUMENT
Set myBody = myDocu.CREATERICHTEXTITEM("Body")
myDocu.deliveryReport = "C"
myDocu.SendTo = "tonyhf@cn.ibm.com"
myDocu.CopyTo = ""
myDocu.Subject = "just for test"
myDocu.Body = "this e-mail is generated by an automated process "
Set emb = myBody.EMBEDOBJECT(1454,"","C:\Documents and Settings\tony\桌面\overhead group.xls","Attachment")
myDocu.SEND 0,recip
msgbox "发送成功!"
Set myDocu = Nothing
Set myBody = Nothing
Set os = Nothing
可以看到,这段VBS代码和VBA的不同,两个地方都是BODY,是可以同时收到正文和附件的,但是用这段代码发出的邮件在正文和附件之间有横线隔开,这种情况下,我导附件的时候,就算将getfirstitem改成body1,也不行,用body也不行,

不知道是为什么,

TA的精华主题

TA的得分主题

发表于 2008-9-1 22:14 | 显示全部楼层
QUOTE:
以下是引用tonyibm在2008-8-30 23:22:53的发言:

版主,谢谢,我知道了,

但是问题出在,我发邮件的代码是用VBS来写的,如下,

Dim mydocu , os , myBody , recip(0)
recip(0)="tonyhf@cn.ibm.com"
Set os = CreateObject("Notes.NotesSession")
Set myDocu = os.CURRENTDATABASE.CREATEDOCUMENT
Set myBody = myDocu.CREATERICHTEXTITEM("Body")
myDocu.deliveryReport = "C"
myDocu.SendTo = "tonyhf@cn.ibm.com"
myDocu.CopyTo = ""
myDocu.Subject = "just for test"
myDocu.Body = "this e-mail is generated by an automated process "
Set emb = myBody.EMBEDOBJECT(1454,"","C:\Documents and Settings\tony\桌面\overhead group.xls","Attachment")
myDocu.SEND 0,recip
msgbox "发送成功!"
Set myDocu = Nothing
Set myBody = Nothing
Set os = Nothing
可以看到,这段VBS代码和VBA的不同,两个地方都是BODY,是可以同时收到正文和附件的,但是用这段代码发出的邮件在正文和附件之间有横线隔开,这种情况下,我导附件的时候,就算将getfirstitem改成body1,也不行,用body也不行,

不知道是为什么,

Lotus的程序也是很奇怪,有GetFirstItem但没有GetNextItem。使用你的这个方法,将在邮件中创建两个相同名称的Item,一个是Text类型的Item,另外一个是RichText类型的Item。但是使用程序方法的话,程序限制只能获取第一个Item的内容,即是你的那个字符串。要想获取第2个Item的内容,你需要先删除第一个Item,然后保存Document,然后再使用GetFirstItem方法获取第2个Item(现在是第1个了)的附件。因此,如果你需要在邮件正文中又包括文本又包括附件的话,可以使用下面AppendText的方法。

Call nRTItem.APPENDTEXT("这是一个包含附件的测试邮件。")

这里是帮助文件中的说明。

If multiple items in a document have the same name, programmatic access is limited to the first item. The remaining items yield invalid data. A work-around is to get the first item, process it, remove it, again get the first item (which was the second item), and so on until you process all the items with the same name. If you do not save the document, the items are not actually removed. However, the recommendation is that you avoid creating multiple items with the same name.

TA的精华主题

TA的得分主题

发表于 2008-9-2 00:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
QUOTE:
以下是引用winland在2008-9-1 22:14:19的发言:

Lotus的程序也是很奇怪,有GetFirstItem但没有GetNextItem。使用你的这个方法,将在邮件中创建两个相同名称的Item,一个是Text类型的Item,另外一个是RichText类型的Item。但是使用程序方法的话,程序限制只能获取第一个Item的内容,即是你的那个字符串。要想获取第2个Item的内容,你需要先删除第一个Item,然后保存Document,然后再使用GetFirstItem方法获取第2个Item(现在是第1个了)的附件。因此,如果你需要在邮件正文中又包括文本又包括附件的话,可以使用下面AppendText的方法。

Call nRTItem.APPENDTEXT("这是一个包含附件的测试邮件。")

这里是帮助文件中的说明。

If multiple items in a document have the same name, programmatic access is limited to the first item. The remaining items yield invalid data. A work-around is to get the first item, process it, remove it, again get the first item (which was the second item), and so on until you process all the items with the same name. If you do not save the document, the items are not actually removed. However, the recommendation is that you avoid creating multiple items with the same name.

谢版主,我终于理解了,看来只有更改VBS最为简单了,

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-27 02:34 , Processed in 0.045362 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表