ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 使用VBA操作Lotus Notes

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-9-9 22:06 | 显示全部楼层
原帖由 yyw9230 于 2010-9-7 15:11 发表
一年前发的帖子,当时就没有解决
-----------------------------------------------------------------------------------------------------------------------------------------------------------
已经解决了查 ...

关于打印问题,是需要将NotesDocument转换成NotesUIDocument,前面的方法将NotesUIDocument转换成NotesDocument的方法,下面是逆转的方法。

Set ws = CreateObject("Notes.NotesUIWorkspace")
Set s = CreateObject("Notes.NotesSession")
Set db = s.CURRENTDATABASE
Set dc = db.ALLDOCUMENTS
Set doc = dc.GETFIRSTDOCUMENT
Set uidoc = ws.EDITDOCUMENT(False, doc, False, , False)
uidoc.EDITMODE = False

方法是使用EditDocument方法,不知道为什么第一个参数设置False不能将邮件以非编辑模式打开。所以添加了下面一句。

奇怪的事情是在VBA里布能直接使用uidoc.Print,当你直接使用的时候会出现错误提示说对象没有这个属性或方法。更奇怪的事情是在立即窗口里使用?uidoc.Print则可以显示打印对话框。
所以如果需要打印的话,完整的代码是这样的。

et ws = CreateObject("Notes.NotesUIWorkspace")
Set s = CreateObject("Notes.NotesSession")
Set db = s.CURRENTDATABASE
Set dc = db.ALLDOCUMENTS
Set doc = dc.GETFIRSTDOCUMENT
Set uidoc = ws.EDITDOCUMENT(False, doc, False, , False)
uidoc.EDITMODE = False
On Error Resume Next
Debug.Print uidoc.Print

Print方法不带参数的话只是显示打印窗口,如果要直接打印的话,请研究官方文档

TA的精华主题

TA的得分主题

发表于 2010-9-10 15:17 | 显示全部楼层
谢谢winland版主,学习研究一下,如果只是显示打印窗口的话,应该用sendkeys模拟回车键就可以打印了

TA的精华主题

TA的得分主题

发表于 2010-9-10 16:03 | 显示全部楼层
谢谢版主了,研究了官方文档,已经成功的实现了自动打印,版主很细心,还给了官方文档的链接给我!赞个!

TA的精华主题

TA的得分主题

发表于 2010-9-15 10:07 | 显示全部楼层
谢谢winland版主分享。  我还有个问题,请winland版主指导:

在您的函数里,都是直接把邮件发出去了。

但是我现在想实现一个功能,在Excel里当用户点击一个反馈按钮后,跳到Notes,打开一个新邮件,邮件的收件人是我自己,主题是“我有问题反馈”,但是邮件的内容需要使用者自己来完成,完成后他自己发送邮件。
我试着不调用 Call aDocument.SEND(False),但是不行,Notes没有反应,一调用SEND邮件就直接发出了,这个要怎么处理?

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-9-15 21:35 | 显示全部楼层
原帖由 fczwy 于 2010-9-15 10:07 发表
谢谢winland版主分享。  我还有个问题,请winland版主指导:

在您的函数里,都是直接把邮件发出去了。

但是我现在想实现一个功能,在Excel里当用户点击一个反馈按钮后,跳到Notes,打开一个新邮件,邮件的收件 ...
这个问题如果调用Notes的界面,然后人工输入内容,然后再由程序发送应该是没有办法实现。
一个方法是,使用NotesDocument,在Excel中做一个窗体用来人工输入内容,完成之后程序发送。
另一个方法是,使用NotesUIDocument,这样需要人工输入内容后,由自己手动点击发送。

TA的精华主题

TA的得分主题

发表于 2010-9-27 20:13 | 显示全部楼层
Set Session = CreateObject("Lotus.NotesSession")
Call Session.Initialize("密码")

加上上面的Call Session.Initialize("密码")这句话,就可以不用打开notes就发送邮件,这个我有试过,是成功的,

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-9-27 21:09 | 显示全部楼层
原帖由 tonyibm 于 2010-9-27 20:13 发表
Set Session = CreateObject("Lotus.NotesSession")
Call Session.Initialize("密码")

加上上面的Call Session.Initialize("密码")这句话,就可以不用打开notes就发送邮件,这个我有试过,是成功的,

你的Notes版本是多少?
我这里之前试貌似不行。

TA的精华主题

TA的得分主题

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

回复 32楼 winland 的帖子

在继续学习的时候,注意到print的方法,在官方文档上是直接用的Call 命令,但是在VBA上直接敲Call uidoc.Print 确不行,Debug. Print在这是起到一个什么样的作用,Winland版主是怎么会想到用Debug. Print来解决这个问题的呢?谢谢!

Debug.Print uidoc.Print

Print方法不带参数的话只是显示打印窗口,如果要直接打印的话,请研究官方文档。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-12-11 15:54 | 显示全部楼层
原帖由 yyw9230 于 2010-12-11 13:27 发表
在继续学习的时候,注意到print的方法,在官方文档上是直接用的Call 命令,但是在VBA上直接敲Call uidoc.Print 确不行,Debug. Print在这是起到一个什么样的作用,Winland版主是怎么会想到用Debug. Print来解决这个问 ...

我也不太清楚为什么这么用Debug.Print,是万能的Google帮我找到这个方法的。

TA的精华主题

TA的得分主题

发表于 2011-3-22 17:26 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-3 01:09 , Processed in 0.023075 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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