Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: luna am 29.05.02 - 16:57:28

Titel: export to excel
Beitrag von: luna am 29.05.02 - 16:57:28
hallo,

ich hab mal vor laengerer zeit irgendwo ein script gefunden, das den view einfach und schnell ins excel exportiert. das ist sehr schoen schnell und einfach.

ich habe es in einer datenbank in benutzung, da funzt es einwandfrei. in der naechsten allerdings krieg ich eine fehlermeldung:
type mismatch
mittendrin und er bricht ab.


hier das script:
Sub Click(Source As Button)
     Dim Session As New NotesSession
     Dim db As NotesDatabase
     Dim sourceview As NotesView
     Dim sourcedoc As NotesDocument
     Dim dataview As NotesView
     Dim datadoc As NotesDocument
     Dim maxcols As Integer
     Dim ws As New Notesuiworkspace
     Dim uiview As notesuiview
     Dim cols As Integer
     Dim rows As Integer
     Dim getfield As Variant
     
     Set db = session.CurrentDatabase
     Set uiview=ws.currentview
     Set dataview = uiview.view
     Dim xlApp As Variant
     Dim xlsheet As Variant
     
     Set xlApp = CreateObject("Excel.Application")
     xlApp.StatusBar = "Import vorbereiten..."
     xlApp.Visible = True
     xlApp.Workbooks.Add
     xlApp.ReferenceStyle = 3
     Set xlsheet = xlApp.Workbooks(1).Worksheets(1)
     xlsheet.Name = uiview.viewname
     xlApp.StatusBar = "Die Überschriften werden erstellt..."
     cols=1
     Forall X In dataview.Columns
           xlsheet.Cells(1,cols).Value =X.title
           cols=cols+1
     End Forall
     
     xlApp.StatusBar = "Überschriften wurden erstellt...fertig!"
     xlApp.StatusBar = "Der Import wird vorbereitet..."
     xlApp.StatusBar = "Die Daten werden importiert..."
     Set datadoc = dataview.getfirstdocument
     cols=1
     rows=2
     maxcols= dataview.columncount
     While Not (datadoc Is Nothing)
           For cols=0 To maxcols-1
                 getfield = Cstr(datadoc.ColumnValues( cols ))
                 xlsheet.Cells(rows,cols+1).Value = getfield  
           Next
           rows=rows+1
           cols=0
           Set datadoc = dataview.getnextdocument(datadoc)  
     Wend
     xlApp.StatusBar = "Import beendet! ... Formatieren starten"
     
     xlApp.Rows("1:1").Select
     xlApp.Selection.Font.Bold = True
     xlApp.Range(xlsheet.Cells(1,1), xlsheet.Cells(1,maxcols)).Select
     With xlApp.Selection.Interior
           .ColorIndex = 1' Spaltenkopf Farbe
           .Pattern = 0  
           .PatternColorIndex =0
     End With
     xlApp.StatusBar = "Titel formatiert"
     xlApp.Rows("1:1").Select 'Zeile 1 bis 1 ist  
     xlApp.Selection.Font.Bold = True ' Fett
     xlApp.Range(xlsheet.Cells(1,1), xlsheet.Cells(rows,maxcols)).Select
     xlApp.Selection.Font.Name = "Arial" 'Schrift Art
     xlApp.Selection.Font.Size = 10'Schriftgröße der Excel Tab
     xlApp.Selection.Columns.AutoFit
     With xlApp.Worksheets(1)
           .PageSetup.Orientation = 2
           .PageSetup.centerheader = "inventory list" ' Tabellen Überschrift
           .Pagesetup.RightFooter = "Seite: &P" & Chr$(13) & "Date: &D"
' Arbeiten Sie mit einer Englischen Excelversion müssen  
'sie bei Seite: &P verwenden  
           .Pagesetup.CenterFooter = ""
     End With
     xlApp.ReferenceStyle = 1
'Wo möchten Sie den Courser hinsetzen hier A1
     
     xlApp.Range("A1").Select
     
     xlApp.StatusBar = "Fertig!"
End Sub



kann es sein, dass da ein fehler in meiner datenbank ist? oder eher, weil in der view 547 dokumente drin sind?

ich wuerde das soooooo gerne hernehmen ! kann mir jemand helfen, das hinzukriegen? kenn mich mit script 0,0 aus.

vielen dank und gruss,
daniela

p.s.: habs grad noch in einer anderen DB probiert: gleiche fehlermeldung, schon nach 5 zeilen. in dieser DB sind aber nur 62 zeilen drin.
irgendwas ist da falsch. ich kanns nicht finden.
Titel: Re: export to excel
Beitrag von: Linus am 29.05.02 - 17:25:15
Ich vermute, daß es an deinen Daten liegt - daß irgendwelche Felder nicht so gefüllt sind wie erwartet.
Schalte doch mal den Debugger an, dann kriegst du raus, in welcher Zeile der Fehler auftritt.
Titel: Re: export to excel
Beitrag von: luna am 29.05.02 - 17:28:47
hallo linus,

mach ich gerne, ich wuerde ja gerne rausfinden, was da warum nicht klappt.

allerdings nur, wenn du mir auch sagst, wie man so einen debugger einschalten tut!  :-[

danke und gruss,
daniela
Titel: Re: export to excel
Beitrag von: eknori am 29.05.02 - 17:37:09
Ömmm, wenn ich mir das so recht ansehe, ist das Script von mir. Ich schau mir das mal an.

eknori
Titel: Re: export to excel
Beitrag von: eknori am 29.05.02 - 17:51:34
Hier habe ich eine aktuellere version für dich. Ist auch noch flexibler ( Copy and Paste und läuft in jeder Datenbank ohne Anpassung )

http://www.atnotes.de/cgi-bin/yabb/YaBB.pl?board=Downloads;action=display;num=1014050197

eknori
Titel: Re: export to excel
Beitrag von: HipSlu am 30.05.02 - 16:08:57
hab da was gefunden, vielleicht ists hilfreich:

http://www-10.lotus.com/ldd/sandbox.nsf/ByDateNJ/c59944cc3ebada0300256bc80055c05b?OpenDocument
Titel: Re: export to excel
Beitrag von: luna am 31.05.02 - 16:19:08
Zitat
Hier habe ich eine aktuellere version für dich. Ist auch noch flexibler ( Copy and Paste und läuft in jeder Datenbank ohne Anpassung )

http://www.atnotes.de/cgi-bin/yabb/YaBB.pl?board=Downloads;action=display;num=1014050197

eknori



ich sag nur: W O W

danke ulrich, nicht nur, dass es jetzt in jeder datenbank läuft, sondern es laesst auch noch den view aussuchen !!! ich bin sowas von begeistert !!!

vielen vielen dank, das ist sehr hilfreich fuer mich (ich hab leider user, die muessen halt alles im excel haben, wahrscheinlich wegen weiterschicken oder auch im grafiken zu erstellen).

vielen lieben dank, gruss,
daniela  ;D ;D ;D

danke auch Hip Slu, aber ich bleibe jetzt bei dem Tool von eknori, weil es läuft ja. und sowas von gut !
Titel: Re: export to excel
Beitrag von: alexB am 02.11.06 - 10:26:16
Hallo,

ich habe das Skript ein bischen umgemodelt.
Es werden jetzt nur die in der Ansicht markierten Dokumente exportiert
und zwar in der Reigenfolge, wie sie in der Ansicht stehen.

Gruß, Alex


Sub Click(Source As Button)
   Dim Session As New NotesSession
   Dim db As NotesDatabase
   Dim collection As NotesDocumentCollection
   Dim sourceview As NotesView
   Dim sourcedoc As NotesDocument
   Dim dataview As NotesView
   Dim datadoc As NotesDocument
   Dim docSelected As NotesDocument
   Dim maxcols As Integer
   Dim ws As New Notesuiworkspace
   Dim uiview As notesuiview
   Dim cols As Integer
   Dim rows As Integer
   Dim getfield As Variant
   Dim xlApp As Variant
   Dim xlsheet As Variant
   
   Set db = session.CurrentDatabase
   Set collection = db.UnprocessedDocuments   
   
   Antwort% = Messagebox("Es werden " & collection.Count & " Dokumente exportiert. Fortfahren?", 33 , "Export")   
   If Antwort% = 2 Then    Exit Sub
   
   Set uiview=ws.currentview
   Set dataview = uiview.view
   
   'Excel für Import vorbereiten und Spaltenüberschriften setzen
   Set xlApp = CreateObject("Excel.Application")
   xlApp.StatusBar = "Import vorbereiten..."
   xlApp.Visible = True
   xlApp.Workbooks.Add
   xlApp.ReferenceStyle = 3
   Set xlsheet = xlApp.Workbooks(1).Worksheets(1)
   xlsheet.Name = uiview.viewname
   xlApp.StatusBar = "Die Überschriften werden erstellt..."
   cols=1
   Forall X In dataview.Columns
      xlsheet.Cells(1,cols).Value =X.title
      cols=cols+1
   End Forall
   
   xlApp.StatusBar = "Überschriften wurden erstellt...fertig!"
   xlApp.StatusBar = "Der Import wird vorbereitet..."
   xlApp.StatusBar = "Die Daten werden importiert..."
   Set datadoc = dataview.GetFirstDocument
   cols=1
   rows=2
   maxcols= dataview.columncount
   
   While Not (datadoc Is Nothing)      
      Set docSelected = collection.GetDocument(datadoc) 'Überprüfen, ob Dokument in der Ansicht markiert ist
      If Not docSelected Is Nothing Then 'Wenn Dokument  in der Ansicht markiert ist, dann exportieren
         For cols=0 To maxcols-1 'Alle Spalten durchlaufen
            getfield = Cstr(datadoc.ColumnValues( cols ))
            xlsheet.Cells(rows,cols+1).Value = getfield                      
         Next      
         rows=rows+1
      End If
      cols=0
      Set datadoc = dataview.GetNextDocument(datadoc)             
   Wend
   
   'Excelblatt formatieren
   xlApp.StatusBar = "Import beendet! ... Formatieren starten"
   xlApp.Rows("1:1").Select
   Stop
   xlApp.Selection.Font.Bold = True
   xlApp.Range(xlsheet.Cells(1,1), xlsheet.Cells(1,maxcols)).Select
   With xlApp.Selection.Interior
      .ColorIndex = 0' Spaltenkopf Farbe
      .Pattern = 17
      .PatternColorIndex =0
   End With
   xlApp.StatusBar = "Titel formatiert"
   xlApp.Rows("1:1").Select 'Zeile 1 bis 1 ist
   xlApp.Range(xlsheet.Cells(1,1), xlsheet.Cells(rows,maxcols)).Select
   xlApp.Selection.Font.Name = "Arial" 'Schrift Art
   xlApp.Selection.Font.Size = 10'Schriftgröße der Excel Tab
   xlApp.Selection.Columns.AutoFit
   With xlApp.Worksheets(1)
      .PageSetup.Orientation = 2
      .PageSetup.centerheader = "ATNOTES" ' Tabellen Überschrift
      .Pagesetup.RightFooter = "Seite: &S" & Chr$(13) & "Date: &D"
' Arbeiten Sie mit einer Englischen Excelversion müssen
'sie bei Seite: &P verwenden
      .Pagesetup.CenterFooter = ""
   End With
   xlApp.ReferenceStyle = 1
'Wo möchten Sie den Courser hinsetzen hier A1
   xlApp.Range("A1").Select
   
   xlApp.StatusBar = "Fertig!"
End Sub
Titel: Re: export to excel
Beitrag von: ata am 06.11.06 - 08:17:39
... 2 kleine Anmerkungen seien erlaubt:

rows sollte als Long deklariert werden, da es in einer Excel-Tabelle bis zu 64.000 Zeilen geben kann. Demzufolge sollte es auch abgefangen werden - eventuell ein weiteres Sheet beginnen...

Option Explicit bringt zutage, daß die Variable "Antwort" nicht deklariert wurde...

Gruß Toni
Titel: Re: export to excel
Beitrag von: Axel am 06.11.06 - 09:04:49
Eigentlich fehlt mir hier auch noch eine vernüftige Fehlerbehandlung.

On Error Goto....

Axel
Titel: Re: export to excel
Beitrag von: ewald am 26.04.07 - 23:05:59
Hallo,

hab beim Stöbern hier im Forum das gefunden:

Zitat
Hier habe ich eine aktuellere version für dich. Ist auch noch flexibler ( Copy and Paste und läuft in jeder Datenbank ohne Anpassung )

http://www.atnotes.de/cgi-bin/yabb/YaBB.pl?board=Downloads;action=display;num=1014050197

eknori

Leider geht de Link nicht mehr :-(

Gibts diese Version von eknori oder einen neuere irgendwo?

Grüsse Ewald