要导出的Lotus Script Action

时间:2013-12-27 14:56:10

标签: export lotusscript

请使用此代码获取战利品:

我想将我当前的视图从Lotus Notes导出到Excel。但是我无法做到。我以前从未使用过LotusScript

子点击(来源为按钮)

    Dim session As New NotesSession
    Dim wks As New NotesUIWorkspace 
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim uiView As NotesUIView
    Dim doc As NotesDocument
    Dim column As NotesViewColumn 

    Dim row As Long,colcounter As Long,arrcnt As Long,arrcounter As Long, x As Long
    Dim filename As String, currentvalue As String
    Dim rowsatonce As Integer,cn As Integer 
    Dim xlApp As Variant, xlsheet As Variant,xlwb As Variant, xlrange As Variant, tempval As Variant
    Dim DataArray
    Dim VColumns List As String

    Redim DataArray(0, 80) As String 
'80 columns is our expected max number of columns in the view. It's dynamically recomputed below to actual (lower) number. Change if the number of columns is larger. 

    Set db=session.CurrentDatabase
    Set xlApp = CreateObject("Excel.Application")

    xlApp.Visible = True 'Excel program is visible (to avoid errors and see what is happening)

    Set xlwb=xlApp.Workbooks.Add
    Set xlsheet =xlwb.Worksheets(1) 

    Set uiView = wks.CurrentView
    Set view = db.GetView( uiView.ViewName ) ' get the view currently open in UI 
    arrcnt=0
    row=1
    colcounter=0
    rowsatonce=20
    Forall c In view.Columns 
        If c.isIcon<>True Then ' do not include icon columns
            If c.Formula<>"""1""" And c.Formula<>"1" Then 'do not include columns which are used for counting docs (Total)
                colcounter=colcounter+1
                DataArray(row-1, colcounter-1) =c.Title
                VColumns(Cstr(cn))=Cstr(cn)
            End If
        End If
        cn=cn+1
    End Forall
    Redim Preserve DataArray(0, colcounter-1) As String
    xlsheet.Range("A1").Resize(1, colcounter).Value = DataArray ' set column names
    Redim DataArray(rowsatonce-1, colcounter-1) As String
    row=2
    x=0
    Set doc = view.GetFirstDocument 
    While Not ( doc Is Nothing ) 
        Forall col In VColumns
            currentvalue=""
            tempval= doc.ColumnValues(Val(col))
            If Isarray(tempval) Then
                Forall v In tempval
                    If currentvalue="" Then
                        currentvalue=v
                    Else
                        currentvalue=currentvalue+","+v
                    End If
                End Forall
            Else
                currentvalue=tempval
            End If
            x=x+1
            DataArray(arrcounter, x-1) =currentvalue 
        End Forall
        x=0 
        row=row+1
        arrcounter=arrcounter+1
        If arrcounter/rowsatonce=arrcounter\rowsatonce And arrcounter<>0 Then 
            xlsheet.Range("A"+Cstr(arrcnt*rowsatonce+2)).Resize(rowsatonce, colcounter).Value = DataArray
            arrcnt=arrcnt+1
            arrcounter=0
            Redim DataArray(rowsatonce-1, colcounter-1) As String
        End If
        Set doc = view.GetNextDocument (doc)
    Wend 

    If arrcounter/rowsatonce<>arrcounter\rowsatonce And arrcounter>0 Then
' Redim Preserve DataArray(arrcounter, colcounter-1) As String 
        xlsheet.Range("A"+Cstr(arrcnt*rowsatonce+2)).Resize(arrcounter, colcounter).Value = DataArray
    End If
    Msgbox "Done"


End Sub

我正在尝试在Lotus Notes中创建一个操作,以将当前视图导出到excel中。它给了我错误:“对象变量未设置”

2 个答案:

答案 0 :(得分:2)

我建议你至少添加一个基本的错误处理。 在开头添加“on error goto handler”

和底部类似

exit_point:
   exit sub
handler:
  print error$ & " in line " & cstr(erl)
resume exit_point

答案 1 :(得分:0)

您可能想要使用我的导出脚本:from here

我已经超过10年没有改变它,但它仍然有效。从Notes8开始,我更喜欢使用Notes中的“View Copy as Table”功能...

此致

丹尼尔