Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: qp am 21.07.03 - 09:22:05

Titel: Excel-Datei in Notesdokument öffnen
Beitrag von: qp am 21.07.03 - 09:22:05
Hi,

ich will in Notesdokumente Officeanwendungen einbinden. Soweit funktioniert das auch. Bei Word kann ich eine Vorlagedatei öffnen. Dazu benutze ich folgende Routine:
  ' Objekt in einem UI-Dokument erstellen
  Set varObj = uidoc.CreateObject("OLEObject","Word.Document")
  ' An Objekt die Templatedatei anhängen und öffnen
  Call varObj.Range().InsertFile(strTemplate)


Für Word läuft das auch zufriedenstellend. Jetzt suche ich für Excel eine Funktion, die das "varObj.Range().InsertFile(file)" aus der Wordroutine übernimmt.

Wäre klasse, wenn jemanden etwas dazu einfallen würde. Ich bin für jede Hilfe dankbar.

ciao
qp
Titel: Re:Excel-Datei in Notesdokument öffnen
Beitrag von: Till_21 am 21.07.03 - 10:10:02
tip:
excel oeffnen, macro aufzeichnen, aktion machen, macro beenden, quellcode kopieren, notes designer oeffnen, pasten

gruss
Titel: Re:Excel-Datei in Notesdokument öffnen
Beitrag von: qp am 21.07.03 - 11:38:21
Hi,

habe ich ja schon versucht. Allerdings bekomme ich ständig die Meldung, dass die Methode nicht unterstützt wird.

Ich hole mir das Handle über

  call varObj = CreateObject("OLEObject", "Excel.Sheet")

Wenn ich davon ausgehe, dass ich ein Handle auf ein Sheet-Objekt zurückgeliefert bekomme, müsste ich ja mit

  varObj.Sheets.Add "type:=PfadMitVorlagedatei"

ein entsprechendes Arbeitsblatt hinzufügen können. Ich bekomme aber immer die Meldung, dass die Add-Methode des Sheet-Objekts nicht ausgeführt werden kann.

Ich gebe die Hoffnung dennoch nicht auf, dass hier jemand noch den Geistesblitz hat.

Schon mal Danke im voraus
qp
Titel: Re:Excel-Datei in Notesdokument öffnen
Beitrag von: ata am 21.07.03 - 20:35:12
... geh al in die VBA-Hilfe in Excel - deine Parameterübergabe funktioniert so nicht. In der Hilfe sind die Argumente im herkömmlichen Stil dargestellt - dann sollte es passen...

ata
Titel: Re:Excel-Datei in Notesdokument öffnen
Beitrag von: qp am 21.07.03 - 23:13:39
Hi,

aus der VBA-Hilfe von Excel habe ich den Aufruf ja her. Nur die Anführungszeichen um das Type-Argument habe ich hinzugefügt. Notes beschwert sich, wenn sie nicht gesetzt sind.
Lasse ich aber Teil mit

  Type := "PfadMitDatei"

weg, wird problemlos ein neues Tabellenblatt angelegt. Nur das Einfügen einer Vorlage will nicht funktionieren.

Ich habe auch schon versucht, mir das Handle über den Namen zu holen und damit zu steuern:

  dim objOLE as variant
  set objOLE = GetObject("OLEObject")
  varOLE.Sheet.Add "Type:=PfadMitVorlage"

Damit bekomme ich jedoch die gleiche Fehlermeldung ... komme also auch nicht weiter!

Wenn Du einen konkreten Tipp hättest, wäre ich Dir sehr dankbar.

ciao ... und gute Nacht
qp
Titel: Re:Excel-Datei in Notesdokument öffnen
Beitrag von: animate am 22.07.03 - 06:47:57
wie schon erwähnt wurde, musst du deine Parameter in LS anders übergeben, als in dem Code, der vom Makrorekorder erzeugt wird, nämlich in Klammern nach dem Funktionsnamen.
Syntax aus der Excel-Hilfe:

Zitat

Ausdruck.Add(Before, After, Count, Type)

Ausdruck   Erforderlich. Ein Ausdruck, der eines der oben aufgeführten Objekte zurückgibt.

Before   Optionaler Variant-Wert. Ein Objekt, das das Blatt festlegt, vor dem das neue Blatt eingefügt werden soll.

After   Optionaler Variant-Wert. Ein Objekt, das das Blatt festlegt, nach dem das neue Blatt eingefügt werden soll.

Count   Optionaler Variant-Wert. Die Anzahl der hinzuzufügenden Blätter. Der Standardwert ist Eins.

Type   Optionaler Variant-Wert. Legt den Blattyp fest. Kann eine der folgenden XlSheetType-Konstanten sein: xlWorksheet, xlChart, xlExcel4MacroSheet oder xlExcel4IntlMacroSheet. Der Standardwert ist xlWorksheet.

Hinweise
Wenn Before und After nicht angegeben werden, wird das neue Blatt vor dem aktiven Blatt eingefügt.

Titel: Re:Excel-Datei in Notesdokument öffnen
Beitrag von: qp am 22.07.03 - 22:59:57
Hi,

danke für die Hilfe!

Hat aber alles nicht funktioniert. Letztlich habe ich es doch noch geschafft, aber über Umwege.

Für alle, die es interessiert - hier eine kurze Beschreibung:

Ich lasse das Exceldokument über eine Aktion öffnen. In dieser Aktion lasse ich im Backend ein Dokument öffnen, dem ich zwei RT-Felder einfüge. In einem erzeuge ich ein embedded object

  Set varObj = rtitem.EmbedObject (EMBED_OBJECT, "", "PfadMitDatei, "OLEObject")

Anschliessend weise ich dem Backenddokument Formname und Fenstergrösse zu, lasse es neu berechnen und öffne es im Frontend.

  ' Embedded Object auf Fenstergrösse maximieren
  object.FitToWindow = True
  ' Berechnete Felder in der Maske neu berechnen
  Call docExcel.ComputeWithForm(False, False)
  ' Dokument im Edit-Modus im Frontend öffnen
  Call ws.EditDocument (True, docExcel)

Das FrontendDok besitzt die zwei RT-Felder. Weiterhin ist in den Eigenschaften unter "Auto-Start" eingestellt, dass das erste OLE-Objekt automatisch gestartet wird.

Im Postopen-Bereich ist folgendes eingetragen:

  Sub Postopen(Source As Notesuidocument)
   
    ' NotesVariablen
    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
   
    ' Allgem. Variablen
    Dim varObj As Variant
   
    ' Frontend-Dokument holen
    Set uidoc = ws.CurrentDocument
   
    ' Cursor in erstes RT-Feld setzen
    Call uidoc.GotoField("Body")
   
    ' OLE-Objekt erzeugen und Handle an Variant-Variable übergeben
    Set varObj = uidoc.CreateObject("OLEObject", "Excel.Sheet")
   
  End Sub

Damit lassen sich neben Exceldokumenten auch Worddokumente öffnen.

ciao und gute Nacht
qp