热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LotusNotes和VBA检查公共地址簿中的电子邮件地址

如何解决《LotusNotes和VBA检查公共地址簿中的电子邮件地址》经验,为你挑选了1个好方法。

我试图找出如何使用VBA检查公共地址簿中是否有电子邮件地址.我在Web上找到了一些代码,对其进行了修改但是代码在行中出现了错误91"Set doc = view.GetAllDocumentsByKey(ChkEmailAddr)." 我认为问题与变量"view"的声明类型或"Set view = b.GetView("People\By Internet Mail")行中的视图类型有关."

我很确定我已经激活了所有正确的引用.选择"Lotus Notes Domino Objects"和"Lotus Notes Automation Classes".

我试图获得一个视图列表,但我无法弄清楚如何做到这一点.您是否在我的代码中看到错误或者有什么想法可以尝试进行一些故障排除?

  Sub CheckEmailAddress()

 Dim books As Variant
 Dim view As lotus.NotesView
 'Dim view As Object
 Dim doc As NotesDocumentCollection
 Dim dc As NotesDocument
 Dim done As Variant
 Dim docarr(3, 50) As Variant
 Dim ChkEmailAddr As String

 ChkEmailAddr = "tyrone.sunde@usbank.com"     

 Set Session = CreateObject("Notes.Notessession")

 books = Session.AddressBooks
 dOne= False

 For Each b In books
   ' check every public address book,
   ' unless we're already done
   If (b.IsPublicAddressBook) Then
   Debug.Print TypeName(b)

     Call b.Open("", "")
     Debug.Print b.Title
     ' look up person's last name
     ' in People view of address book


     Set view = b.GetView("People\By Internet Mail")
     Debug.Print TypeName(view)
     'Debug.Print view
     'Set view = b.GetView("main")
     'Debug.Print TypeName(view)
     Set doc = view.GetAllDocumentsByKey(ChkEmailAddr)
     ' if person is found, display the phone number item
     'from the Person document
     If Not (doc Is Nothing) Then

        For j = 0 To doc.Count
            docarr(0, j) = doc.GetNthDocument(j).Items(11).Text
             docarr(1, j) = doc.GetNthDocument(j).Items(93).Text
            docarr(2, j) = doc.GetNthDocument(j).Items(95).Text
            docarr(3, j) = doc.GetNthDocument(j).Items(14).Text
        Next j
     End If
   End If
Next b
 findEmailLotus = docarr

结束子



1> Richard Schw..:

我很抱歉这样说,但你这里有很多问题.编写你开始的代码的人不知道他或她在做什么.

首先,除非您在代码运行时要求Notes客户端正在运行,否则您应该使用Lotus.NotesSession而不是Notes.NotesSession.(前者对应于"Lotus Notes Domino Objects",并使用COM与Notes API对话,后者对应于"Lotus Notes自动化类,并使用OLE与Notes客户端通信以与API通信 - 因此要求客户端必须运行.)

其次,您还没有提到您正在处理的Lotus Notes版本,但是更新的版本(8及更高版本)包含了一个NotesDirectory类,其中包含一个LoookupNames方法,它可能比您自己的代码编写更好的解决方案.循环通过地址簿.

第三,做完set view手术后,你真的应该做一个If Not view is Nothing测试.这将告诉您实际上是否在打开视图时遇到问题.

第四,doc来自的返回值是一个非常糟糕的变量名GetAllDocumentsByKey.在编写Notes代码20多年后,我可以说任何阅读Notes代码的人都希望变量名doc始终引用单个文档.你得到的NotesDocumentCollection不是一份文件.帮自己一个忙,把它换成docs或者dc除了之外的任何东西doc.

第五,GetNthDocument通常不建议在这种情况下使用.它在大型集合中表现非常糟糕.然而,更糟糕的是,当你每次迭代只能进行一次调用时,你会调用它四次.而不是For循环,考虑将其更改为调用GetFirstDocument后跟While Not doc is Nothing循环,该循环检索项值并将它们存储在数组中,然后getNextDocument在循环的底部调用.

第六,该代码引用.Items(11),.Items(93)......这是完全错误的.任何给定文档中的可用项都是可变的,因为Notes是无模式的.那些项目编号将指代不同人的不同字段 - 即,基本上是随机值.那可能不是你想要的.您应该使用getFirstItem()具有您真正想要放入数组的项目的实际名称的调用.您需要研究Domino目录中使用的字段名称来解决这个问题.我推荐NotesPeek作为一个很好的工具,用于探索Notes数据库和/或只是在Domino Designer客户端中打开Domino目录,并查看Person表单(和相关的子表单)以找出您需要的内容.

至于您询问的实际错误,我的猜测是,通过添加推荐的测试,If Not view Is Nothing您将获得更多信息,但可能还不够.你还没有提到你的调试打印产生了什么,但我相信有些情况下标题可用,即使数据库没有成功打开,所以我认为你不应该相信这是一个测试是否调用工作.事实上,你真的不应该只是Call db.open("","")打电话.你应该做一个If db.open("","") = true测试它是否真的有效.


推荐阅读
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 本文介绍了Python字典视图对象的示例和用法。通过对示例代码的解释,展示了字典视图对象的基本操作和特点。字典视图对象可以通过迭代或转换为列表来获取字典的键或值。同时,字典视图对象也是动态的,可以反映字典的变化。通过学习字典视图对象的用法,可以更好地理解和处理字典数据。 ... [详细]
  • 本文介绍了使用C++Builder实现获取USB优盘序列号的方法,包括相关的代码和说明。通过该方法,可以获取指定盘符的USB优盘序列号,并将其存放在缓冲中。该方法可以在Windows系统中有效地获取USB优盘序列号,并且适用于C++Builder开发环境。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了在Vue项目中如何结合Element UI解决连续上传多张图片及图片编辑的问题。作者强调了在编码前要明确需求和所需要的结果,并详细描述了自己的代码实现过程。 ... [详细]
author-avatar
手机用户2502912857
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有