把notes里的以OLE形式存放的对象,导出成一个文件。

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

把notes里的以OLE形式存放的对象,导出成一个文件。

Sub Click(Source As Button)

On Error Goto isoErr

Dim w As New NotesUIWorkspace

Dim s As New NotesSession

Dim isoLog As New NotesLog("WriteIso")

Dim dbCur As NotesDatabase

Dim dclCur As NotesDocumentCollection

Dim docCur As NotesDocument

Dim ole As NotesEmbeddedObject

Dim att As Variant

Dim dbNew As NotesDatabase

Call isoLog.OpenFileLog("d:\isoLog.txt")

' isoLog.OverwriteFile=True

isoLog.LogAction("===========================当前时间是:"+Now()+"======================================")

Set dbCur=s.CurrentDatabase

Set dbNew=s.GetDatabase("CN=zhbpms/O=gdtel","zhteloa\IsoFileManager.nsf",False)

%REM

Dim docIso As NotesDocument

Dim docF As NotesDocument

Set docIso=dbNew.CreateDocument

Set docF=dbNew.GetDocumentByUNID("9D7EE71D70644E7048256F3800345178")

docIso.form="F_DeptFile"

docIso.ParentDocUNID="9D7EE71D70644E7048256F3800345178"

docIso.Str_Type="File"

docIso.FolderName="导出操作"

docIso.Str_OrgType="Org"

docIso.DocID=docIso.UniversalID

docIso.delSymbol="0"

docIso.dbpath="zhteloa/IsoFileManager.nsf"

If docIso.Save(True,False) Then

Call docIso.MakeResponse(docF)

Call docIso.Save(True,False)

Else

isoLog.LogAction("a")

End If

%ENDREM

Set dclCur=dbCur.UnprocessedDocuments

If dclCur.Count>0 Then

Set docCur=dclCur.GetFirstDocument

While Not docCur Is Nothing

'拆离旧ISO的数据

If docCur.HasEmbedded Then

Dim App

Dim Document

Dim RTItem As NotesRichTextItem

Dim Embedded As NotesEmbeddedObject

Set RTItem = docCur.GetFirstItem("Body")

Set Embedded = RTItem.EmbeddedObjects(0)

Call Embedded.Activate(True)

Set App = Embedded.Object

'处理excel

If docCur.~$OLEObjProgID(0)="Excel.Sheet" Then

Call app.saveAs("d:\"+docCur.UniversalID+".xls")

' Set wks=app.Application.Worksheets(1)

' Call wks.saveAs("d:\"+docCur.UniversalID+".xls")

' App.Application.ActiveDocument.SaveAs("d:\\"+docCur.UniversalID+".xls")

End If

'处理ppt

If docCur.~$OLEObjProgID(0)="PowerPoint.Show" Then

Call app.saveAs("d:\"+docCur.UniversalID+".ppt")

End If

'处理word

If docCur.~$OLEObjProgID(0)="Word.Document" Then

Call app.saveAs("d:\"+docCur.UniversalID+".doc")

' Set Document = App.Application.Documents(1)

' Call Document.saveAs("d:\\"+docCur.UniversalID+".doc")

End If

End If

'把拆离出来的数据放到新的OA库中

Dim docIso As NotesDocument

Dim rtf As NotesRichTextItem

Dim docF As NotesDocument

Dim vwOrg As NotesView

Dim dclSec As NotesDocumentCollection

Set docIso=dbNew.CreateDocument

Set vwOrg=dbnew.GetView("vwRootF")

'找一级文件夹

If doccur.LargeKind(0)<>"" Then

' Dim key As String

' If doccur.LargeKind(0)="质量记录表格清单" Or doccur.LargeKind(0)="质量记录表格清单" Then

' key="质量记录表样及清单"

' Else

' key=doccur.LargeKind(0)

' End If

Set docF=vwOrg.GetDocumentByKey(doccur.LargeKind(0))

If docF Is Nothing Then

isoLog.LogAction("新OA中没有“"+doccur.LargeKind(0)+"”这个一级分类!")

Goto nextProDoc

End If

End If

'查找二级文件夹

If doccur.SecondKind(0)<>"" Then

Set dclSec=docF.Responses

Dim docTmp As NotesDocument

Dim hasSec As Boolean

hasSec=False

If dclsec.Count>0 Then

For i=1 To dclsec.Count

Set docTmp=dclsec.GetNthDocument(i)

If docTmp.FolderName(0)=doccur.SecondKind(0) Then

Set docF=docTmp

hasSec=True

End If

Next

End If

If (Not hasSec) Or dclSec.Count=0 Then

isoLog.LogAction("新OA中没有“"+doccur.SecondKind(0)+"”这个二级分类!")

Goto nextProDoc

End If

End If

docIso.form="F_DeptFile"

docIso.ParentDocUNID=docF.UniversalID

docIso.Str_Type="File"

docIso.FolderName=docCur.subject(0)

docIso.Str_OrgType="Org"

docIso.DocID=docIso.UniversalID

docIso.delSymbol="0"

docIso.dbpath="zhteloa/IsoFileManager.nsf"

docIso.Hidden="0"

docIso.isArchivesAttach=""

'设置正文信息

docIso.HasWordDoc="1"

IsUseUpTemplate="0"

OFileName=docCur.UniversalID+".doc"

OFileDate=""

Dim srcFileName As String

Set rtf=docIso.CreateRichTextItem("LastVersionDoc")

If docIso.Save(True,False) Then

If docCur.~$OLEObjProgID(0)="Excel.Sheet" Then

srcFileName=docCur.UniversalID+".xls"

' Set wks=app.Application.Worksheets(1)

' Call wks.saveAs("d:\"+docCur.UniversalID+".xls")

' App.Application.ActiveDocument.SaveAs("d:\\"+docCur.UniversalID+".xls")

End If

'处理ppt

If docCur.~$OLEObjProgID(0)="PowerPoint.Show" Then

srcFileName=docCur.UniversalID+".ppt"

End If

'处理word

If docCur.~$OLEObjProgID(0)="Word.Document" Then

srcFileName=docCur.UniversalID+".doc"

' Set Document = App.Application.Documents(1)

' Call Document.saveAs("d:\\"+docCur.UniversalID+".doc")

End If

Call rtf.EmbedObject(EMBED_ATTACHMENT,"","d:\\"+srcFileName,srcFileName)

Call docIso.MakeResponse(docF)

Call docIso.Save(True,False)

Else

isoLog.LogAction("a")

End If

nextProDoc:

Set docCur=dclCur.GetNextDocument(docCur)

Wend

End If

isoLog.LogAction("===========================当前时间是:"+Now()+"======================================")

Call isoLog.Close

Exit Sub

isoERR:

Print "第"+Cstr(Erl())+" 行,出现 "+Error()+" 错误"

isoLog.LogAction(Cstr(Erl())+" "+Error())

Call isoLog.Close

End Sub

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航