Makros und TabellenNamen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Makros und TabellenNamen

Re: Makros und TabellenNamen

von komma4 » Mi, 25.03.2009 17:44

Aleiga hat geschrieben:Ich finde es nur sehr unelegant 70 Prozeduren zu erstellen
Ja. Deshalb stimmt auch...
keksi1970 hat geschrieben:vielleicht ist auch nur dein ansatz etwas zu kompliziert
Gute Frage!

Ginge es darum in einer speziellen Arbeitsumgebung das "Springen" auf ein bis sechs/sieben Tabellenblättern per Symbolleiste anzubieten: OK.
[das geht noch, ist aus anderen Gründen aber nicht so gut]


Eine Symbolleiste mit 70 Schaltflächen: no go.
[Platzbedarf, Ergonomie: wie siebzig verschiedene Symbole erkennen?]


Keksis Lösung, eingebaut:
was spricht gegen die Nutzung des Navigators: F5, einmal "Tabelle" aufklicken, dann stehen alle (lesbar!) zum Wechsel zur Verfügung (Doppelklick).
Bild

Re: Makros und TabellenNamen

von keksi1970 » Mi, 25.03.2009 15:47

hi,

vielleicht ist auch nur dein ansatz etwas zu kompliziert.

du willst einfach in der Symbolleiste ein Makro, welches zu einer bestimmten tabelle springt ?

als kurzform : frage den Tabellennamen per inputbox ab
als deluxe-version : erstelle einen dialog mit einer Listbox, in der alle Tabellennamen aufgeführt sind und wähle


lg andreas

Re: Makros und TabellenNamen

von Aleiga » Mi, 25.03.2009 13:29

Hallo Charly, hallo winfried,

Danke für die Rückmeldung, schade, aber was nicht geht, geht nicht. :?

Ich finde es nur sehr unelegant 70 Prozeduren zu erstellen, die sich nur durch den an das Makro übergebenen Parmeter unterscheiden. :(

Aber es geht nun mal nicht anders.

Vielen Dank für Eurer Unterstützung

Viele Grüße von Aleiga

Re: Makros und TabellenNamen

von komma4 » Mi, 25.03.2009 09:15

Code: Alles auswählen

Sub jump2_Tabelle1
 calc_jump2SheetByName( "Tabelle1" )
End Sub
Sub jump2_Tabelle2
 calc_jump2SheetByName( "Tabelle2" )
End Sub
Sub jump2_Tabelle3
 calc_jump2SheetByName( "Tabelle3" )
End Sub

Re: Makros und TabellenNamen

von Charly » Mi, 25.03.2009 08:57

Hallo Aleiga!
Aleiga hat geschrieben: Nun habe ich eine Symbolleisten angelegt. Diese Symbolleiste soll Befehls-Schalter enthalten die jeweils ein Makro aufrufen. Das aufgerufene Makro soll nicht weiter tun als zu einem bestimmten Tabellenblatt zu springen.
In deiner Eingangsfrage hast du geschrieben, dass du für jedes Tabellenblatt einen Schalter einrichtest. Dann brauchst du doch den Code nur so oft zu kopieren, wie du Tabellenblätter hast und in jedem Code ein bestimmtes Tabellenblatt fest hinterlegen. Dann kannst du jedem Schalter den zutreffenden Code zuweisen.

Gruß
Charly

Re: Makros und TabellenNamen

von komma4 » Mi, 25.03.2009 08:27

Aleiga hat geschrieben:wie rufe ich ein Makro mit Parameter aus OpenOffice heraus aus auf, also nicht innerhalb von Basic.
Geht nicht.

Du kannst ein Makro von der Kommandozeile aus mit einem Parameter starten, oder aus einem Makro heraus (wie gezeigt).

Das Zuweisen eines Makros mit unterschiedlichen Parametern zu verschiedenen Schaltflächen bspw. geht nicht...

Re: Makros und TabellenNamen

von Aleiga » Mi, 25.03.2009 08:17

Hallo Charly, hallo Winfried,

vielen Dank für Eure Hilfe, unklar ist mir allerdings immer noch folgendes:

wie rufe ich ein Makro mit Parameter aus OpenOffice heraus aus auf, also nicht innerhalb von Basic.

Wenn ich z.B. den Weg über "Extras"->"Makros"->"Makros ausführen" gehe, habe ich keine Möglichkeit einen Parameter zu übergeben.

Vielen Dank im voraus Aleiga

Re: Makros und TabellenNamen

von Charly » Di, 24.03.2009 14:33

Hallo!

Komma4 hat deine Frage ja schon beantwortet.

Ich möchte dir nur noch einen Hinweis auf Verwenden von Variablen geben.
In deiner Abänderung verwendest du nämlich als Variblennamen "Name". Da das dem englischen "name" entspricht, kannst du das nicht verwenden, da das ein Schlüsselwort in Starbasic ist. Wie du siehst hat komma4 deshalb "sName" als Variable genommen.

Gruß
Charly

Re: Makros und TabellenNamen

von komma4 » Di, 24.03.2009 14:18

Aleiga hat geschrieben:wie gestalte ich in OpenOffice Calc den Aufruf eines Makros mit einem Parameter?

Code: Alles auswählen

Sub aufrufenRoutineWechseln
sName = "Tabelle2" 
msgbox "Wechsle nun zu Tabellenblatt: " & sName

' Aufruf
TabellenblattAktvieren( sName )

' ...
' weitere Anweisungen
End Sub

Re: Makros und TabellenNamen

von Aleiga » Di, 24.03.2009 14:00

Hallo Charly,

danke für die schnelle Antwort.

Ich habe schon grundlegende kenntnisse im Programmieren und deshalb noch eine frage zu Deinem Code:

Wenn ich mehre Tabellen über ihren Namen aufrufen möchte, habe ich doch zwei Möglichkeiten:

1. ich nehme Deine Prozedur kopiere sie x-mal mit unterschiedlichen Namen und füge in Zeile

Code: Alles auswählen

Tab = Dok.sheets.getByName("Tabelle2") 'Hier den Namen der gewünschten Tabelle eintragen'
immer einen anderen Namen ein

2. Ich nehme Deine Prozedur und versehe sie mit eine Aufrufparameter, z.B. so:

Code: Alles auswählen

Sub TabellenblattAktvieren(Name)
Dok = ThisComponent
Controller = Dok.getCurrentController
Tab = Dok.sheets.getByName(Name) 'Hier den Namen der gewünschten Tabelle eintragen
Controller.activeSheet = Tab
End Sub
Wenn das so funktionieren sollte, dann ist die nächste Frage: wie gestalte ich in OpenOffice Calc den Aufruf eines Makros mit einem Parameter?

Kannst Du mir auch hierauf eine Antwort geben

Vielen Dank im voraus Aleiga

Re: Makros und TabellenNamen

von komma4 » Di, 24.03.2009 13:53

...oder, als wiederverwendbare Routine (Parameter: Tabellenname)

Code: Alles auswählen

Sub calc_jump2SheetByName( Optional sName as String ) 

If IsMissing( sName ) Then Exit Sub

If ThisComponent.Sheets().hasByName( sName ) Then
	oZiel = ThisComponent.Sheets().getByName( sName ) 
	oBlatt = ThisComponent.CurrentController.setActiveSheet( oZiel ) 
End If

End Sub

Re: Makros und TabellenNamen

von Charly » Di, 24.03.2009 13:14

Hallo!
Aleiga hat geschrieben: Deshalb möchte ich das Makro so abändern, daß ich den TabellenNamen verwende und nicht die Nummer
Der aufgezeichnete Code ist dafür etwas umständlich. Nimm besser folgenden Code:

Code: Alles auswählen

Sub TabellenblattAktvieren()
Dok = ThisComponent
Controller = Dok.getCurrentController
Tab = Dok.sheets.getByName("Tabelle2") 'Hier den Namen der gewünschten Tabelle eintragen
Controller.activeSheet = Tab
End Sub
Gruß
Charly

Makros und TabellenNamen

von Aleiga » Di, 24.03.2009 12:26

Hallo ich habe eine Frage zu der Verwendung von TabellenNamen in Makros,

Folgendes möchte ich realisieren:

Ich habe in einer Cal-Datei mehrere Tabellenblätter, jedes Blatt hat einen von mir vergebenen Namen.
Nun habe ich eine Symbolleisten angelegt. Diese Symbolleiste soll Befehls-Schalter enthalten die jeweils ein Makro aufrufen. Das aufgerufene Makro soll nicht weiter tun als zu einem bestimmten Tabellenblatt zu springen.

Folgendes habe ich bisher gemacht:
-- anlegen der Symbolleiste
-- Erstellen der Makros (siehe unten)
-- Verknüfen der Makros mit jeweils einem Befehl auf der Symbolleiste

Code: Alles auswählen

sub Senf
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 = 7

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())

end sub
[\code]


Funktioniert auch alle bestens, aber ich habe ein Problem:
Die Tabellen werden über Nummern aufgerufen, im Bsp. oben Nr. 7, wenn ich jedoch in der Datei vorne eine neue Tabelle aus einer Vorlagendatei einfüge, dann wird z.B mit dem Schalter für [i]Senf[\i] zwar weiterhin die Nummer 7 aufgerufen, dahinter verbirgt sich jedoch nicht mehr das Rezept für Senf sonder das was unmittrelbar davor steht.

Deshalb möchte ich das Makro so abändern, daß ich den TabellenNamen verwende und nicht die Nummer.

Kann mir jemand einen Tipp geben.

Vielen Dank im voraus Aleiga

Nach oben