Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: tge am 03.04.07 - 15:36:08

Titel: Object automation error
Beitrag von: tge am 03.04.07 - 15:36:08
Hallo allerseits,

ich habe eine Notes-Datenbank (entwickelt noch unter R5) mit einem Agenten, der eine Excel-Tabelle im Frontend erstellt. Solange der Client Notes R5 verwendet, funtioniert der Agent fehlerfrei. Wird die Datenbank und somit der Agent allerdings mit einem R7-Client geöffnet bzw. ausgeführt, gibt's bei Excel-Fomulas einen "Object automation error".
Das Script sieht vereinfacht folgendermaßen aus:

Set v_xlApp = CreateObject("Excel.Application")
v_xlApp.Workbooks.Add
Set v_xlSheet = v_xlApp.Workbooks(1).Worksheets(1)

(...)

With v_xlSheet
       .cells(Zeile,Spalte + 9).Formula = "=WENN(A1=0;0;A2)"  'in dieser Zeile tritt der Fehler auf

(...)

End with

Soweit ich herausgefunden habe, scheint die Eigenschaft "Formula" hier Probleme zu machen, ohne dass es eine Rolle spielt, welche Excel-Version (Excel 97 oder Excel 2002) verwendet wird. Nur der Releasewechsel von Notes auf dem Client scheint plötzlich diesen Fehler aufzuwerfen.

Hat jemand eine Idee, woran das liegen kann?

Vielen Dank im voraus & viele Grüße
Thorsten

   
Titel: Re: Object automation error
Beitrag von: koehlerbv am 03.04.07 - 23:47:18
Thorsten, das ist per COM ausgeführter VBA-Code, der ist also dem Notes-Client egal (weil er den nur weitergibt).

Hast Du diesen Code auf einer Maschine unter beiden Notes-Releases getestet? Wie sieht überhaupt Deine Testumgebung aus?

Bernhard
Titel: Re: Object automation error
Beitrag von: Demian am 04.04.07 - 07:41:58
Moin,moin,

habe den Code mal in Excel selbst getestet, da funktioniert er auch nicht. Habe daraufhin nen Beitrag (http://www.ms-office-forum.net/forum/showthread.php?t=207812) im MS-Office-Forum aufgemacht. Lösung wurde gepostet.

Gruß
Demian
Titel: Re: Object automation error
Beitrag von: tge am 04.04.07 - 08:19:02
Hallo Bernhard,

getestet habe ich das ganze in einer Server-Client-Umgebung. Auf einer Workstation ist Windows XP Professional und Excel 2002, SP3 und auf der anderen Windows NT 4.0, SP6 mit Excel 97 SR-2 installiert. Wir haben die Möglichkeit, auf beiden Workstations entweder Notes R5 oder Notes R7 zu nutzen. Darüber hinaus gibt es zwei Notes-Server, einer mit Notes R7, der andere mit Notes R5.
Auf jeder Workstation habe ich jeweils folgende Konstellationen getestet:
Notes-Server R7 mit Client Notes R5 – Ergebnis: Kein Fehler.
Notes-Server R5 mit Client Notes R5 – Ergebnis: Kein Fehler.
Notes-Server R5 mit Client Notes R7 – Ergebnis: Fehler!
Notes-Server R7 mit Client Notes R7 – Ergebnis: Fehler!

Eigentlich habe ich ja auch gedacht, dass Notes hier keine Rolle spielt, aber mich wundert’s schon, dass der Fehler nur bei Ausführung über den R7-Client auftritt, während das Script beim R5-Client fehlerfrei durchläuft und die Excel-Tabelle einschließlich der WENN-Formeln einwandfrei erstellt wird.

Viele Grüße
Thorsten
Titel: Re: Object automation error
Beitrag von: tge am 04.04.07 - 08:36:55
Hi Demian,

statt WENN die engl. Form IF zu verwenden, hatte ich auch schon probiert. 'FormulaLocal' aber funktioniert!! Problem gelöst.

Vielen Dank für Deine Mühe. Und natürlich auch an Bernhard ein herzliches Dankeschön.

Viele Grüße
Thorsten
Titel: Re: Object automation error
Beitrag von: Demian am 04.04.07 - 08:50:55
Moin,moin,

also bei mir geht folgender Code:

Code
Set v_xlApp = CreateObject("Excel.Application")
v_xlApp.Workbooks.Add
v_xlapp.visible = True	
Set v_xlSheet = v_xlApp.Workbooks(1).Worksheets(1)
With v_xlSheet     
     .cells(3,3).Formula = "=if(A1=0,0,A2)" 
End With

Gruß
Demian
Titel: Re: Object automation error
Beitrag von: oson00 am 04.04.07 - 12:54:52
Hallo,

ich hatte malt einen ähnlichen Fehler und da lag es daran, dass die Vorlage-Datei, die EXCEL-Standardmäßig startet, weniger Arbeitsblätter bereit hielt als ich angenommen habe.

Ich wollte auf Blatt 3 schreiben, dass existierte aber nicht und schon kam der Fehler hoch.

Kontrollier mal, wie die Vorlage aussieht.
Titel: Re: Object automation error
Beitrag von: andre1987 am 26.09.08 - 08:59:08
Hallo,

ich greife das Thema mal wieder auf, denn ich habe ein ähnliches Problem. Ich muss einen Excel-Export erweitern, dass ein weiteres Feld incl. einer Formel "exportiert" wird.

Ich habe es bis hierhin geschafft:

xlsheet.Cells(rows,40).Formula = |=WENN($J2="Herr";WENN($K2="";"Sehr geehrter Herr";VERKETTEN("Sehr geehrter Herr";" ";$K2));WENN($K2="";"Sehr geehrte Frau";VERKETTEN("Sehr geehrte Frau";" ";$K2)))|

Damit bekomme ich aber einen OLE Error. Ich habe herausgefunden das Notes mir aus einem " zwei "" macht. Das verstehht Excel natürlich nicht.

Hat jemand vielleicht eine Idee ??

Gruß
André   
Titel: Re: Object automation error
Beitrag von: Fedaykin am 26.09.08 - 09:45:48
Hallo Andrè

Versuch es doch mal xlsheet.Cells(rows,40).FormulaLocal oder schreibe die Formel in englisch.

Gruss
Remo
Titel: Re: Object automation error
Beitrag von: andre1987 am 26.09.08 - 11:12:53
Hallo Remo,

danke so funktioniert es :-) !!

Kannst du mir vielleicht mitteilen warum oder was .FormulaLocal macht ? Wird das ganze als String übergeben ??


Gruß
André
Titel: Re: Object automation error
Beitrag von: Fedaykin am 26.09.08 - 12:08:29
Hi André

Deine Excel Formel ist in Deutsch. Deshalb kommt Formula (international: sprich englisch) nicht damit klar. Mit FormulaLocal (lokalisiert: deutsch) kannst Du die Formel in der Sprache Deiner Excel Version übergeben. Am besten wäre natürlich schon Formula zu verwenden, dann müsstest Du aber die Formel in Englisch übergeben.

Zum Übersetzen könntest die Formel in eine leere Arbeitsmappe in Zelle A1 kopieren. Dann im VBA Direktfenster (oder über ein Makro) mit ActiveSheet.Cells(1,1).Formula auslesen (Debug.Print oder eine Msgbox).

Gruss
Remo
Titel: Re: Object automation error
Beitrag von: andre1987 am 26.09.08 - 12:10:05
Hallo,

nun stehe ich vor einem neuen Problem. Ich habe im Prinzip in jeder Zeile einen Mitarbeiter stehen. Bedeutet die Zeile muss variabel sein. Versuche ich es mit ZS(-29) funktioniert es, aber nur dann wenn ich den Z1S1 Bezug aktiviere. Das Excelsheet in das die Werte geschrieben wird, erzeuge ich am Anfang im NotesScript. Kann ich auch da schon irgendwie übergeben, dass die Tabelle einen solchen Bezug haben soll ??


Gruß
André
Titel: Re: Object automation error
Beitrag von: Fedaykin am 26.09.08 - 13:14:08
Hallo Andre

Verstehe nicht ganz wozu Du das ZS Zeug brauchst. Würde nicht so etwas gehen?

   Dim xl As Variant
   Dim strFormula As String
   Dim i As Long
   Set xl=createobject("Excel.Application")
   xl.visible=True
   xl.workbooks.add
   For i=1 To 10
      strFormula={=IF($J} & i & {="Herr",IF($K} & i & {="","Sehr geehrter Herr",CONCATENATE("Sehr geehrter Herr"," ",$K} & i & {)),IF($K} & i & {="","Sehr geehrte Frau",CONCATENATE("Sehr geehrte Frau"," ",$K} & i & {)))}   
      xl.activesheet.cells(i,1).Formula=strFormula
   Next i

Gruss
Remo
Titel: Re: Object automation error
Beitrag von: andre1987 am 29.09.08 - 11:27:42
vielen dank !! hab es ein wenig angepasst und es funktioniert !!