У меня есть представление, отображающее 9 строк информации для каждого документа. В этом представлении у меня есть функция экспорта в Excel с использованием приведенного ниже кода для экспорта документа в Excel.
Данные не экспортируются должным образом для первых двух документов, например, если у меня есть 7 строк для первого документа, то они должны экспортировать 7 строк, но экспортируются только 2 строки. Это происходит только для первых 2 документов, начиная с 3-го документа, независимо от того, в какой строке нет информации, которую он экспортирует, чтобы достичь совершенства. Я попытался изменить код для строки% с row% = row% + 2 на row% = row% + 3, 4 или 5, но создание ненужных строк в таблице Excel не является динамическим и выглядит также странно. Любая идея, что мне делать, чтобы строки динамически увеличивались.
Sub Initialize
'On Error Goto errhandler
On Error Resume Next
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doccoll As NotesDocumentCollection
Dim view As NotesView
Dim doc As NotesDocument
Dim otherdoc As NotesDocument
Set db = session.CurrentDatabase
Set view = db.GetView("CRMOpenIssue")
Set doccoll=db.UnprocessedDocuments
Set oExcel = CreateObject ( "Excel.Application" )
Set oWorkbook = oExcel.Workbooks.Add
Set oWorkSheet= oWorkbook.Sheets ( 1 )
oWorkSheet.Cells(1,1).value="Quote# "
oWorkSheet.Cells(1,2).value="Quote Line#"
oWorkSheet.Cells(1,3).value="Customer - fab"
oWorkSheet.Cells(1,4).value="OppNum"
oWorkSheet.Cells(1,5).value="OppLine#"
oWorkSheet.Cells(1,6).value="Open Issue#"
oWorkSheet.Cells(1,7).value="Open Issue"
oWorkSheet.Cells(1,8).value="Category"
oWorkSheet.Cells(1,9).value="Due date"
oWorkSheet.Cells(1,10).value="Owner to resolve issue"
oWorkSheet.Cells(1,11).value="Owner/PME Verify when closed"
oExcel.Worksheets(1).Range("A1:K1").Font.Bold = True
oExcel.columns("A:A").ColumnWidth=15.00
oExcel.columns("B:B").ColumnWidth=8.00
oExcel.columns("C:C").ColumnWidth=15.00
oExcel.columns("D:D").ColumnWidth=10.00
oExcel.columns("E:E").ColumnWidth=8.00
oExcel.columns("F:F").ColumnWidth=8.00
oExcel.columns("G:G").ColumnWidth=30.00
oExcel.columns("H:H").ColumnWidth=30.00
oExcel.columns("I:I").ColumnWidth=15.00
oExcel.columns("J:J").ColumnWidth=15.00
oExcel.columns("K:K").ColumnWidth=30.00
row% = 1
offset% = 0
lastOffset% = 0
If doccoll.count >1 Then 'if more than one doc selected then confirm
resp = Messagebox("Do you want to export only the " & _
"selected " & doccoll.count & " documents?", 36, "Selected only?" )
Else
Messagebox "Exporting all rows. (To export only selected " & _
"rows tick those required in the left margin first.)"
End If '6= yes
oExcel.visible=True
If resp=6 Then 'selected documents
Set doc = doccoll.GetFirstDocument
While Not doc Is Nothing
If resp=6 Then
row% = row%+2
col% = 0 'Reset the Columns
Set otherdoc = view.getnextdocument(doc)
If otherdoc Is Nothing Then
Set otherdoc = view.getprevdocument(doc)
If otherdoc Is Nothing Then
Print " >1 doc should be selected"
End
Else
Set otherdoc = view.getnextdocument(otherdoc)
End If
Else 'got next doc
Set otherdoc = view.getprevdocument(otherdoc)
End If
End If
Forall colval In otherdoc.ColumnValues
col% = col% + 1
If Isarray(colval) Then
columnVal=Fulltrim(colval)
For y = 0 To Ubound(columnVal)
offset% = row% + y +lastOffset%
oWorkSheet.Cells(offset%,col%).value = columnVal(y)
Next
Else
oWorkSheet.Cells(row%, col%).value = colval
End If
End Forall
Set doc = doccoll.GetNextDocument(doc)
Wend
Else 'all documents
Set otherdoc =view.GetFirstDocument
While Not otherdoc Is Nothing
row% = row% + 2
col% = 0 'Reset the Columns
'Loop through all the column entries
'Forall colval In entry.ColumnValues
Forall colval In otherdoc.ColumnValues
col% = col% + 1
If Isarray(colval) Then
columnVal=Fulltrim(colval)
For y = 0 To Ubound(columnVal)
offset% = row% + y +lastOffset%
oWorkSheet.Cells(offset%,col%).value = columnVal(y)
Next
Else
oWorkSheet.Cells(row%, col%).value = colval
End If
End Forall
row%=offset%
Set otherdoc=view.GetNextDocument(otherdoc)
Wend
End If
'errhandler:
Call oExcel.quit()
Set oWorkSheet= Nothing
Set oWorkbook = Nothing
Set oExcel = Nothing
Print "Done"
End Sub