Hallo Wolfgnag,
dein Hauptproblem ist, dass du nicht weißt, was ThisComponent ist.
Ich füge mal das von mir leicht geänderte Makro ein und kommentiere
anschließend die Zeilen, denen ich rechts eine Nummer gegeben habe. Von
mir ergänzte Zeilen haben rechts von de Nummer einen Stern.
---------------------------------------------------------------------------------------------------------------------------------------------
Sub mkUsrTab() 'Schaltfläche:
'Neues Blatt'
Dim fileProps1(0) As New com.sun.star.beans.PropertyValue
dim oDoc as object
(1) *
oDoc = ThisComponent
(1) *
Xray oDoc
(2) *
oTplFile = ConvertToUrl("C:\....\LO_tst\" & "LO_tpl1.ods")
If oTplFile = Empty Then Exit Sub
fileProps1(0).name = "" '"Hidden"'->close
löscht Beide (3)
fileProps1(0).Value = True
dim template as object
template = starDesktop.loadComponentfromURL(oTplFile, "_blank", 0,
fileProps1()) (4) Zuweisung ergänzt
Xray template (5) *
oSheets = thisComponent.getSheets()
(6)
ID = "w1" : idx = 1 '(IndexPos Muster)
vFrame = ThisComponent.CurrentController.Frame
cpTplTab("LO_work", idx)
template.close(true) (7) *
' ThisComponent.close(true) 'schliesst TPL
(8)
ListFrames
End Sub 'mkUsrTab
---------------------------------------------------------------------------------------------------------------------------------------------
1. Wenn du die erste sub startest, dann ist ThisComponent das Dokument,
in dem sich die sub befindet, also in deinem Fall LO_work1.doc (ich
habe aus technischen Gründen die "1" hinzugefügt).
Ich habe ThisComponent einer Variaben zugewiesen, damit diese
weiterhin das Dokument identifiziert, selbst wenn im Verlauf
ThisComponent etwas anderes werden sollte, was ich gar nicht
lückenlos überprüft habe.
2. Kennst du Xray? Wenn nicht, dann musst du das unbedingt
installieren. Das ist eine unentbehrliche Hilfe beim Programmieren,
weil du für ein Objekt alle Attribute und Methoden auflisten kannst.
Ich schicke dir per direkter Mail Hardcopies vom Ergebnis dieses
Befehls oDoc.png) und eines weiteren mit der Nummer (5), damit du
einen Eindruck hast. In der ersten Hardcopy siehst du z.B. in der
Zeile "Title", dass oDoc, d.h. ThisComponent tatsächlich das
genannte Dok. ist.
Xray gibt es auf der Seite
http://berma.pagesperso-orange.fr/index2.html, auc in einer
deutschen Version (übersetzt von mir).
3. Da du weiter unten in () das falsche File schließt, hast du bloß den
Eindruck, dass Hiden nicht geht. Ich habe daher Hidden in deinem
Fall gar nicht mehr ausprobiert, ich weiß aus eigenen Anwendungen,
dass das funktioniert
4. Um mit dem Template arbeiten zu können, musst du es natürlich einer
Variablen zuweisen.
5. zweite Hardcopy, Title ist "LO_tpl1.ods": Template.png
6. hier müsste auf jeden Fall template.sheets stehen, damit das
überhaupt funktionieren kann. Aber auch dann kopiert deine zweite
sub nur immer innerhalb des Dokuments ...work...
7. die Template-Datei muss (bzw. kann) geschlossen werden, die Datei
...work... muss offen bleiben, du willst ja weiterarbeiten.
ThisComponent ist übrigens hier immer noch das gleiche, aber das mit
oDoc ist eben hundertprozentig.
8. schließt eben gerade nicht TPL!
Nach dieser Anweisung kannst du die weiteren Aktionen ausführen,
oDoc ist ja nach wie vor das Dokument an dem du arbeiten willst. Die
sub mit den Frames brauchst du dann ja wohl gar nicht.
Deine sub mit dem Dispatcher-Befehl kann, wieder wegen dem Irrtum mit
ThisComponent, gar nichts aus dem Template kopieren, weil das Template
der sub gar nicht bekannt ist: als Parameter wird der Name des gleichen
Dokuments mitgegeben, das in der sub mit ThisComponent angesprochen
wird. Und der Index, den du mitgibst, weiß ja nicht, auf welches Dok. er
sich beziehen soll. Der Befehl ist wahrscheinlich gar nicht der
passende. Aber um das Kopieren will ich mich auch gar nicht kümmern, ich
vermeide den Dispatcher sowieso, weil er eingeschränkt ist und vieles
gar nicht kann, das ist übrigens auch die allgemeine Empfehlung.
Verwende lieber die UNO-Objekte und ihre Methoden, ich schicke dir die
Hardcopy (Sheets.png) mit einem Ausschnitt der Methoden von oDoc.Sheets,
da könnte eine davon die richtige sein.
Zum Einarbeiten in die Makro-Programmierung in LibO und AOO kann ich
zwei Bücher empfehlen:
* Thomas Krumbein, Makros in OpenOffice.org 3; beim Verlag vergriffen,
wird aber im Internet gebraucht angeboten. Thomas Krumbein plant
eine Neuauflage im eigenen Verlag
* Marcelly/Godard, Programmation OpenOffice.org et LibreOffice:
hervorragend, aber in französisch
Ich denke, du kommst jetzt erst mal weiter. Zum Kopieren eines Sheets
aus einem Dok. in ein anderes werde ich dir keine Hilfe geben können,
ich bin in Calc nicht so drin.
Aber vielleicht stellst du diese Frage dann konkret in der user-Liste,
wenn du selbst nicht weiterkommst.
Gerhard
Am 25.02.2017 um 16:17 schrieb Wolfgang Schaible:
hallo Gerhard '_macOS _Sierra 10.12.3; LO 5.3.0.3
Wo du recht hast, hast du recht.
Habe zu früh abgeschnitten und nun dafür ein lauffähiges, auf Minimum
reduziertes Muster in Beilage 'addTab.zip' gemacht. Darin enthalten
sind die calc-Files 'LO_tpl.ods' und 'LO_work.ods' sowie die in
'subs4LO_work' gepackten Subs. Zum Testen in der IDE muss
'LO_work.ods' aktiv sein.
Hoffe, damit können meine Fragen beantwortet werden:
- Ausgehend von einem Calc-Benutzerfile kopiere ich eine bestimmte
Seite aus dem Musterfile ('Hidden' geöffnet und geschlossen). Aktives
Frame ist danach 'Meine Makros & Dialoge.wsLib'. Wie kann ich das
ursprüngliche, nun erweiterte File zur Weiterbehandlung im Makro
aktivieren?
- Auch das versteckte Öffnen und Schliessen des Musterfile
funktioniert nicht wie erwartet: So wie derzeit realisiert blitzt das
Muster beim Öffner kurz auf. Nehme ich 'Hidden' statt " ", dann
verschwinden bei 'close' beide Files.
mit freundlichen Grüssen
Wolfgang
Am 20.02.17 um 21:13 schrieb Gerhard Weydt:
Hallo Wolfgang,
ich kann mir nicht vorstellen, dass jemand mit deinen Angaben viel
anfangen kann. Das eigentliche Makro, das das Kopieren erledigt, ist
ja gar nicht beurteilbar. Wird denn darin das ergänzte File
gespeichert? Wenn nicht, dann ist völlig klar, dass das Laden in
openFrame den alten Stand liefert.
Gerhard
Am 16.02.2017 um 11:55 schrieb Wolfgang Schaible:
Sehr geehrte Community 'MacOS Sierra 10.12.1 ; jre-8u111 ; LO 5.3.0.3
Ausgehend von einem Calc-Benutzerfile kopiere ich eine bestimmte
Seite aus dem Musterfile ('Hidden' geöffnet und geschlossen).
Aktives Frame ist danach 'Meine Makros & Dialoge.wsLib'. Wie kann
ich das ursprüngliche, nun erweiterte File zur Weiterbehandlung im
Makro aktivieren?
Die Sub 'openFrame' liefert eine 2. Fassung des Benutzerfiles ohne
die sichtbare zusätzliche Seite. Was ist falsch an der Sub?
mit freundlichen Grüssen
Wolfgang
Sub openFrame
Dim mArgs(1) As new com.sun.star.beans.PropertyValue
mArgs(0).Name = "MacroExecutionMode" : mArgs(0).Value = 4
mArgs(1).Name = "AsTemplate" : mArgs(1).Value
= FALSE
' mArgs(2).Name = "ReadOnly" : mArgs(2).Value = True
sUrl =
ConvertToUrl("/Users/wsAdm/Documents/me/Gesundh/18_GesundhDta.ods")
'1) vFrame = ThisComponent.getCurrentController().getFrame
'1) mault: Eigenschaft oder Methode nicht gefunden:
getCurrentController
vFrames = StarDesktop.GetFrames()
For i=1 To vFrames.getCount()
vFrame = vFrames.getByIndex(i-1)
s = s & CStr(i-1) & " : " & vFrame.Title & CHR(10)
If vFrame.Title = "18_GesundhDta.ods" Then Exit for
Next i
'2) oDoc = vFrame.LoadComponentFromUrl(sUrl,vFrame,2,mArgs())
'2) ergänztes File verschwindet, 2. Fassung des Originals am Schirm
wait 1000 '<======= 1s Verzögerung
oDoc = vFrame.LoadComponentFromUrl(sUrl,"",2,mArgs())
'3) 1s bleibt das ergänzte file, wird überschrieben vom Original
End Sub
--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.