XBase++ 1.9 und OpenOffice 2.0

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Antworten
Chris
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 49
Registriert: Fr, 17. Feb 2006 8:51
Wohnort: München
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

XBase++ 1.9 und OpenOffice 2.0

Beitrag von Chris »

Hallo,

bin momentan dabei für ein Programm eine Schnittstelle zu OpenOffice zu schaffen, damit die Dokumente damit erstellt werden können. Allerdings klappt das ganze nicht gerade gut. Momentan bleibt das Programm an einer Stelle hängen ohne Hinweis auf den Fehler.

Hat vielleicht schon jemand von euch in der Richtung etwas gemacht?

Hier mal mein Code wie ich OpenOffice anspreche, oder es versuche.

Code: Alles auswählen

        oSM := CreateObject("com.sun.star.ServiceManager")
        if oSM = nil
            MsgBox("OpenOffice kann nicht initialisiert werden. Bitte prü
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo Chris,

ist 'oDesk:loadComponentFromURL(' der Befehl um ein neues Dokument zu erstellen (ich denke du willst ein neues lokales machen und keines aus dem Netz laden) ?
Das erscheint mir etwas seltsam.

Bei Word hatte ich den Macrorecorder eingeschaltet und dann das Ergebnis (VBA Code) editiert.
So kann man die Funktionen finden welche nötig sind. Manchmal haben die Namen ...
Gruß
Hubert
Chris
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 49
Registriert: Fr, 17. Feb 2006 8:51
Wohnort: München
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Beitrag von Chris »

oDesk:loadComponentFromURL(...)

sollte eigentlich ein neues Dokument erzeugen auf der Grundlage der .ott Datei die in OpenOffice eine Textvorlage darstellt.

Code: Alles auswählen

Sub test2()
Dim oSM, oDesk, oDoc, oTextFieldMasters, oText, oCursor

Set oSM = CreateObject("com.sun.star.ServiceManager")
Set oDesk = oSM.createInstance("com.sun.star.frame.Desktop")

Dim oProperty()

Set oDoc = oDesk.loadComponentFromURL("file:///x:/vorlage.ott", "_blank", 0, oProperty)
oDoc.storeToURL "file:///x:/test2.sxw", oProperty
Set oText = oDoc.getText()
Set oCursor = oText.createTextCursor()

cTextField = ""
Set oTextFieldMasters = oDoc.Textfieldmasters
cTextField = "com.sun.star.text.FieldMaster.User.Test"
oTextFieldMasters.getByName(cTextField).Content = "Dies ist ein Test"

oDoc.getTextFields().Refresh
End Sub
Das ist das ganze nochmal als VBA Code im Word. Wenn man das dort ausführt und auch OpenOffice installiert hat, dann wird das Dokument erstellt und gespeichert sowie Änderungen vorgenommen. Leider halt bei XBase nicht so wirklich.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo Chris,
oDoc:=oDesk:loadComponentFromURL("file:///x:/vorlage.ott", "_blank", 0, oProperty)
hängt er in dieser Zeile oder erst danach ?

Ich meine gelesen zu haben, dass es Probleme bei den Arrays gibt.
Ich bin mir nicht sicher, was ein
DIM oProperty() erzeugt (Array mit 0 Elementen ?), aber
oProberty := {} ist es sicher nicht.
Falls es in dieser Zeile hängt, gib doch mal als Parameter L2BIN(0) an.
Wenn numerische Parameter benötigt werden wirst du wohl
L2BIN(nWert eines Arrayelementes) + L2BIN(nWert des 2. Arrayelementes) als Parameter übergeben müssen (den String).
Basic übergibt Standardmäßig seine Parameter als Referenz (Änderungen wirken zurück), also falls Rückgabewerte erwartet werden @VAR übergeben.
Gruß
Hubert
Chris
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 49
Registriert: Fr, 17. Feb 2006 8:51
Wohnort: München
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Beitrag von Chris »

richtig, das ganze scheint an dem array zu liegen.

hab es jetzt mal mit l2bin(0) probiert und auch mit dem @var, aber beides führt zum gleichen ziel, das programm bleibt an dieser stelle weiterhin stehen und nichts passiert.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Chris hat geschrieben:richtig, das ganze scheint an dem array zu liegen.
hab es jetzt mal mit l2bin(0) probiert und auch mit dem @var, aber beides führt zum gleichen ziel, das programm bleibt an dieser stelle weiterhin stehen und nichts passiert.
nur zur Sicherheit, ich meinte es so:

oProperty := l2bin(0)

..., @oProberty...

wenn es nicht geht, wird nichts am Alaska Forum vorbei gehen.
Eventuell hat dort jemand damit Erfahrungen.
Gruß
Hubert
Chris
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 49
Registriert: Fr, 17. Feb 2006 8:51
Wohnort: München
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Beitrag von Chris »

ok, trotzdem nochmal danke für die hilfe, werd das jetzt nochmal testen, dann mal sehen.
Chris
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 49
Registriert: Fr, 17. Feb 2006 8:51
Wohnort: München
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Problem beim Öffnen von Dateien mit OpenOffice

Beitrag von Chris »

Hallo,

vielleicht wisst Ihr da ja bescheid. Ich habe das ganze mit dem Ansprechen von OpenOffice jetzt endlich in den Griff bekommen.

Jetzt muss ich allerdings eine DBF Datei im Calc öffnen. Wenn ich das mit dem Programm direkt mache, dann bekomme ich eine Auswahl bzgl. des CharSets der Datei.

Wenn ich versuche das ganze per ActiveX zu machen, dann passiert nichts. Alles läuft weiter und Programm mit Datei wird nicht geöffnet.

Hat das von euch vielleicht schon mal jemand gemacht und kann mir eventuell sagen wie das mit dem CharSet gemacht werden muss, oder was ich genau übergeben muss?

Gruß,

Chris
Antworten