You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-de@openoffice.apache.org by technik <te...@selbstlesebuch.jrsch.de> on 2014/05/02 09:09:10 UTC
Zugriff auf ein anderes Dokument über Makro
Hallo,
ich kann mir nicht vorstellen, dass andere nicht andere bereits vor
einem ähnlichen Problem gestanden haben, aber entweder ist es so
trivial, dass es keiner veröffentlicht hat oder ich suche falsch.
Ich möchte zwischen zwei Calc Dateien Werte austauschen.
Ich habe Datei1.odt die ist offen
oDoc = ThisComponent
odocument = ThisComponent.CurrentController.Frame
und ich kann Datei1.odt öffnen von der URL
oDoc2=StarDesktop.loadComponentFromURL(sUrl,"_blank",0,Array())
odocument2= oDoc2.CurrentController.Frame
Wenn dieses Dokument aber bereits offen ist, dann gibt es Probleme beim
Eintragen.
Außerdem klappt das mit dem Zugriff auf die anderen Dokumente nicht so
wie iches will. Ich kann da nichts eintragen liegt vielleicht am
CurrentController.
Da ich ein Guttenberg-Programmierer bin, verstehe ich nicht so richtig
alle Hintergründe. :-[
Ich wäre dankbar, wenn mir da jemand weiterhelfen könnte.
Also, wie kann ich zwei oder mehrere Dateien in einem Makro ansprechen?
Horst
---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org
RE: Zugriff auf ein anderes Dokument über Makro
Posted by Jan-Christian Wienandt <ja...@wienandt.de>.
Moin Horst,
ein kleiner Nachtrag zu meiner Mail von vorhin.
Hier findest Du etwas zum Lesen, sehr hilfreich zum Verständnis der
Makroprogrammierung.
http://www.prooo-box.org/live/dokumentation/makro/OOME_3_0_deutsch.pdf
Noch ein Tipp, unter
http://www.medimops.de/Buecher/
werden u.a. gebrauchte Bücher über OpenOffice angeboten.
Dort findest Du mit Chance auch das Buch von Thomas Krumbein:
Makros in OpenOffice.org 3.
Kann ich nur empfehlen.
Gruß
Jan
---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org
RE: Zugriff auf ein anderes Dokument über Makro
Posted by Jan-Christian Wienandt <ja...@wienandt.de>.
Moin Horst,
> Ich möchte zwischen zwei Calc Dateien Werte austauschen.
Eine Frage zu Deinem Problem, soll die Datei2 nach dem Eintrag der neuen
Daten geschlossen werden?
Ich habe ein Beispiel, wie Daten aus einer Datenbank in ein Calc-Dokument
exportiert werden.
Die Daten werden in den Arrays "spalte" und "daten" ausgelesen.
Allerdings wird das Dokument nach dem Export geschlossen.
Hier das Beispiel:
'-----------------
Sub export
'Variable für die Hinweisbox
Dim hinweis As string
Dim i As Integer
'Zunächst die Variablen zur Erzeugung des Dokumentes
Dim Pfad As String
Dim titel As String
Dim dateiname As String
Dim url As String
'Variablen für das eigentliche Calc-Dokument
Dim dokument As Object
Dim tabelle As Object
Dim args(0) As New com.sun.star.beans.PropertyValue
Dim zelle As Object
'Einstellen der Variablen für das Calc-Dokument
titel ="Datenexport vom " & Date()
dateiname = "Datenexport.ods" '"Datenexport vom " & Date() & ".ods"
pfad = "C:"
url = ConvertToUrl(pfad & "/" & dateiname)
args(0).Name = "Overwrite"
args(0).Value = True
'Einstellen der Variablen für das Hinweisfenster
hinweis = "Die Datei mit der Bezeichnung" & chr(13) & _
dateiname & chr(13) & _
"ist bereits vorhanden!" & chr(13) & _
" Überschreiben? "
'Jetzt prüfe ich, ob es bereits eine Datei mit dem Namen gibt.
If FileExists(url) then
i = msgbox( hinweis , 52,"Datensatzexport")
If i <> 6 then
Exit Sub
End if
End if
'Jetzt wird das eigentliche Calc-Dokument erzeugt
dokument =
starDesktop.loadComponentFromURL("private:factory/scalc","_blank",0,
Array())
tabelle = dokument.Sheets(0)
'Füllen der Spaltenüberschriften
'Zunächst Rücksetzen der Zählvariable i
i = 0
Do while i <= 6
zelle = tabelle.getCellByPosition(i, 0)
zelle.String = spalte(i +1)
i = i +1
loop
'Füllen der Datenfelder
'Zunächst Rücksetzen der Zählvariable i
i = 0
Do while i <= 6
zelle = tabelle.getCellByPosition(i, 1)
zelle.String = daten(i +1)
i = i +1
loop
'Speichern und schliessen des Dokumentes
dokument.storeAsURL(url,args)
dokument.close(False)
End Sub
'---------------
Gruß
Jan
---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org
Re: Zugriff auf ein anderes Dokument über Makro
Posted by Regina Henschel <rb...@t-online.de>.
Hallo Horst,
es ist nicht Components sondern Frames. Also
dim oDocuments as variant
oDocuments = StarDesktop.Frames
Das ist dann ein Array und ein einzelnes bekommst du dann z.B. mit
oDocuments(1). Die Liste musst du dann durchgehen, bis du das gesuchte
Dokument gefunden hast.
Mit freundlichen Grüßen
Regina
---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org
Re: Zugriff auf ein anderes Dokument über Makro
Posted by Regina Henschel <rb...@t-online.de>.
Hallo Horst,
technik schrieb:
> Hallo,
>
> ich kann mir nicht vorstellen, dass andere nicht andere bereits vor
> einem ähnlichen Problem gestanden haben, aber entweder ist es so
> trivial, dass es keiner veröffentlicht hat oder ich suche falsch.
>
> Ich möchte zwischen zwei Calc Dateien Werte austauschen.
> Ich habe Datei1.odt die ist offen
> oDoc = ThisComponent
> odocument = ThisComponent.CurrentController.Frame
>
> und ich kann Datei1.odt öffnen von der URL
> oDoc2=StarDesktop.loadComponentFromURL(sUrl,"_blank",0,Array())
> odocument2= oDoc2.CurrentController.Frame
>
> Wenn dieses Dokument aber bereits offen ist, dann gibt es Probleme beim
> Eintragen.
> Außerdem klappt das mit dem Zugriff auf die anderen Dokumente nicht so
> wie iches will. Ich kann da nichts eintragen liegt vielleicht am
> CurrentController.
>
> Da ich ein Guttenberg-Programmierer bin, verstehe ich nicht so richtig
> alle Hintergründe. :-[
>
> Ich wäre dankbar, wenn mir da jemand weiterhelfen könnte.
>
> Also, wie kann ich zwei oder mehrere Dateien in einem Makro ansprechen?
Ich habe es noch nicht ausprobiert, aber von der Struktur her findest du
es unter
http://www.openoffice.org/api/docs/common/ref/com/sun/star/frame/Desktop.html
Es gibt eine vordefinierte globale Variable StarDesktop über die du die
Dokumente erreichen kannst. getComponents() sollte dir eine Liste aller
offenen Fenster liefern.
Guck mal auf
https://wiki.openoffice.org/wiki/Documentation/DevGuide/OfficeDev/Using_the_Desktop.
Da ist ein gelber Tipp-Kasten mit einer Beschreibung.
Vielleicht helfen die Stichworte StarDesktop und getComponents ja auch
bei einer Suche.
Mit freundlichen Grüßen
Regina
---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org
Re: Zugriff auf ein anderes Dokument über Makro
Posted by Isch <ch...@web.de>.
Hallo Horst,
ich habe es folgender Maßen gelöst.
Über Makro erst mal nachgeschaut ob die Datei schon offen ist.
Wenn Ja: Datei geschlossen mit Abspeichern.
Dann konnte ich mein Programm an sich so lassen wie es ist.
Ich habe keine Lösung gefunden es anders zu machen.
Gruß
Christian
Am 02.05.2014 09:09, schrieb technik:
> Hallo,
>
> ich kann mir nicht vorstellen, dass andere nicht andere bereits vor
> einem ähnlichen Problem gestanden haben, aber entweder ist es so
> trivial, dass es keiner veröffentlicht hat oder ich suche falsch.
>
> Ich möchte zwischen zwei Calc Dateien Werte austauschen.
> Ich habe Datei1.odt die ist offen
> oDoc = ThisComponent
> odocument = ThisComponent.CurrentController.Frame
>
> und ich kann Datei1.odt öffnen von der URL
> oDoc2=StarDesktop.loadComponentFromURL(sUrl,"_blank",0,Array())
> odocument2= oDoc2.CurrentController.Frame
>
> Wenn dieses Dokument aber bereits offen ist, dann gibt es Probleme
> beim Eintragen.
> Außerdem klappt das mit dem Zugriff auf die anderen Dokumente nicht so
> wie iches will. Ich kann da nichts eintragen liegt vielleicht am
> CurrentController.
> ...
---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org