VB6中處理OutLook文件夾的Module

None.gif ' ********************************************************************
None.gif'
None.gif'
Description : 按Treeview中的節點信息,讀取/添加到OutLook文件夾
None.gif

None.gif
'  ================================================================
None.gif'
    Name                   Date                  Description
None.gif'
  ---------           ---------------        -------------------
None.gif'
  RogerWang               26/03/2006            Class created
None.gif'
  RogerWang               29/03/2006            Class Modified
None.gif'
*********************************************************************
None.gif

None.gif
Option   Explicit
None.gif
None.gif
None.gif
Dim  objApp  As  Outlook.Application
None.gif
Dim  objNameSpace  As  Outlook.NameSpace
None.gif
Dim  m_objFolders  As  Collection
None.gif
Dim  Cur_Folder  As  mapiFolder
None.gif
None.gif
Public  vTreeview  As  TreeView
None.gif
Public  objMAPIFolder  As  Outlook.mapiFolder
None.gif
None.gif
' ********************************************************************
None.gif'
Description : 初始化與OutLook信息相關的對象
None.gif'
 ================================================================
None.gif'
    Name                   Date                  Description
None.gif'
  ---------           ---------------        -------------------
None.gif'
  RogerWang               26/03/2006            Class created
None.gif'
*********************************************************************
ExpandedBlockStart.gifContractedBlock.gif
Public   Function InitOutLookObj() Function InitOutLookObj() As Boolean
InBlock.gif    
If objApp Is Nothing Then
InBlock.gif       
Set objApp = New Outlook.Application
InBlock.gif    
End If
InBlock.gif    
If objNameSpace Is Nothing Then
InBlock.gif       
Set objNameSpace = objApp.GetNamespace(Type:="MAPI")
InBlock.gif    
End If
InBlock.gif    
InBlock.gif    
If objMAPIFolder Is Nothing Then
InBlock.gif       
Set objMAPIFolder = objNameSpace.GetDefaultFolder(olFolderInbox) '收件匣
InBlock.gif
       Set Cur_Folder = objMAPIFolder
InBlock.gif    
End If
InBlock.gif    
InBlock.gif    
If m_objFolders Is Nothing Then
InBlock.gif      
Set m_objFolders = New Collection
InBlock.gif    
End If
InBlock.gif        
ExpandedBlockEnd.gif
End Function

None.gif
None.gif
None.gif
' ********************************************************************
None.gif'
Description : 釋放與OutLook信息相關的對象
None.gif'
 ================================================================
None.gif'
    Name                   Date                  Description
None.gif'
  ---------           ---------------        -------------------
None.gif'
  RogerWang               26/03/2006            Class created
None.gif'
*********************************************************************
None.gif

ExpandedBlockStart.gifContractedBlock.gif
Public   Function FreeOutLookObj() Function FreeOutLookObj() As Boolean
InBlock.gif    
If Not objApp Is Nothing Then
InBlock.gif       
Set objApp = Nothing
InBlock.gif    
End If
InBlock.gif
InBlock.gif    
If Not objNameSpace Is Nothing Then
InBlock.gif       
Set objNameSpace = Nothing
InBlock.gif    
End If
InBlock.gif
InBlock.gif    
If Not objMAPIFolder Is Nothing Then
InBlock.gif       
Set objMAPIFolder = Nothing
InBlock.gif    
End If
InBlock.gif    
InBlock.gif    
If Not m_objFolders Is Nothing Then
InBlock.gif      
Set m_objFolders = Nothing
InBlock.gif    
End If
InBlock.gif    
InBlock.gif    
If Not vTreeview Is Nothing Then
InBlock.gif       
Set vTreeview = Nothing
InBlock.gif    
End If
ExpandedBlockEnd.gif
End Function

None.gif
None.gif
' ********************************************************************
None.gif'
Description : 將OutLook文件夾信息裝載進vTreeView中
None.gif'
 ================================================================
None.gif'
    Name                   Date                  Description
None.gif'
  ---------           ---------------        -------------------
None.gif'
  RogerWang               27/03/2006            Class created
None.gif'
*********************************************************************
ExpandedBlockStart.gifContractedBlock.gif
Public   Function LoadOutLookFolder() Function LoadOutLookFolder() As Boolean
InBlock.gif   
On Error GoTo ErrHandle
InBlock.gif   
InBlock.gif   
Dim i As Integer '用來取得收件匣下面的文件夾數目
InBlock.gif
   Dim objNode As Node
InBlock.gif   
InBlock.gif   LoadOutLookFolder 
= True
InBlock.gif      
InBlock.gif   
'清除所有Node
InBlock.gif
   vTreeview.Nodes.Clear
InBlock.gif   
InBlock.gif   InitOutLookObj
InBlock.gif      
InBlock.gif   
Set objNode = vTreeview.Nodes.Add(, , objMAPIFolder.EntryID, objMAPIFolder.Name, 33)
InBlock.gif   
Call m_objFolders.Add(objMAPIFolder, objMAPIFolder.EntryID)
InBlock.gif   
'objNode.ForeColor = vbBlack
InBlock.gif
   
InBlock.gif   objNode.Expanded 
= True
InBlock.gif   
InBlock.gif   
If objMAPIFolder.Folders.Count > 0 Then
InBlock.gif      
Call LoadChildNode(objMAPIFolder, objNode)
InBlock.gif   
End If
InBlock.gif   
InBlock.gif
Exit Function
InBlock.gifErrHandle:
InBlock.gif   
MsgBox "裝載OutLook文件夾出錯", vbInformation
InBlock.gif   FreeOutLookObj
ExpandedBlockEnd.gif
End Function

None.gif
None.gif
' ********************************************************************
None.gif'
Description : 遞歸讀取文件夾
None.gif'
 ================================================================
None.gif'
    Name                   Date                  Description
None.gif'
  ---------           ---------------        -------------------
None.gif'
  RogerWang               27/03/2006            Class created
None.gif'
*********************************************************************
ExpandedBlockStart.gifContractedBlock.gif
Public   Function LoadChildNode() Function LoadChildNode(ByVal SourceFolder As mapiFolder, ByVal sourceNode As Node) As Boolean
InBlock.gif    
On Error GoTo ErrHandle
InBlock.gif    
InBlock.gif    LoadChildNode 
= True
InBlock.gif    
Dim i As Integer
InBlock.gif    
Dim DestFolder As mapiFolder
InBlock.gif    
Dim DestNode As Node
InBlock.gif    
InBlock.gif    sourceNode.Expanded 
= True
InBlock.gif    
For i = 1 To SourceFolder.Folders.Count
InBlock.gif        
Set DestNode = vTreeview.Nodes.Add(SourceFolder.EntryID, tvwChild, SourceFolder.Folders.Item(i).EntryID, _
InBlock.gif           SourceFolder.Folders.Item(i).Name, 
12)
InBlock.gif        
Call m_objFolders.Add(SourceFolder.Folders.Item(i), SourceFolder.Folders.Item(i).EntryID)
InBlock.gif        
InBlock.gif        
Set DestFolder = SourceFolder.Folders.Item(i)
InBlock.gif        
InBlock.gif        
If DestFolder.Folders.Count > 0 Then
InBlock.gif           
Call LoadChildNode(DestFolder, DestNode)
InBlock.gif        
End If
InBlock.gif    
Next i
InBlock.gif    
InBlock.gif    
If Not DestFolder Is Nothing Then
InBlock.gif       
Set DestFolder = Nothing
InBlock.gif    
End If
InBlock.gif    
InBlock.gif    
If Not DestNode Is Nothing Then
InBlock.gif       
Set DestNode = Nothing
InBlock.gif    
End If
InBlock.gif
Exit Function
InBlock.gifErrHandle:
InBlock.gif    
If Not DestFolder Is Nothing Then
InBlock.gif       
Set DestFolder = Nothing
InBlock.gif    
End If
InBlock.gif    
InBlock.gif    
If Not DestNode Is Nothing Then
InBlock.gif       
Set DestNode = Nothing
InBlock.gif    
End If
ExpandedBlockEnd.gif
End Function

None.gif
None.gif
' ********************************************************************
None.gif'
Description : 從應用程序目錄下同名Txt文件讀取要添加的文件夾列表
None.gif'
 ================================================================
None.gif'
    Name                   Date                  Description
None.gif'
  ---------           ---------------        -------------------
None.gif'
  RogerWang               27/03/2006            Class created
None.gif'
*********************************************************************
None.gif

ExpandedBlockStart.gifContractedBlock.gif
Public   Function LoadTxtFile() Function LoadTxtFile() As Boolean
InBlock.gif   
On Error GoTo ErrHandle
InBlock.gif   
Dim l_objFS As New FileSystemObject
InBlock.gif   
Dim l_objFile As TextStream
InBlock.gif   
InBlock.gif   
Dim sFileName As String
InBlock.gif   
Dim sfileContents    As String
InBlock.gif   
Dim FolderList() As String
InBlock.gif   
Dim i As Integer
InBlock.gif   
InBlock.gif   sFileName 
= App.Path & "\" & App.EXEName & ".ini"
InBlock.gif   
Set l_objFile = l_objFS.OpenTextFile(sFileName, ForReading, False, TristateUseDefault)
InBlock.gif   sfileContents 
= l_objFile.ReadAll()
InBlock.gif   l_objFile.Close
InBlock.gif   
InBlock.gif   
Set l_objFile = Nothing
InBlock.gif   
Set l_objFS = Nothing
InBlock.gif  
InBlock.gif
InBlock.gif   
'以換行符分拆sfileContents成一個字符串數組
InBlock.gif
   FolderList = Split(sfileContents, vbCrLf)
InBlock.gif   
InBlock.gif   
For i = LBound(FolderList) To UBound(FolderList)
InBlock.gif      
Call SplitArr(FolderList(i))
InBlock.gif   
Next i
InBlock.gif      
InBlock.gif
Exit Function
InBlock.gifErrHandle:
InBlock.gif   
If Not l_objFile Is Nothing Then
InBlock.gif      
Set l_objFile = Nothing
InBlock.gif   
End If
InBlock.gif   
InBlock.gif   
If Not l_objFS Is Nothing Then
InBlock.gif      
Set l_objFS = Nothing
InBlock.gif   
End If
ExpandedBlockEnd.gif
End Function

None.gif
None.gif
' ********************************************************************
None.gif'
Description : 將每行字符串拆分成一個字符串數組
None.gif'
 ================================================================
None.gif'
    Name                   Date                  Description
None.gif'
  ---------           ---------------        -------------------
None.gif'
  RogerWang               28/03/2006            Class created
None.gif'
*********************************************************************
None.gif

ExpandedBlockStart.gifContractedBlock.gif
Public   Function SplitArr() Function SplitArr(ByVal vstrFolder As StringAs Boolean
InBlock.gif    
Dim FolderArr() As String
InBlock.gif    
Dim i As Integer
InBlock.gif    
InBlock.gif    FolderArr 
= Split(vstrFolder, "]]-[[")
InBlock.gif    
InBlock.gif    
'除去兩端的特殊字符串
InBlock.gif
    If (UBound(FolderArr) - LBound(FolderArr)) > 0 Then
InBlock.gif       FolderArr(
LBound(FolderArr)) = Replace(FolderArr(LBound(FolderArr)), "[["""11)
InBlock.gif       FolderArr(
UBound(FolderArr)) = Replace(FolderArr(UBound(FolderArr)), "]]"""11)
InBlock.gif    
End If
InBlock.gif   
InBlock.gif   
'根據字符串數組,檢查Treeview中是否有相應節點,如果沒有則新增,否則用顏色標出
InBlock.gif
    Call CheckTreeviewNode(FolderArr)
ExpandedBlockEnd.gif
End Function

None.gif
None.gif
' ********************************************************************
None.gif'
Description : 將字符串數組中每一個字符串對應到相應的vTreeView的Node中
None.gif'
 ================================================================
None.gif'
    Name                   Date                  Description
None.gif'
  ---------           ---------------        -------------------
None.gif'
  RogerWang               28/03/2006            Class created
None.gif'
*********************************************************************
ExpandedBlockStart.gifContractedBlock.gif
Public   Function CheckTreeviewNode() Function CheckTreeviewNode(ByRef vstrFolder() As StringAs Boolean
InBlock.gif    
On Error GoTo ErrHandle
InBlock.gif    
Dim i, j As Integer
InBlock.gif    
Dim Cur_Node As Node
InBlock.gif    
InBlock.gif    
Set Cur_Node = vTreeview.Nodes.Item(1)
InBlock.gif    
InBlock.gif    
InBlock.gif    
For i = LBound(vstrFolder) + 1 To UBound(vstrFolder)
InBlock.gif        
If i = UBound(vstrFolder) Then
InBlock.gif            
Call CheckSubNode(Cur_Node, vstrFolder(i), True)
InBlock.gif        
Else
InBlock.gif            
Call CheckSubNode(Cur_Node, vstrFolder(i), False)
InBlock.gif        
End If
InBlock.gif       
InBlock.gif    
Next i
InBlock.gif            
InBlock.gif    
Set Cur_Node = Nothing
InBlock.gif
Exit Function
InBlock.gifErrHandle:
InBlock.gif    
Set Cur_Node = Nothing
ExpandedBlockEnd.gif
End Function

None.gif
None.gif
' ********************************************************************
None.gif'
Description : 將字符串數組裝載進vTreeView中
None.gif'
 ================================================================
None.gif'
    Name                   Date                  Description
None.gif'
  ---------           ---------------        -------------------
None.gif'
  RogerWang               29/03/2006            Class created
None.gif'
*********************************************************************
ExpandedBlockStart.gifContractedBlock.gif
Public   Function CheckSubNode() Function CheckSubNode(ByRef Cur_Node As Node, ByVal NodeName As StringByVal isEnd As BooleanAs Node
InBlock.gif    
On Error GoTo ErrHandle
InBlock.gif    
Dim Dest_Node As Node
InBlock.gif        
InBlock.gif    
If Cur_Node.Children = 0 Then
InBlock.gif        
Set Cur_Node = vTreeview.Nodes.Add(Cur_Node.Key, tvwChild, Cur_Node.Key & NodeName, NodeName, 12)
InBlock.gif        Cur_Node.Expanded 
= True
InBlock.gif        
InBlock.gif    
Else
InBlock.gif        
Set Dest_Node = Cur_Node.Child
InBlock.gif        
InBlock.gif        
Do
InBlock.gif        
InBlock.gif            
If UCase(Trim$(Dest_Node.Text)) = UCase(Trim$(NodeName)) Then
InBlock.gif                
Set Cur_Node = Dest_Node
InBlock.gif                Cur_Node.Expanded 
= True
InBlock.gif                
If isEnd Then
InBlock.gif                    Cur_Node.ForeColor 
= vbBlue
InBlock.gif                
End If
InBlock.gif                
Exit Function
InBlock.gif            
Else
InBlock.gif                
Set Dest_Node = Dest_Node.Next
InBlock.gif            
End If
InBlock.gif        
Loop Until Dest_Node Is Nothing
InBlock.gif            
InBlock.gif        
Set Dest_Node = vTreeview.Nodes.Add(Cur_Node.Key, tvwChild, Cur_Node.Key & NodeName, NodeName, 12)
InBlock.gif        
Set Cur_Node = Dest_Node
InBlock.gif
InBlock.gif    
End If
InBlock.gif    Cur_Node.Expanded 
= True
InBlock.gif    Cur_Node.ForeColor 
= vbRed
InBlock.gif    
InBlock.gif    
Set Dest_Node = Nothing
InBlock.gif        
InBlock.gif
Exit Function
InBlock.gifErrHandle:
InBlock.gif    
Set Dest_Node = Nothing
InBlock.gif    Debug.Print Err.Description
ExpandedBlockEnd.gif
End Function

None.gif
None.gif
' ********************************************************************
None.gif'
Description : 將vTreeView目錄樹信息裝載入OutLook文件夾中
None.gif'
 ================================================================
None.gif'
    Name                   Date                  Description
None.gif'
  ---------           ---------------        -------------------
None.gif'
  RogerWang               27/03/2006            Class created
None.gif'
*********************************************************************
None.gif'
遞歸從vTreeview中讀出Node,根據foreColre顏色來判斷是不是要新增
ExpandedBlockStart.gifContractedBlock.gif
Public   Function CheckOutLookFolder() Function CheckOutLookFolder(ByRef Source_Folder As mapiFolder, ByRef Source_Node As Node) As Boolean
InBlock.gif    
On Error GoTo ErrHandle
InBlock.gif    
Dim Dest_Folder As mapiFolder
InBlock.gif    
Dim Dest_Node As Node
InBlock.gif    
InBlock.gif    
If Source_Node.Children > 0 Then
InBlock.gif        
Set Dest_Node = Source_Node.Child
InBlock.gif        
InBlock.gif        
Do
InBlock.gif            
'如果是紅色,則新增文件夾
InBlock.gif
            If Dest_Node.ForeColor = vbRed Then
InBlock.gif               
Set Dest_Folder = Source_Folder.Folders.Add(Dest_Node.Text)
InBlock.gif            
'否則遞歸下一個目的文件夾
InBlock.gif
            Else
InBlock.gif               
Set Dest_Folder = m_objFolders.Item(Dest_Node.Key)
InBlock.gif            
End If
InBlock.gif            
InBlock.gif            
Call CheckOutLookFolder(Dest_Folder, Dest_Node)
InBlock.gif            
Set Dest_Node = Dest_Node.Next
InBlock.gif        
Loop Until Dest_Node Is Nothing
InBlock.gif    
End If
InBlock.gif    
InBlock.gif    
Set Dest_Node = Nothing
InBlock.gif    
Set Dest_Folder = Nothing
InBlock.gif
Exit Function
InBlock.gifErrHandle:
InBlock.gif    
Set Dest_Node = Nothing
InBlock.gif    
Set Dest_Folder = Nothing
ExpandedBlockEnd.gif
End Function

None.gif
None.gif
None.gif
None.gif
None.gif
None.gif
None.gif
None.gif
None.gif
None.gif
None.gif
None.gif
None.gif
None.gif

转载于:https://www.cnblogs.com/dotnetbbs/archive/2006/05/09/394750.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值