Das Notes Forum

Lotus Notes / Domino Sonstiges => OLE/COM-Programmierung => Thema gestartet von: celsp am 20.12.07 - 14:16:35

Titel: Notes nach Excel
Beitrag von: celsp am 20.12.07 - 14:16:35
Hallo, ich habe heute ein Problem in der Kommunikation zwische Notes und Excel. Ich muss aus Notes heraus ein Diagramm unter Nutzung von AddIns von Excel erstellen. In Excel allein geht das auch (manuell). Aber wenn ich ein Excel Sheet von Notes aus öffne, habe ich keine AddIns zur Verfügung! Hatte diesen Fall schon mal jemand?? Kann mir dazu jemand etwas sagen?

Vielen Dank im Voraus!
Titel: Re: Notes nach Excel
Beitrag von: m3 am 20.12.07 - 14:21:54
Der Notes-Code läuft am Server? Dann wird Excel mit den Benutzerberechtigungen geöffnet, mit dem der NOtes-Server läuft. Und wenn unter dem die Add-Ins nicht installiert sind ...
Titel: Re: Notes nach Excel
Beitrag von: celsp am 20.12.07 - 20:10:09
Danke, das ist eine gute Idee! Aber der Code wird am Client aus einer Notes Makse heraus aufgerufen. Also denke ich wird auch Excel am Client gestartet und dort sind die AddIns installiert.
Titel: Re: Notes nach Excel
Beitrag von: Axel am 21.12.07 - 08:54:51
Wahrscheinlich greifst du über die COM-Schnittstelle auf Excel zu und initierst den Excel-Task über CreateObject. In diesem Fall werden die AddIns nicht mitgestartet.

Was mir spontan dazu einfällt wäre, dass du Excel vorher startest (z.B. mit Shell...) und dann mit GetObject... arbeitest. 100%ig bin ich mir aber nicht sicher ob das funktioniert.


Axel


Titel: Re: Notes nach Excel
Beitrag von: flaite am 21.12.07 - 09:09:22
Zugegeben offtopic, aber
Man könnte auch über Alternativen zu dieser betagten Art der Generierung von Report-Graphiken nachdenken:
- JFreechart (geht aber vielleicht erst mit Notes7)
- Webservice Integration zu Google Charts (http://atnotes.de/index.php?topic=39421.0)
Vielleicht kann ich nächstes Jahr meine Consulting davon überzeugen, dass wir solche kleinen aber netten Notes-Java Integrationsschnippsel über unseren Blog zu Marketingzwecken anbieten.
Mit meinem neuen Mockframework wird die Entwicklung von solchen Komponenten für Notes definitiv entspannter.
Titel: Re: Notes nach Excel
Beitrag von: jBubbleBoy am 21.12.07 - 10:16:30
ich hatte das Problem auch schon und meine Lösung bestand darin die addins selber einzubinden und das ging so:
   excel.AddIns("addinName").Installed = True

bubble
Titel: Re: Notes nach Excel
Beitrag von: celsp am 27.12.07 - 13:37:14
Vielen Dank für eure Anregungen. Ich werde zuerst versuchen die AddIns über den angegebenen Befehl mit zu starten. Wenn das gelingt wäre mein Problem ja gelöst. Über die Anschaffung anderer Tools ist natürlich nachzudenken, aber eben nicht mehr in diesem Projekt.
Ich gebe dann Bescheid wenn das Einbinden der AddIns gelungen ist!

Vielen Dank!
Titel: Re: Notes nach Excel
Beitrag von: celsp am 03.01.08 - 09:49:44
Hallo, ich habe beim Einbinden der Addins ein Problem. Ich versuche über

Set objExcel = createObject("Excel.Application")
...
objExcel.Application.AddIn("ATPVBAEN.XLA").Installed = True

das Addin für Analysefunktionen einzubinden. dabei erscheint folgende Fehlermeldung "OLE: Atomation object error"

Mein nächster Versuch sah so aus:

objExcel.Application.AddIns.Add ("ATPVBAEN.XLA")
Fehlermeldung: Add Methode konnte nicht ausgeführt werden.

Kann mir noch mal jemdan weiterhelfen?

Danke im Voraus!
Titel: Re: Notes nach Excel
Beitrag von: Axel am 03.01.08 - 10:55:25
Vermutlich wird die xla-Datei nicht gefunden. Geb doch mal den kompletten Pfad an.

Axel
Titel: Re: Notes nach Excel
Beitrag von: celsp am 03.01.08 - 11:51:01
Vielen Dank für den Tipp, leider hat das nichts geändert. Ich bin etwas ratlos!
Titel: Re: Notes nach Excel
Beitrag von: Fedaykin am 03.01.08 - 12:36:33
Hi hab auch mal was rumgespielt. Hier das Ergebnis.

Sub ExcelWithAddin()
    Dim objExcel As Variant
    Dim AddIn As Variant
    Set objExcel = CreateObject("Excel.Application")
    objExcel.Visible = True
    objExcel.workbooks.Add
    objExcel.AddIns.Add "C:\Program Files (x86)\Microsoft Office\OFFICE11\Makro\Analyse\ATPVBAEN.XLA", False
    For Each AddIn In objExcel.AddIns
        Select Case AddIn.Name
        Case "Analyse-Funktionen"
            AddIn.Installed = True
        End Select
    Next AddIn
    objExcel.Quit
End Sub


Interessant ist das ich leere Mappe aufmache. Warum? Ganz klar, sonst ist Menü deaktiviert.

Gruss
Remo
Titel: Re: Notes nach Excel
Beitrag von: Fedaykin am 03.01.08 - 12:41:17
Hi noch Korrektur. Bei LotusScript kommt Forall besser.  ;D

Aber sonst so was.

Sub ExcelWithAddin()
    Dim objExcel As Variant
    Dim AddIn As Variant
    Set objExcel = CreateObject("Excel.Application")
    objExcel.Visible = True
    objExcel.workbooks.Add
    Set AddIn = objExcel.AddIns.Add("C:\Program Files (x86)\Microsoft Office\OFFICE11\Makro\Analyse\ATPVBAEN.XLA", False)
    AddIn.Installed = True
    objExcel.Quit
End Sub
Titel: Re: Notes nach Excel
Beitrag von: celsp am 03.01.08 - 13:22:42
Hallo, vielen Dank für die Beispiele. Ich habe es angepasst und getestet. Es läuft auch ohne Fehler! Allerdings sind im Anschluß die Analyse-Funktionen im Menü Excel nicht verfügbar. Ich will die Analyse-Funktionen automatisch starten mit folgenden Befehl:

objExcel.Application.Run "C:\Programme\Microsoft Office\OFFICE11\Makro\Analyse\atpvbaen.xla!Histogram", sheet.Range("$C$6:$C$7"), _
sheet.Range("$B$9"), sheet.Range("$D$6:$D$7"), True, False, _
True, True

Ich bekomme dann eine Fehlernachricht, dass es atpvbaen.xla nicht finden kann, obwohl der Pfad definitiv stimmt!

Hat da jemand noch eine hilfreiche Idee?
Titel: Re: Notes nach Excel
Beitrag von: Fedaykin am 03.01.08 - 13:37:02
Hi weiss nicht was mit dem Run echt vor hast. Hier nochmal ein Beispiel.

Sub ExcelWithAddin()
    Dim objExcel As Variant
    Dim AddIn As Variant
    Const AddInPath As String = "C:\Program Files (x86)\Microsoft Office\OFFICE11\Makro\Analyse\"
   
    Set objExcel = CreateObject("Excel.Application")
    objExcel.Visible = True
    objExcel.workbooks.Add
    Set AddIn = objExcel.AddIns.Add(AddInPath & "ANALYS32.XLL", False)
    AddIn.Installed = True
    Set AddIn = objExcel.AddIns.Add(AddInPath & "ATPVBAEN.XLA", False)
    AddIn.Installed = True
   
    'HIER DAS WAS NOCH ZU MACHEN IST!
    Stop
   
    'Danach kannst Excel ja wieder verräumen.
    objExcel.Quit
End Sub

Also da den Code sonst noch rein, was aufbauen oder öffnen, speichern drucken usw. . Kann Dir auch noch versuchen Deine Formel wo reinzuschreiben. Aber naja die AddIns sind beide nun da!

Gruss
Remo
Titel: Re: Notes nach Excel
Beitrag von: Fedaykin am 03.01.08 - 15:46:45
Hi

Habe noch etwas zu dem Thema gefunden. Vielleicht hilft es ja. Umstellen auf LateBinding kann ich noch helfen wenn da Fragen hast.
http://support.microsoft.com/kb/270844

Gruss
Remo
Titel: Re: Notes nach Excel
Beitrag von: celsp am 04.01.08 - 10:02:17
Hallo, ich habe dein Beispiel genau so umgesetzt. Danach kommt die Fehlerausschrift "Die Add-Eigenschaft des AddIns-Objektes kann nicht zugeordnet werden"! Ich habe keine Vorstellung was ich hier noch falsch mache.

Vielen Dank noch für die bisher Unterstützung!!!
Titel: Re: Notes nach Excel
Beitrag von: jBubbleBoy am 04.01.08 - 15:16:21
hi,
wie bereits geschrieben, ich hatte das gleiche Problem und gelöst. mein Code dazu:
Code
	Set oAddin = excel.AddIns.Add(eFileName)	
	excel.AddIns("TeamOffice-Symbolleisten").Installed = False
	excel.AddIns("TeamOffice-Symbolleisten").Installed = True	
eFileName ist eine XLA-Datei und wird von mir aus Notes in einen temporären Ordner geschrieben und dann de- und wieder aktiviert. Das deaktivieren hat seinen Grund, ist aber schon zu lange her um den Grund noch zu kennen ;). Und das ist produktiv im Einsatz mit Excel2000 und für 3000 Excelendanwender.

bubble
Titel: Re: Notes nach Excel
Beitrag von: celsp am 08.01.08 - 17:28:19
Hallo zusammen,

ich habe nun eine gängige Lösung gefunden. Die Add Methode des AddIn Objektes funktioniert allerdings bei mir nicht, d.h. sie funktioniert nur einmal. Danach kommt eine Fehlermeldung "Add Methode konnte dem AddIn Objekt nicht zugeordent werden" (Ursache unbekannt).

Ich habe das jetzt wie folgt gelöst:

Forall AddIn in objExcel.AddIns
  Select Case AddIn.Name
             Case "atpvban.xla"
                       AddIn.Installed = false
                       AddIn.Installed = true
  End Select
End Forall

Nochmal vielen Dank an alle!