Autor Thema: Fehler bei Excel Export - OLE: Automation object error  (Gelesen 11481 mal)

Offline Gabe

  • Junior Mitglied
  • **
  • Beiträge: 52
Schönen guten Tag alle zusammen,

ich benötige mal wieder eure Hilfe bei einem kleinen Export Problem. Ich habe bereits versucht, Lösungen im Forum zu finden (über die Suche) - leider ohne Erfolg. Ich habe zwar inzwischen einige leichtere Anwendungen erstellt, jedoch bin ich noch ziemlich am Anfang. Ich erläutere mal mein Problem im Detail:
- Ich habe eine Anwendung gebastelt, welche zur Auswertung von Sonderkonditionen genutzt werden soll. Dabei habe ich darauf geachtet, dass die Anwendung so leicht wie möglich zu bedienen ist. Es gibt daher eine Aktionsschaltfläche, welche nach der Betätigung die verfügbaren Ansichten anzeigt und die ausgewählte anschließend in Excel exportiert. In meinen Tests verlief dies auch alles Problemlos (Hatte jedoch nur mit ca. 200 Dokumenten getestet. Inzwischen sind in der Anwendung jedoch über 500 Dokumente enthalten und ab dem 209 exportierten Datensatz erscheint die Meldung "OLE: Automation object error" und der Export bricht mittendrin ab. Wir nutzen im Betrieb aktuell Office 2003 (habe dies in meiner Testumgebung jedoch schon mit Office 2010 versucht).
- Die Aktion welche den Export auslöst startet einen Agenten und dieser enthält den folgenden Code:
Sub Initialize
   Dim Session As New NotesSession ,db As NotesDatabase
   Dim sourceview As NotesView,sourcedoc As NotesDocument
   Dim dataview As NotesView, dc As NotesDocumentCollection
   Dim datadoc As NotesDocument, maxcols As Integer
   Dim WS As New Notesuiworkspace
   Dim ViewString As String, Scope As String, GetField As Variant
   Dim C As NotesViewColumn, FieldName As String, K As Integer,N As Integer
   Dim xlApp As Variant, xlsheet As Variant, rows As Integer, cols As Integer
   Dim nitem As NotesItem  , entry As NotesViewEntry, vwNav As NotesViewNavigator
   Dim ShowView()  As Variant, i As Integer, VList As Variant, ColVals As Variant
   
   Set db = session.CurrentDatabase   'link to current database
   
         'fetch then display a list of views in the database
   Vlist= db.views
   K=Ubound(Vlist)  'get size of list
   Redim Preserve ShowView(K)
   N=-1
   For i = 0 To K
      If Len(Vlist(i).Name) >0 Then   
         FieldName=Trim(Vlist(i).Name)
         If Mid(Fieldname,1,1) <>"(" Then  'do not show hidden views
            N=N+1                           
            ShowView(N) = FieldName
         End If
      End If 
   Next i 
   Redim Preserve ShowView(N)
      'now sort the list - by default views are listing in the order that they were created
   For i=0 To N
      For K=i To N
         If  ShowView(i) > ShowView(k) Then
            FieldName=ShowView(i)   
            ShowView(i) = ShowView(k)
            ShowView(k)=FieldName
         End If
      Next k
   Next i 
   
   viewstring= ws.Prompt(PROMPT_OKCANCELLIST,"List of Views","Choose a View","",ShowView )
   If Len(viewstring)=0 Then Exit Sub
         'ViewString ="Dan's View"
   
   Set dataview = db.getview(ViewString)  'get selected view
   
   Set vwnav= dataview.createViewnav()
   
   rows = 1
   cols = 1
   maxcols=dataview.ColumnCount  'how many columns?
   
   Set xlApp = CreateObject("Excel.Application")  'start Excel with OLE Automation
   xlApp.StatusBar = "Creating WorkSheet. Please be patient..."
   xlApp.Visible = True
   xlApp.Workbooks.Add
   xlApp.ReferenceStyle = 2
   Set xlsheet = xlApp.Workbooks(1).Worksheets(1)   'select first worksheet
   
         'worksheet title
   xlsheet.Cells(rows,cols).Value ="View: " + ViewString + ", from Database: " +  db.title +",  Extract created on: " +  Format(Now,"mm/dd/yyyy HH:MM")
   
   xlApp.StatusBar = "Creating Column Heading. Please be patient..."
   
   rows=2  'column headings starts in row 2
   For K=1 To maxcols
      Set c=dataview.columns(K-1)
      xlsheet.Cells(rows,cols).Value = c.title
      cols = cols + 1
   Next K
   
   Set entry=vwnav.GetFirstDocument
   rows=3   'data starts in third row
   Do While Not (entry Is Nothing)
      
      For cols=1 To maxcols   
         colvals=entry.ColumnValues(cols-1)      'subscript =0
         scope=Typename(colvals)
         Select Case scope
         Case "STRING"
            xlsheet.Cells(rows,cols).Value ="'" +  colvals
         Case Else       
            xlsheet.Cells(rows,cols).Value = colvals
         End Select                     
      Next cols               
      xlApp.StatusBar = "Importing Notes Data   -    Document " & rows-1 '& " of " & dc.count & "." 
      rows=rows+1
      Set entry = vwnav.getnextdocument(entry)               
   Loop
   
   xlApp.Rows("1:1").Select
   xlApp.Selection.Font.Bold = True
   xlApp.Selection.Font.Underline = True
   xlApp.Range(xlsheet.Cells(2,1), xlsheet.Cells(rows,maxcols)).Select
   xlApp.Selection.Font.Name = "Arial"
   xlApp.Selection.Font.Size = 9
   xlApp.Selection.Columns.AutoFit
   With xlApp.Worksheets(1)
      .PageSetup.Orientation = 2
      
      .PageSetup.centerheader = "Report - Confidential"
      .Pagesetup.RightFooter = "Page &P" & Chr$(13) & "Date: &D"
      .Pagesetup.CenterFooter = ""
   End With
   xlApp.ReferenceStyle = 1
   xlApp.Range("A1").Select
   xlApp.StatusBar = "Importing Data from Lotus Notes Application was Completed."
         'xlapp.ActiveWorkbook.saveas "c:VX" + Trim(Format(Now,"yyy"))   'save with generated name
   dataview.clear 
   
   Set xlapp=Nothing   'stop OLE
   Set db=Nothing
End Sub
Ich bin mir ziemlich sicher, dass ich den Code hier im Forum gefunden habe. Ich habe schon diverse Anpassungen versucht - leider ohne Erfolg. Kann mir bitte Jemand sagen, wo der Fehler steckt?
Vielleicht habt Ihr ja auch Ideen, was ich besser/anders machen soll/kann. Bin über jeden Hinweis in die richtige Richtung dankbar. Danke schonmal :)

Offline Bastel123

  • Senior Mitglied
  • ****
  • Beiträge: 355
  • Geschlecht: Männlich
Re: Fehler bei Excel Export - OLE: Automation object error
« Antwort #1 am: 07.07.12 - 13:23:53 »
Hallo,

ich würde zunächst mal ein Errorhandling einbauen, damit Du weißt in welcher Zeile er rausfliegt.

Dann würde ich mir das Dokument ausgeben lassen, in dem der Fehler auftritt und das mal aus der Ansicht rausnehmen.
Wenn es dann funktioniert, mal sehen was an dem Dokument faul sein könnte.

Gruß
Sebastian
Gruß Sebastian
-----------------------------------------------------
Kaum macht man's richtig, schon funktioniert's.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Fehler bei Excel Export - OLE: Automation object error
« Antwort #2 am: 07.07.12 - 19:33:03 »
Was sagt der Debugger?

Offline Gabe

  • Junior Mitglied
  • **
  • Beiträge: 52
Re: Fehler bei Excel Export - OLE: Automation object error
« Antwort #3 am: 07.07.12 - 20:54:02 »
Hallo Sebastian,
hallo Peter,

erstmal vielen Dank für die schnellen Antworten. Nachdem ich das Dokument aus der Ansicht gelöscht habe wurde die komplette Ansicht exportiert. Warum ich da nicht selber draufgekommen bin  :P
Mal schauen ob ich die Fehlerursache im Dokument ermitteln kann. Es erscheint nach der Beendigung des Exports eine Fehlermeldung (in meiner Testumgebung). Am Montag kann ich mehr sagen, wenn ich das ganze dann im Livesystem versuche. Ich werde das Ergebnis auf jeden Fall hier posten (vielleicht hat irgendwann irgendjemand ein ähnliches Problem).
Wie Du vorgeschlagen hast Peter, habe ich auch mal den Debugger gestartet. Ich muss zugeben, dass ich mit dem Debugger noch keine richtige Erfahrung habe und nicht feststellen konnte, ob da nun ein Fehler ausgegeben wird oder nicht.
Markiert der Debugger fehlerhafte Bereiche oder gibt mir der Debugger diese direkt an?

Liebe Grüße und schönen Samstagabend

Holger

Offline TRO

  • Senior Mitglied
  • ****
  • Beiträge: 296
Re: Fehler bei Excel Export - OLE: Automation object error
« Antwort #4 am: 07.07.12 - 20:59:46 »
Markiert der Debugger fehlerhafte Bereiche oder gibt mir der Debugger diese direkt an?

Der Debugger bleibt einfach an der Code-Zeile stehen, die den Fehler aufgeworfen hat.
Im unteren Debugger-Fenster kann man dann die aktuellen Variablen inspizieren.

hth
Thomas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Fehler bei Excel Export - OLE: Automation object error
« Antwort #5 am: 07.07.12 - 21:22:46 »
Servus Holger,

wie schon vorher geschrieben: Baue Dir als erstes einen ErrorHandler ein. Und schreibe nie wieder Code ohne einen solchen! Das geht NIE gut aus.
Zweitens: Verknüpfe niemals Strings mit "+". Auch da wirst Du über kurz oder lang böse Überraschungen erleben (benutze die Forumssuche für nähere Erläuterungen).

Zu Deinem Problem: Naheliegend ist hier immer ein Wert aus einer Ansicht oder einem Dokument (bei Dir: Ansicht), der einen @Error-Wert enthält. Damit kann Excel (logischerweise) nix anfangen.

Wenn wir genaueres Wissen (ErrorHandler!), dann können wir auch zielgerichteter Tipps abgeben.

Bernhard

PS: Und merke - auch fremder Code kann  ;D fehlerhaft oder ungenügend sein. Du solltest das nicht blind verwenden.

Offline Gabe

  • Junior Mitglied
  • **
  • Beiträge: 52
Re: Fehler bei Excel Export - OLE: Automation object error
« Antwort #6 am: 10.07.12 - 11:09:02 »
Hallo zusammen,

vielen vielen Dank für die Tipps und die Unterstützung. Im Livesystem funktioniert alles nach dem entfernen des Dokuments erste Sahne (Export läuft sauber durch und ich erhalte keine Fehlermeldung). Ich werde jedoch eine Kopie der Anwendung inklusive fehlerhaftem Dokument machen und mich dann mal an das ErrorHandling wagen (gerade für zukünftige Entwicklungen). Ich will wissen, was diesen Fehler verursacht hat. Wenn ich den Debugger durchlaufen lasse, dann bleibt er in der Anwendung nach dem starten der Export-Aktion bei dem fehlerhaften Dokument stehen und gibt mir folgende Codezeile an: xlsheet.Cells(rows,cols).Value=colvals. Beim Dokument kann ich jetzt aber keine fehlerhafte Formatierung erkennen :o

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Fehler bei Excel Export - OLE: Automation object error
« Antwort #7 am: 10.07.12 - 12:26:53 »
Kann es sein, dass der Wert den du Excel übergeben willst zu lang ist?

Ich hatte mal das Problem bei einer Zeichenkette die länger als 912 Zeichen lang war.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Gabe

  • Junior Mitglied
  • **
  • Beiträge: 52
Re: Fehler bei Excel Export - OLE: Automation object error
« Antwort #8 am: 10.07.12 - 16:32:10 »
Hallo zusammen,

habe den Fehler jetzt endlich gefunden  :D.
Ursache: Es gibt ein Feld vom Typ Datum/Zeit. Dieses Feld ist Bearbeitbar und sollte für die Befristung der Sonderkondition genutzt werden. Ein paar Dokumente weiter vorne hat Jemand anstelle von 2013 - 213 manuell eingegeben. In Excel wurde dies zwar als 2013 angegeben (warum auch immer), jedoch bricht der Export dafür zwei Datensätze später ab. Ich habe das Datum berichtigt und alles läuft jetzt sauber durch. Vielen Dank für eure Unterstützung

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Fehler bei Excel Export - OLE: Automation object error
« Antwort #9 am: 10.07.12 - 16:46:04 »
IIRC hat Excel (als OLE-Server) Probleme mit Jahreszahlen, die "zu klein" sind und meckert dann Notes an. Das würde aber bedeuten, dass Du Dich bei der Zählung Deiner Dokumente bzw. der Feststellung, bei welchem Dokument der Code Protest von Excel bekommt, vertan hast. Denn: "Ein bisschen weitermachen" und dann erst streiken - das geht nicht.

Bernhard

Offline Gabe

  • Junior Mitglied
  • **
  • Beiträge: 52
Re: Fehler bei Excel Export - OLE: Automation object error
« Antwort #10 am: 10.07.12 - 16:56:33 »
Hallo Bernhard,

dann schau ich mir das doch nochmal genauer an. Will ja wirklich einhundertprozentig den Fehler finden und beseitigen. Also dann nochmal zählen  ::)

Offline Gabe

  • Junior Mitglied
  • **
  • Beiträge: 52
Re: Fehler bei Excel Export - OLE: Automation object error
« Antwort #11 am: 10.07.12 - 17:25:21 »
Ok hattest wie immer recht Bernhard.
Nochmal Dokumente im Excel sauber aufgelistet und anschließend mit Excel gezählt. Habe erstmal die Testanwendung gelöscht, damit ich nicht mehr durcheinander komme. Hatte dort einige Dokumente zu Testzwecken mehrfach eingefügt - Sorry  :P
Klar das ich dann auf ein falsches Ergebnis komme.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Fehler bei Excel Export - OLE: Automation object error
« Antwort #12 am: 10.07.12 - 17:31:04 »
Ich habe nicht immer recht. Wirklich nicht!  ;D
Und das mit dem Verzählen geht einfach. Wichtig ist nur, dass Du die wahre UZrsachen gefunden hast, Holger.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz