von F3K Total » Do, 12.11.2020 17:05
Moin,
ich habe dir ein Makro geschrieben, Beispieldatei anbei.
Code: Alles auswählen
Sub Multi_Find_and_Replace_Dataarray
oSearchstringSheet = ThisComponent.sheets.GetByName("Suchen_Ersetzen")
oCursor = oSearchstringSheet.CreateCursor
oCursor.GotoEndofUsedArea(false)
nEndrow = oCursor.Rangeaddress.EndRow
oSearchstringRange = oSearchstringSheet.getCellRangeByPosition(0,1,1,nEndrow)
sSearcharray = oSearchstringRange.DataArray
oSearchSheet = ThisComponent.sheets.GetByName("DATEN")
oCursor = oSearchSheet.CreateCursor
oCursor.GotoEndofUsedArea(false)
nEndColumn = oCursor.Rangeaddress.EndColumn
nEndRow = oCursor.Rangeaddress.EndRow
oSearchRange = oSearchSheet.getCellRangeByPosition(0,0,nEndColumn,nEndRow)
aSearchDataarray = oSearchRange.Dataarray
nCounter = 0
For i = 0 to uBound(sSearcharray)
aRow = sSearcharray(i)
sSearchString = aRow(0)
sReplaceString = aRow(1)
for j = 0 to uBound(aSearchDataarray)
aSearchRow = aSearchDataarray(j)
for k = 0 to uBound(aSearchRow)
if instr(aSearchRow(k),sSearchString) > 0 then
sText = replace(aSearchRow(k),sSearchString,sReplaceString)'hier wird ersetzt
aSearchRow(k) = sText
nCounter = nCounter + 1
endif
next k
aSearchDataarray(j) = aSearchRow
next j
next i
oSearchRange.SetDataarray(aSearchDataarray)
msgbox ((uBound(sSearcharray)+1) & " Suchbegriffe wurden an insgesamt " & nCounter & " Stellen ersetzt",64,"Fertig")
end sub
- Auf Tabellenblatt "DATEN" stehen die zu durchsuchenden Daten
- Auf Tabellenblatt "Suchen_Ersetzen" trägt man in die Spalten A und B jeweils den Suchbegriff und die Ersetzung ein.
- Dann drückt man die Schaltfläche "Suchen und Ersetzen", fertig
Damit das Makro laufen darf, stellst du unter Extras/Einstellungen.../Openoffice/Sicherheit/Makrosicherheit... mindestens die Stufe "Mittel" ein, dann wirst du beim Öffnen von Dokumenten gefragt, ob du Makros ausführen möchtest.
Gruß R
- Dateianhänge
-
- Multi_Find_and_Replace_openoffice_info_75070.ods
- (54.65 KiB) 78-mal heruntergeladen
Moin,
ich habe dir ein Makro geschrieben, Beispieldatei anbei.
[code]Sub Multi_Find_and_Replace_Dataarray
oSearchstringSheet = ThisComponent.sheets.GetByName("Suchen_Ersetzen")
oCursor = oSearchstringSheet.CreateCursor
oCursor.GotoEndofUsedArea(false)
nEndrow = oCursor.Rangeaddress.EndRow
oSearchstringRange = oSearchstringSheet.getCellRangeByPosition(0,1,1,nEndrow)
sSearcharray = oSearchstringRange.DataArray
oSearchSheet = ThisComponent.sheets.GetByName("DATEN")
oCursor = oSearchSheet.CreateCursor
oCursor.GotoEndofUsedArea(false)
nEndColumn = oCursor.Rangeaddress.EndColumn
nEndRow = oCursor.Rangeaddress.EndRow
oSearchRange = oSearchSheet.getCellRangeByPosition(0,0,nEndColumn,nEndRow)
aSearchDataarray = oSearchRange.Dataarray
nCounter = 0
For i = 0 to uBound(sSearcharray)
aRow = sSearcharray(i)
sSearchString = aRow(0)
sReplaceString = aRow(1)
for j = 0 to uBound(aSearchDataarray)
aSearchRow = aSearchDataarray(j)
for k = 0 to uBound(aSearchRow)
if instr(aSearchRow(k),sSearchString) > 0 then
sText = replace(aSearchRow(k),sSearchString,sReplaceString)'hier wird ersetzt
aSearchRow(k) = sText
nCounter = nCounter + 1
endif
next k
aSearchDataarray(j) = aSearchRow
next j
next i
oSearchRange.SetDataarray(aSearchDataarray)
msgbox ((uBound(sSearcharray)+1) & " Suchbegriffe wurden an insgesamt " & nCounter & " Stellen ersetzt",64,"Fertig")
end sub[/code]
[list][*]Auf Tabellenblatt "DATEN" stehen die zu durchsuchenden Daten
[*]Auf Tabellenblatt "Suchen_Ersetzen" trägt man in die Spalten A und B jeweils den Suchbegriff und die Ersetzung ein.
[*]Dann drückt man die Schaltfläche "Suchen und Ersetzen", fertig[/list]
Damit das Makro laufen darf, stellst du unter Extras/Einstellungen.../Openoffice/Sicherheit/Makrosicherheit... mindestens die Stufe "Mittel" ein, dann wirst du beim Öffnen von Dokumenten gefragt, ob du Makros ausführen möchtest.
Gruß R