Makro für alle Tabellenblätter

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

Moderator: Moderatoren

Fireflash
Beiträge: 4
Registriert: Do, 07.10.2010 16:48

Makro für alle Tabellenblätter

Beitrag von Fireflash »

Hallo!

Ich habe ein Makro das auf allen Tabellenblättern ausgeführt werden soll. Im Moment macht es das nur auf dem 1. Blatt. Was muss ich denn ändern damit das funktioniert?

Code: Alles auswählen

REM ***** BASIC *****

Sub Main

End Sub



sub Tom
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 = "ToPoint"
args1(0).Value = "$CZ$27:$EL$31"

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

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$CZ$33"


Moderation,4: Zweitposting im CALC-Bereich gelöscht; CODE-Tags gesetzt
gripslund
***
Beiträge: 82
Registriert: So, 04.06.2006 09:46

Re: Makro für alle Tabellenblätter

Beitrag von gripslund »

hej,

nur ein Tipp:

Code: Alles auswählen

oSheet=Document.Sheets.getByName("Daten")
In dem Fall geht's zum Tabellenblatt "Daten".

oder:

Code: Alles auswählen

oSheet=Document.Sheets(n)
In dem Fall geht's zum Tabellenblatt mit der Nummer n (es wird bei 0 (Null) angefangen zu zaehlen).

gripslund
kannenklaus
*****
Beiträge: 319
Registriert: Mi, 14.12.2005 08:08
Wohnort: freising - oder dort, wo das bier herkommt

Re: Makro für alle Tabellenblätter

Beitrag von kannenklaus »

hallo fireflash,

packe deinen aufgegzeichneten code in die u.g. for/next-schleife.

Code: Alles auswählen

Sub AlleBlaetter
Dim i as Integer

oDoc = ThisComponent

	for i=0 to oDoc.Sheets.count-1
	
	REM dein code rein


	next i
end Sub
grüße klaus
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Makro für alle Tabellenblätter

Beitrag von Karolus »

Hallo
@Klaus
Dein "Rahmenwerk" nutzt dem aufgezeichnetem Code herzlich wenig, er wird trotzdem nur auf dem Tabellenblatt arbeiten das aktuell selektiert ist.

Code: Alles auswählen

sub copyall
oDoc = thisComponent
for i = 0 to odoc.sheets().count -1
    oquelle = odoc.sheets(i).getCellrangebyName("CZ27:EL31").getRangeAddress
    oziel = odoc.sheets(i).getCellrangebyName("CZ33").getcellAddress
    odoc.sheets(i).copyRange( oziel , oQuelle )
next i
end sub
abgewandelt aus http://www.dannenhoefer.de/faqstarbasic ... l#Zweig194

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Fireflash
Beiträge: 4
Registriert: Do, 07.10.2010 16:48

Re: Makro für alle Tabellenblätter

Beitrag von Fireflash »

Danke für eure Hilfe. Hab aber herausgefunden daß das Makro was ich hier rein habe gar nicht das richtige ist was zuständig ist für meine Berechnung. Diese Makro hier macht wohl das Richtige. Es steht aber als "VBA-Projekt" drin. Kann man das auch so ändern das auf allen Blättern immer gleich gerechnet wird?

Code: Alles auswählen

Rem Attribute VBA_ModuleType=VBADocumentModule
Option VBASupport 1


Private Sub CommandButton1_Click()
'
' GrpA Makro
' Makro am 22.02.2002 von Kai Moczyk aufgezeichnet
'

'
    Range("BM24:BS27").Select
    Selection.Sort Key1:=Range("BO24"), Order1:=xlDescending, Key2:=Range( _
        "BS24"), Order2:=xlDescending, Key3:=Range("BP24"), Order3:=xlDescending _
        , Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:= _
        xlTopToBottom
    Range("I34").Select
End Sub
Fireflash
Beiträge: 4
Registriert: Do, 07.10.2010 16:48

Re: Makro für alle Tabellenblätter

Beitrag von Fireflash »

Unter Module liegt dann auch noch ein Makro. Für was ist das denn zuständig?

Code: Alles auswählen

Rem Attribute VBA_ModuleType=VBAModule
Option VBASupport 1
Sub GrpA()
'
' GrpA Makro
' Makro am 22.02.2002 von Kai Moczyk aufgezeichnet
'

'
    Range("BM31:BR35").Select
    Selection.Sort Key1:=Range("BM31"), Order1:=xlDescending, Key2:=Range( _
        "BR31"), Order2:=xlDescending, Key3:=Range("BO31"), Order3:=xlDescending _
        , Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:= _
        xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
        DataOption3:=xlSortNormal
End Sub
Fireflash
Beiträge: 4
Registriert: Do, 07.10.2010 16:48

Re: Makro für alle Tabellenblätter

Beitrag von Fireflash »

Hallo!

Problem habe ich anders gelöst! Trotzdem Danke!
Antworten