Delphi TListBox的例子
【2008年12月15日】Word 中超链接不显示问题的解决
【2008年12月5日】Delphi TWebbroser取网页的html和网页上显示内容的例子
【2008年12月4日】Nihg 提出的一个问题:Delphi 上TImage为什么先出声音再出图像?
Nihg 提出的一个问题:Delphi 上TImage为什么先出声音再出图像?
【2008年11月24日】Delphi编写,twebbrowser的应用(2) 取得网页上,输入框名称的例子
【2008年11月10日】 Delphi编写,twebbrowser的应用(1)
【2008年10月30日】 Delphi编写,通过注册表获得本机BIOS Version
【2008年10月30日】 Delphi编写,通过注册表获得本机BIOS Version
【2008年10月28日】 Delphi编写的可以获得本机保存的MSN的密码
Delphi编写的可以获得本机保存的MSN的密码
【2008年10月25日】 Delphi编写的网络唤醒程序
【2008年10月22日】 可以读取 OutLook2003联系人并保存在一个文本文件中的VBA程序。当年我主要就是依靠它编写了一个桌面上的公司地址薄,除了根据人名查电话,还提供了反查的功能
下面的程序段(VBA)可以将Outlook中的联系人dump到文件中。如果你们公司有那种全部联系人的通讯录(全球联系人),
你可以先将全部联系人保存到你本机的联系人中,然后运行下面的程序。之后,你就可以在c:下面找到 Text.txt 。里面
包含了全部联系人名单和电话号码... ...2年之前,我就用这样的方法将全部联系人dump出来,编写Delphi程序以资源方式
引用,从而实现本地的地址簿。
程序不完善,虽然可以直接将DistroList中的写入文件中,但是不能保存Recipient的信息(组信息)。
2008年11月22日
Private Sub copyDistroList()
On Error GoTo errHandler
Dim myOlApp As New Outlook.Application
Dim myNameSpace As Outlook.NameSpace
Dim myFolder As Outlook.MAPIFolder
Dim myDistList As Outlook.DistListItem 'source distribution list contains all contacts
Dim myDistList1 As Outlook.DistListItem 'target distribution list containing contacts A-L
Dim myDistList2 As Outlook.DistListItem 'target distribution list containing contacts M-Z
Dim myFolderItems As Outlook.Items
Dim myRcpnt As Outlook.Recipient
Dim intIterateContactItems As Integer 'track contact items
Dim intIterateDLMemberItems As Integer 'track distribution members
Dim intCountContactItems As Integer 'count contact items
Dim intCountDLMemberItems As Integer 'count distribution members within list
Dim strSourceDistList As String 'source distro list name container
Dim strTargetDistList1 As String 'target 1 distro list name container
Dim strTargetDistList2 As String 'target 2 distro list name container
Dim blnListFound As Boolean 'track if source distro list was found
Dim objSAE ' As Redemption.AddressEntry
Dim myItem As Outlook.ContactItem
strSourceDistList = "KS" 'name of source distro list
strTargetDistList1 = "test1" 'name of target 1 distro list
strTargetDistList2 = "test2" 'name of target 2 distro list
'create Outlook objects
Set myNameSpace = myOlApp.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(olFolderContacts)
Set myFolderItems = myFolder.Items
Set myDistList1 = myOlApp.CreateItem(olDistributionListItem)
Set myDistList2 = myOlApp.CreateItem(olDistributionListItem)
'intialize variables
myDistList1.DLName = strTargetDistList1
myDistList2.DLName = strTargetDistList2
blnListFound = False
Const fsoForAppend = 8
Const PR_CELLULAR_TELEPHONE_NUMBER = &H3A1C001E
Dim objFSO
Dim objTextStream
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextStream = objFSO.OpenTextFile("C:\Test.txt", fsoForAppend)
'replace with your filename & path
'assign the count of all contact items to variable
intCountContactItems = myFolderItems.Count
'iterate through all Outlook contact items until the source distro list is located
For intIterateContactItems = 1 To intCountContactItems
'check to see if the contact item is a distribution list type
If TypeName(myFolderItems.Item(intIterateContactItems)) = "DistListItem" Then
'set the myDistList object as the DistListItem
Set myDistList = myFolderItems.Item(intIterateContactItems)
'check to see if the distro list is correct source list
If myDistList.DLName = strSourceDistList Then
'assign the distro list member count to variable
intCountDLMemberItems = myDistList.MemberCount
'iterate through all members of the distro list
For intIterateDLMemberItems = 1 To 2
'intCountDLMemberItems
'get the member name, create the recipient, and assign to object variable
Set myRcpnt = myOlApp.Session.CreateRecipient(myDistList.GetMember(intIterateDLMemberItems).Address)
Set myItem = Application.CreateItem(olContactItem)
'ensure the recipient can be resolved in the Exchange director
myRcpnt.Resolve
'is recipient name resolved?
If myRcpnt.Resolved = True Then
Set objSAE = myRcpnt.AddressEntry
objTextStream.WriteLine myRcpnt.Name
myItem.FullName = myRcpnt.Name
myItem.Email1Address = myRcpnt.Address
objTextStream.WriteLine myItem.BusinessTelephoneNumber & "sss"
myItem.ForwardAsVcard
myItem.Save
'if recipient is not resolved then warn the user and move on to the next distro list member
Else
MsgBox "Sorry, I could not resolve the email address for " & _
myDistList.GetMember(intIterateDLMemberItems).Name & "." & _
vbCrLf & "Please write this information down and verify." & _
vbCrLf & "I will move on with the list. Click okay " & _
"to continue.", vbOKOnly + vbCritical, "NOT RESOLVED"
Resume Next
End If
'Debug.Print myDistList.GetMember(intIterateDLMemberItems).Name & _
", " & myDistList.GetMember(intIterateDLMemberItems).Address
'get the next member of the distro list
Next intIterateDLMemberItems
'save the new distro lists
myDistList1.Save
myDistList2.Save
'source distro list was found, so set variable to true
blnListFound = True
'since the source distro list is found, there is no need to continue with the contact items iteration
Exit For
End If
End If
'get the next item within Contacts
Next intIterateContactItems
'Close the file and clean up
objTextStream.Close
Set objTextStream = Nothing
Set objFSO = Nothing
'raise message box if source distro list was not found
If blnListFound = False Then
MsgBox "Your Source Distribution List was not found", vbOKOnly + vbInformation, "DISTRO LIST NOT FOUND"
End If
setAllToNothing:
'end of subroutine, so ensure all objects are emptied
If Not myOlApp Is Nothing Then
Set myOlApp = Nothing
End If
If Not myNameSpace Is Nothing Then
Set myNameSpace = Nothing
End If
If Not myFolder Is Nothing Then
Set myFolder = Nothing
End If
If Not myDistList Is Nothing Then
Set myDistList = Nothing
End If
If Not myDistList1 Is Nothing Then
Set myDistList1 = Nothing
End If
If Not myDistList2 Is Nothing Then
Set myDistList2 = Nothing
End If
If Not myFolderItems Is Nothing Then
Set myFolderItems = Nothing
End If
If Not myRcpnt Is Nothing Then
Set myRcpnt = Nothing
End If
Exit Sub
errHandler:
MsgBox Err.Number & " " & Err.Description, vbCritical + vbOKOnly, "ERROR"
Resume setAllToNothing
End Sub




