Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet 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.
-
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.
-
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
-
Ömmm, wenn ich mir das so recht ansehe, ist das Script von mir. Ich schau mir das mal an.
eknori
-
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
-
hab da was gefunden, vielleicht ists hilfreich:
http://www-10.lotus.com/ldd/sandbox.nsf/ByDateNJ/c59944cc3ebada0300256bc80055c05b?OpenDocument
-
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 !
-
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
-
... 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
-
Eigentlich fehlt mir hier auch noch eine vernüftige Fehlerbehandlung.
On Error Goto....
Axel
-
Hallo,
hab beim Stöbern hier im Forum das gefunden:
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