teile eines blattnamens suchen/ersetzen

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

Moderator: Moderatoren

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

teile eines blattnamens suchen/ersetzen

Beitrag von kannenklaus »

hallo,

den ersten schritt habe ich geschafft. das folg. makro findet alle blätter die mit "06" enden. nun soll anstatt "06" "07" stehden. wie geht das.

Code: Alles auswählen

Dim oDoc as Object, oSheet as Object
Dim SuString as string
Dim i as integer
oDoc=thisComponent
SuString="_06"
	for i=0 to oDoc.sheets.count-1
		oSheet=oDoc.sheets(i)
	If Instr(oSheet.name, SuString)>0 then

	end if

	next

End Sub
danke klaus
Karolus
********
Beiträge: 7517
Registriert: Mo, 02.01.2006 19:48

Re: teile eines blattnamens suchen/ersetzen

Beitrag von Karolus »

Hallo Klaus
in OOo-Makros und Dialoge-'Strings' findest du die Funktion ReplaceString:

Code: Alles auswählen

....
neuname = replaceString(oSheet.name,Sustring,"_07")
....
Bei http://www.dannenhoefer.de/faqstarbasic ... l#Zweig187 findest du Informationen zum umbenennen von Tabellenblättern.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
kannenklaus
*****
Beiträge: 319
Registriert: Mi, 14.12.2005 08:08
Wohnort: freising - oder dort, wo das bier herkommt

Re: teile eines blattnamens suchen/ersetzen

Beitrag von kannenklaus »

hallo karo,

danke; aber dein code vorschlag funktioniert nicht. ich will nur teile eines blattnamens ersetzen.

grüße

klaus
Karolus
********
Beiträge: 7517
Registriert: Mo, 02.01.2006 19:48

Re: teile eines blattnamens suchen/ersetzen

Beitrag von Karolus »

Hallo Klaus
kannenklaus hat geschrieben:danke; aber dein code vorschlag funktioniert nicht. ich will nur teile eines blattnamens ersetzen
Genau das tut die Funktion ReplaceString.
msgbox(replaceString("Tabelle_06blabla","_06","07"))
zeigt den Text: 'Tabelle_07blabla'

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
kannenklaus
*****
Beiträge: 319
Registriert: Mi, 14.12.2005 08:08
Wohnort: freising - oder dort, wo das bier herkommt

Re: teile eines blattnamens suchen/ersetzen

Beitrag von kannenklaus »

hallo karo,

dein und der folg. code funktioniert bei mir nicht. die funktion ist da und die library ist geladen. hast de ne idee?

Code: Alles auswählen

Sub Main
Dim oDoc as Object, oSheet as Object
Dim SuString as string
Dim neuerName
Dim oErsetzen
Dim i as integer
oDoc=thisComponent
SuString="_06"
	for i=0 to oDoc.sheets.count-1
		oSheet=oDoc.sheets(i)
		If Instr(oSheet.name, SuString)>0 then
			replaceString(oSheet.name,Sustring,"_07")
		end if

	next

End Sub
danke klaus
Karolus
********
Beiträge: 7517
Registriert: Mo, 02.01.2006 19:48

Re: teile eines blattnamens suchen/ersetzen

Beitrag von Karolus »

Hallo Klaus
Die 'replace(...)' Zeile alleine reicht nicht aus um einTabellenblatt umzubenennen, ich hatte bereits in meiner ersten Antwort einen Link zur entsprechenden Seite von Dannenhöfer gesetzt.

Folgender Code sollte funktonieren: (ungetestet)

Code: Alles auswählen

Sub Main
Dim oDoc as Object, oSheet as Object
Dim SuString as string
Dim i as integer
oDoc=thisComponent
SuString="_06"
   for i=0 to oDoc.sheets.count-1
      oSheet=oDoc.sheets(i)
      If Instr(oSheet.name, SuString)>0 then
          altname = oSheet.name
          neuname = replaceString(altname,Sustring,"_07")
          oDoc.Sheets.CopyByName(altname,neuname,i+1)
          oDoc.Sheets.removebyname(altname)
      end if
   next
End Sub
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: teile eines blattnamens suchen/ersetzen

Beitrag von Toxitom »

Hey Leute,

macht es Euch doch nicht so kompliziert!

natürlich kann einenTabelle (Tabellenblatt) ganz einfach umbenannt werden, dafür muss es nicht kopiert und das "alte" gelöscht werden!
Der Name eines Tabellenblattes ist ein String und eine Eigenschaft - und so auch zu ändern.

Allerdings nutzt ihr die Funktion "replaceString() aus den Tools falsch - die Parameter lauten: String, neuer String, zu ersetzender String , und zwar in der Reihenfolge.
Damit wäre der Code (entsprechend dem ersten Thread):

Code: Alles auswählen

Dim oDoc as Object, oSheet as Object
Dim SuString as string
Dim i as integer
oDoc=thisComponent
SuString="_06"
   for i=0 to oDoc.sheets.count-1
      oSheet=oDoc.sheets(i)
   If Instr(oSheet.name, SuString)>0 then
       oSheet.name = replaceString(oSheet.name, "_07", SuString)
   end if

   next

End Sub
Fertig!

Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
kannenklaus
*****
Beiträge: 319
Registriert: Mi, 14.12.2005 08:08
Wohnort: freising - oder dort, wo das bier herkommt

Re: teile eines blattnamens suchen/ersetzen

Beitrag von kannenklaus »

hallo thomas,

danke; nun klappt es. der code wurde nur noch um das laden der bibliothek tools erweitert:

Code: Alles auswählen

Sub SuErTeileEinesBlattnamens
Dim oDoc as Object, oSheet as Object
Dim SuString' as string
Dim i as integer
oDoc=thisComponent
SuString=inputbox("Teilstring, der ersetzt werden soll:","Teile eines Blattnamens ersetzen","06")
ErString=inputbox("neuer Teilstring:","Teile eines Blattnamens ersetzen","07")
   for i=0 to oDoc.sheets.count-1
      oSheet=oDoc.sheets(i)
	   If Instr(oSheet.name, SuString)>0 then
		'globale Bibliothek laden, die die Funktion replaceString vorhält
			GlobalScope.BasicLibraries.LoadLibrary("Tools")
	      	oSheet.name = replaceString(oSheet.name, ErString, SuString)'die Parameterreihenfolge lautet: String, neuer String, zu ersetzender String
	   end if
   next

End Sub
grüße

klaus
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: teile eines blattnamens suchen/ersetzen

Beitrag von Toxitom »

Hey Klaus,
kannenklaus hat geschrieben:der code wurde nur noch um das laden der bibliothek tools erweitert:
ja, aber bitte nicht da, wo du ihn lädst. Da würde sie ja mehrmals geladen werden - falls unterschiedliche Tabellen den Suchstring beinhalten. Bibliotheken läd man ganz am Anfang - einmal, direkt nach den "Dim"- Statements ;-)

Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Karolus
********
Beiträge: 7517
Registriert: Mo, 02.01.2006 19:48

Re: teile eines blattnamens suchen/ersetzen

Beitrag von Karolus »

Hallo Klaus, hallo Thomas
Sorry ich hab leider den 'suchen'- mit dem 'ersetzen'- Parameter vertauscht.
(ich sollte einen Test-code grundsätzlich per copy und paste hier einfügen)

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
kannenklaus
*****
Beiträge: 319
Registriert: Mi, 14.12.2005 08:08
Wohnort: freising - oder dort, wo das bier herkommt

Re: teile eines blattnamens suchen/ersetzen

Beitrag von kannenklaus »

hallo thomas,
ja, aber bitte nicht da,
wo du recht hast, hast du recht. fehler in der eile.

grüße

klaus
Antworten