Seite 1 von 1
teile eines blattnamens suchen/ersetzen
Verfasst: Di, 08.01.2008 14:24
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
Re: teile eines blattnamens suchen/ersetzen
Verfasst: Di, 08.01.2008 15:51
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
Re: teile eines blattnamens suchen/ersetzen
Verfasst: Di, 08.01.2008 16:37
von kannenklaus
hallo karo,
danke; aber dein code vorschlag funktioniert nicht. ich will nur teile eines blattnamens ersetzen.
grüße
klaus
Re: teile eines blattnamens suchen/ersetzen
Verfasst: Di, 08.01.2008 17:02
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
Re: teile eines blattnamens suchen/ersetzen
Verfasst: Di, 08.01.2008 20:44
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
Re: teile eines blattnamens suchen/ersetzen
Verfasst: Mi, 09.01.2008 00:13
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
Re: teile eines blattnamens suchen/ersetzen
Verfasst: Mi, 09.01.2008 08:40
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
Re: teile eines blattnamens suchen/ersetzen
Verfasst: Mi, 09.01.2008 08:59
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
Re: teile eines blattnamens suchen/ersetzen
Verfasst: Mi, 09.01.2008 09:18
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
Re: teile eines blattnamens suchen/ersetzen
Verfasst: Mi, 09.01.2008 09:29
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
Re: teile eines blattnamens suchen/ersetzen
Verfasst: Mi, 09.01.2008 10:05
von kannenklaus
hallo thomas,
ja, aber bitte nicht da,
wo du recht hast, hast du recht. fehler in der eile.
grüße
klaus