Symbol zu Symbolleiste hinzufügen und Makro zuweisen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Schiri1
*
Beiträge: 14
Registriert: Di, 25.01.2005 14:43
Wohnort: Nürnberg, eigendlich aber Löbau(Sa.)

Symbol zu Symbolleiste hinzufügen und Makro zuweisen

Beitrag von Schiri1 »

:roll:
Ein Umsteiger von Excel sucht Hilfe.

Für eine Tabellenvorlage habe ich ein Makro (Drucken_ohne_Leer()) erstellt, mit welchem Leerzeilen ausgeblendet werden und der Druckbereich festgelegt wird.

Code: Alles auswählen

Sub Drucken_ohne_Leer()
	Dim Blatt As Object, Zeile As Integer
	Dim PrintArea(2) As New com.sun.star.table.CellRangeAddress
	Dim PrintProperties(0) As New com.sun.star.beans.PropertyValue
	Blatt = ThisComponent.CurrentController.ActiveSheet
	If Blatt.Name = "Abrechnung" Then
		ThisComponent.enableAutomaticCalculation(False)
		' Leere Zeilen ausblenden
		For Zeile = 5 To 88
			If Blatt.getCellByPosition(80, Zeile).String = "" Then Blatt.Rows(Zeile).IsVisible = False
		Next Zeile
		' Druckbereich festlegen -> zu druckende Seiten festlegen -> drucken
		PrintArea(1).Sheet = 1 : PrintArea(0).StartRow = 0 : PrintArea(0).StartColumn = 79
		                         PrintArea(0).EndRow = 90  : PrintArea(0).EndColumn = 88
		PrintArea(2).Sheet = 1 : PrintArea(1).StartRow = 0 : PrintArea(1).StartColumn = 94
		                         PrintArea(1).EndRow = 90  : PrintArea(1).EndColumn = 105
		Blatt.PrintAreas = PrintArea()
		PrintProperties(0).Name="Pages"
		PrintProperties(0).Value="1-2"
		ThisComponent.Print(PrintProperties())
		' Alle Zeilen wieder einblenden
		Blatt.Rows().IsVisible = True
		Blatt.PrintAreas = PrintArea(0)
		ThisComponent.enableAutomaticCalculation(True)
	Else
		ThisComponent.Print(PrintProperties())
	End If
End Sub
Wenn ich dieses Makro dem Ereignis "Dokument wird gedruckt" zuweise wird es zwar ausgeführt, es wird aber trotzdem die komplette Tabelle gedruckt; wenn das Makro direkt ausgeführt wird funktioniert es.
Ich suche jetzt eine Möglichkeit, über ein weiteres Makro ein neues Symbol in die Symbolleiste (Funktionsleiste) hinzufügen und das Makro dieser zu zuweisen.
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Schiri1,
Ich suche jetzt eine Möglichkeit, über ein weiteres Makro ein neues Symbol in die Symbolleiste (Funktionsleiste) hinzufügen und das Makro dieser zu zuweisen.
Warum so umständlich? Einfach eine Button ins Dokument setzen (aus den Formular-Möglichkeiten), entsprechend Beschriften, das Makro zuweisen -> fertig. Stell bei den Button-Eigenschaften "Nicht Drucken" ein, dassn wird der Knopf auch nciht gedruckt.

Das Makro dem Event "Drucken" zuzuweisen, nützt natürlich nichts. Dann wird das Makro ausgeführ, wenn du den Druckbutton drückst, die ursprüngliche Funktionalität des Buttons bleibt aber zusätzlich erhalten -> daher funktionierte deien Idee nicht.

Gruß
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Wenn ich dieses Makro dem Ereignis "Dokument wird gedruckt" zuweise


welche Version OpenOffice verwendest Du? Bei mir gibt es dieses Ereignis nicht.
wird es zwar ausgeführt, es wird aber trotzdem die komplette Tabelle gedruckt
es wird nur einmal oder zweimal gedruckt?

Es gibt bei mir SO7 PP4 das Ereignis "Dokument drucken", ein disem zugeordnetes Makro wird nach dem Verlassen des Drucken-Dialogs aber noch vor dem Eigentlichen Drucken ausgeführt. Ich denke das nach Verlassen des Druckdialogs die Druckbereiche bereits feststehen und würde erwarten das zweimal gedruckt wird, andererseits druckt ja das Makro selber so das es das Ereignis nochmals auslöst und eine unendliche Schleife entstehen würde ... vielleicht führt das zu den Problemen
Ich suche jetzt eine Möglichkeit, über ein weiteres Makro ein neues Symbol in die Symbolleiste (Funktionsleiste) hinzufügen und das Makro dieser zu zuweisen.
Macht keinen Sinn, weil:
Hinzufügen von Schaltflächen ist prinzipiell möglich aber erfordert zur Übernahme der Einstellungen ein Beenden und Neuöffnen von OpenOffice, was für _ein_ bestimmtes Dokument nicht sinnvoll ist.
Deshalb ist das ohne Makro möglich nur über die Anpassung der Symbolleisten. Die Konfiguration der Leisten/Menüs wird mit dem speziellen Dokument gespeichert und steht sofort zur Verfügung wenn das Dokument geöffnet wird. Leider gibt es einen Fehler in den 1.1.x-Versionen, in den 1.0.x-Versionen funktioniert das. Und es geht mit allen Versionen wenn das Dokument einmalig mit einer Version 1.0.x erstellt wurde. Deine Version ???
Lösung:
mach eine Schaltfläche direkt in eine Tabelle und ordne dieser das Makro zu. Die Schaltfläche wird nicht mitgedruckt, wenn Du das bei den Eigenschaften der Schaltfläche so festlegst.


Gruß
Stephan
Schiri1
*
Beiträge: 14
Registriert: Di, 25.01.2005 14:43
Wohnort: Nürnberg, eigendlich aber Löbau(Sa.)

Beitrag von Schiri1 »

:roll:
Welche Version OpenOffice verwendest Du? Bei mir gibt es dieses Ereignis nicht.
OpenOffice 1.1.4, die Vorlage soll aber mal unter StarOffice 7.0 laufen
Ich meine natürlich das Ereignis "Dokument drucken".
Warum so umständlich?
Ganz einfach, die Vorlage ist für einen DAU, und ich ich habe keine Lust diesem Benutzer fünf mal am Tag zu erklären, wie Makros gestartet werden. Wie gesagt, ich bin ein Excel-Umsteiger und bei VBA für M$-Excel gibt es das Objekt "Application.CommandBars("Name")". Ich habe damit eigentlich - was die Benutzer angeht - gut Erfahrung gemacht und hatte die Hoffnung, das es so was auch unter OOo-Basic gibt.
Antworten