Seite 1 von 1
CALC: Dokument öffnen, auf Tab.-Blatt wechseln
Verfasst: Di, 21.02.2017 16:47
von speednetz
Hallo
Kann mir vielleicht jeman helfen
Mein Problem ist ich möchte das wenn die Datei sich öffnet was schon so geht. das er das 3 Tabellenblatt öffnet.
Code: Alles auswählen
oSer = createUNOService("com.sun.star.system.SystemShellExecute")
oSer.execute("C:\Statistik - Kopie\Statistik.ods",,0)
Wäre schön wenn mir einer eine Lösung geben könnte
Danke Ralf
Moderation,4: Tippfehler in Betreff (für Suchfunktionen) korrigiert
Re: soll mit makro laufen
Verfasst: Di, 21.02.2017 17:48
von Toxitom
Hallo Ralf,
Hmm, dein Code startet zwar das Calc-Dokument - das war es aber auch. Sehr ungünstig das Ganze.
Einzige Lösung in Deinem Fall: Schliesse das Statistik.ods mit Cursor auf der dritten Seite - dann sollte es auch damit wieder öffnen.
Willst Du das Ganze per Makro machen, benötigst Du Dein Dokument als Objekt.
Am einfachsten geht das über die Methode
Code: Alles auswählen
oDoc = starDesktop.loadComponentfromURL(convertToURL("C:\Statistik - Kopie\Statistik.ods")),"_blanc",0,array())
oDoc wäre jetzt das Objekt deines Dokumentes.
Nun kannst Du Dir Dein 3. Tabnellenblatt als Objekt holen:
oder - falls nur der Name bekannt ist:
Und nun kannst Du das aktiv setzen:
Das sollte es gewesen sein:)
VG Tom
Re: soll mit makro laufen
Verfasst: Di, 21.02.2017 19:18
von speednetz
Danke Tom
Werde es testen.
Melde mich ob es funktioniert
Gruß Ralf
Re: soll mit makro laufen
Verfasst: Di, 21.02.2017 23:54
von Karolus
Hallo
Probiers mal schlicht und ergreifend mit:
Code: Alles auswählen
oSer = createUNOService("com.sun.star.system.SystemShellExecute")
oSer.execute("C:\Statistik - Kopie\Statistik.ods#Tabelle3",,0)
unter der Annahme das deine dritte Tabelle eben diesen Namen hat.
Re: soll mit makro laufen
Verfasst: Mi, 22.02.2017 09:15
von speednetz
Hallo Tom
Soweit läuft es,aber wenn er das Tabellenblatt geöffnet hat kann ich die dort liegenden Makro Bouton
nicht starten.
Ich bekomme die Mitteilung
Aus Sicherheitsgründen ist dieses Makro nicht ausführbar.
Nehme ich die Zeilen wieder raus läuft es wie vorher.
Hast du eine Idee wo ran das liegt.
Gruß Ralf
Re: soll mit makro laufen
Verfasst: Mi, 22.02.2017 09:34
von Stephan
Du musst das Zulassen der Ausführung von Makros als Parameter übrergeben, z.B.:
Code: Alles auswählen
Dim par(0) As New com.sun.star.beans.PropertyValue
par(0).Name = "MacroExecutionMode"
par(0).Value = com.sun.star.document.MacroExecMode.ALWAYS_EXECUTE_NO_WARN
oDoc = starDesktop.loadComponentfromURL(convertToURL("C:\Statistik - Kopie\Statistik.ods")),"_blank",0,par())
oSheet = oDoc.sheets(2)
oDoc.getCurrentController.setActiveSheet(oSheet)
Gruß
Stephan
Re: soll mit makro laufen
Verfasst: Mi, 22.02.2017 12:19
von speednetz
Hallo Stephan
Danke es läuft jetzt so wie ich es mir gedacht habe.
Der Sinn ist das ich dann in der Orginaldatei das makro Inhalt löschen starten kann.
Mein frage wäre kann ich das löschen vieleicht hinter diese Zeile legen
oDoc = starDesktop.loadComponentfromURL(convertToURL("C:\Statistik - Kopie\Statistik.ods")),"_blank",0,par())
dann müsst ich nicht auf das Tabellenblatt springen.
Würde mich über eine positive Nachricht freuen
Dank noch mal Stepfan
Gruß Ralf
Re: soll mit makro laufen
Verfasst: Mi, 22.02.2017 13:56
von Stephan
Mein frage wäre kann ich das löschen vieleicht hinter diese Zeile legen
oDoc = starDesktop.loadComponentfromURL(convertToURL("C:\Statistik - Kopie\Statistik.ods")),"_blank",0,par())
ja. Zumindest fällt mir nichts ein was dagegen spricht.
Gruß
Stephan
Re: soll mit makro laufen
Verfasst: Mi, 22.02.2017 16:18
von speednetz
Hallo Stephan
Habe versucht den inhalt des makros was ich zum löschen nutze dahinter zu setzen.
leider geht es so nicht.
Hier das makro was ich zum löschen nutze.
Code: Alles auswählen
sub loeschen1
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Nr"
args1(0).Value = 1
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$B$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$C$6:$G$56"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "$C$60:$G$60"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "ToPoint"
args7(0).Value = "$B$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7())
rem ----------------------------------------------------------------------
dim args8(0) as new com.sun.star.beans.PropertyValue
args8(0).Name = "Nr"
args8(0).Value = 2
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args8())
rem ----------------------------------------------------------------------
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = "ToPoint"
args9(0).Value = "$B$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args9())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
rem ----------------------------------------------------------------------
dim args11(0) as new com.sun.star.beans.PropertyValue
args11(0).Name = "ToPoint"
args11(0).Value = "$C$6:$G$56"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args11())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
rem ----------------------------------------------------------------------
dim args13(0) as new com.sun.star.beans.PropertyValue
args13(0).Name = "ToPoint"
args13(0).Value = "$C$60:$G$60"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args13())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
rem ----------------------------------------------------------------------
dim args15(0) as new com.sun.star.beans.PropertyValue
args15(0).Name = "ToPoint"
args15(0).Value = "$B$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args15())
end Sub
Wenn das gehen würde und er dann die Datei zumachen würde wäre das super.
Dann brache ich nicht zu springen.
Vieleicht kannst du mir ja damit helfen
Gruß Ralf