teile eines blattnamens suchen/ersetzen

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: teile eines blattnamens suchen/ersetzen

Re: teile eines blattnamens suchen/ersetzen

von kannenklaus » Mi, 09.01.2008 10:05

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

grüße

klaus

Re: teile eines blattnamens suchen/ersetzen

von Karolus » Mi, 09.01.2008 09:29

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

von Toxitom » Mi, 09.01.2008 09:18

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

von kannenklaus » Mi, 09.01.2008 08:59

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

von Toxitom » Mi, 09.01.2008 08:40

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

von Karolus » Mi, 09.01.2008 00:13

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

von kannenklaus » Di, 08.01.2008 20:44

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

von Karolus » Di, 08.01.2008 17:02

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

von kannenklaus » Di, 08.01.2008 16:37

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

von Karolus » Di, 08.01.2008 15:51

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

teile eines blattnamens suchen/ersetzen

von kannenklaus » Di, 08.01.2008 14:24

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

Nach oben