Autor Thema: Export nach Excel  (Gelesen 2459 mal)

Offline MarkusL

  • Aktives Mitglied
  • ***
  • Beiträge: 124
  • Geschlecht: Männlich
Export nach Excel
« am: 23.08.11 - 11:28:44 »
Hallo zusammen,

ich habe mir ein Script zum Export von Daten nach Excel zusammengebastelt.
Das Script funktioniert (fast) reibungslos. Nur wird leider die erste Datenzeile entweder nicht übertragen oder sie wird gelöscht. Das kann ich leider nicht so genau definieren, da ich diese nicht sehe.

Könnte sich mal bitte jemand mein Script ansehen und mir den Fehler mitteilen?

Vielen Dank für die Hilfe
Markus

Sub Click(Source As Button)
   On Error Resume Next
   Dim session As New NotesSession
   Dim wks As New NotesUIWorkspace
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim doc As NotesDocument
   Dim column As NotesViewColumn
   Dim uidoc As NotesUIDocument
   Set uidoc = wks.CurrentDocument
   
   Dim xlApp As Variant, xlsheet As Variant, xlwb As Variant, tempval As Variant
   Dim DataArray
   Dim VColumns List As String
   
   Redim DataArray(0, 80) As String '80 = Max Columns, ggf. anpassen
   
   Ansicht = "$alle" 'hier die richtige Ansicht eintragen
   
   Set db=session.CurrentDatabase
   Set xlApp = CreateObject("Excel.Application")
   
   xlApp.Visible = True
   
   Set xlwb=xlApp.Workbooks.Add
   Set xlsheet =xlwb.Worksheets(1)
   
   With xlwb
      .FileFormat = -4143   ' -4143 = Format xls 97-2003
   End With
   
   Set view = db.GetView(Ansicht)        
   
   Dim Formula As String
   Dim Formula_Original As String
   
   Formula_Original = view.SelectionFormula
   
   Formula = uidoc.FieldGetText("ViewFormula")
   
   If Formula <> "" Then
      view.SelectionFormula = Formula
   Else
      view.SelectionFormula = Formula_Original
   End If
   view.Refresh
   
   Call uidoc.FieldSetText("ViewFormula", Formula_Original)
   
   arrcnt=0
   row=1
   colcounter=0
   rowsatonce=20
   Forall c In view.Columns
      If  c.isHidden = False Then   ' do not include hidden columns       
      If c.isIcon = False 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
   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
   Print "Exportiere Daten"
   
   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
      xlsheet.Range("A"+Cstr(arrcnt*rowsatonce+2)).Resize(arrcounter, colcounter).Value = DataArray
   End If
   
End Sub

« Letzte Änderung: 23.08.11 - 15:07:36 von MarkusL »
Version Lotus Notes / Domino: 8.5.3
Server: 1 Cluster, 1 weiterer Server
Anzahl Benutzer: ca. 230

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Export nach Excel
« Antwort #1 am: 23.08.11 - 11:38:03 »
Hi.

Excel Export 2.0 Du musst das Rad nicht neu erfinden  ;)
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline tge

  • Junior Mitglied
  • **
  • Beiträge: 65
Re: Export nach Excel
« Antwort #2 am: 23.08.11 - 14:38:14 »
Hallo!

In der Zeile
DataArray(arrcounter, x-1) =currentvalue
ist die Variable "arrcounter" bei Übernahme der ersten Ansichtszeile = "" (Leer).
Du müsstest also nach
Redim DataArray(rowsatonce-1, colcounter-1) As String
noch "arrcounter" = 0 setzen.

Gruß
Thorsten

Offline MarkusL

  • Aktives Mitglied
  • ***
  • Beiträge: 124
  • Geschlecht: Männlich
Re: Export nach Excel
« Antwort #3 am: 23.08.11 - 15:07:11 »
Danke für die Tipps.
Ich habe den Rat befolgt und mir das benötigte Tool aus Excel Export 2.0 kopiert. War zwar nicht 100%ig das, was ich benötige, aber dann baue ich meine DB ein wenig um.

Danke für die Hilfe
Markus
Version Lotus Notes / Domino: 8.5.3
Server: 1 Cluster, 1 weiterer Server
Anzahl Benutzer: ca. 230

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz