manrique
Goto Top

Inhalt einer Excel Datei mit VBS Script ersetze, ändern

Hallo an alle,

die Aufgabe ist:
in einer Excel Datei stehen in der ersten Zeile (Spaltenbeschriftung) die Werte betragnach UUID oder steuernach UUID. Diese sollen durch betrag und steuer ersetzt werden!

In den restlichen Zellen ab der 2 Zeile möchte ich eventuell vorhandene Anführungszeichen " entfernen! Die bestehende Datei test.xlsx kann überschrieben werden.

als Anfänger habe ich aufgrund meiner Recherchen im Web folgenden NICHT funktionierenden Code gebastelt:

Datei = "C:\test.xlsx"
arrAlt = Array("betragnach UUID", "steuernach UUID", "betragnach konto", "steuernach konto", Chr(34))
arrNeu = Array("betrag", "steuer", "betrag", "steuer", "")

Set app = CreateObject("Excel.Application")
Set fso = CreateObject("Scripting.FileSystemObject")

Set wb = app.Workbooks.Open(Datei)

For i = 0 To UBound(arrAlt) - 1
var = Replace(var, arrAlt(i), arrNeu(i))
Next

fso.CreateTextFile(Aus).Write var

wb.Save
wb.Close

app.Quit
Set app = Nothing
Set fso = Nothing

Vielen Dank

Content-Key: 392041

Url: https://administrator.de/contentid/392041

Ausgedruckt am: 28.03.2024 um 13:03 Uhr

Mitglied: 137443
Lösung 137443 08.11.2018 aktualisiert um 17:34:18 Uhr
Goto Top
Nicht weiter das Problem ...:
Const DATEI = "C:\text.xlsx"  
Set objExcel = CreateObject("Excel.Application")  
objExcel.DisplayAlerts = False
objExcel.Visible = True
arrAlt = Array("betragnach UUID","steuernach UUID","betragnach konto","steuernach konto")  
arrNeu = Array("betrag","steuer","betrag","steuer")  
With objExcel.Workbooks.Open(DATEI)
	With .Sheets(1).Range("1:1")  
		For i = 0 To UBound(arrAlt)
			.Replace arrAlt(i),arrNeu(i),2,1,False
		Next
	End With
	.Sheets(1).UsedRange.Offset(1,0).Replace """","",2,1,False  
	.Save
	.Close True
End With
objExcel.DisplayAlerts = True
objExcel.Quit
MsgBox "Feddich", vbInformation  
Gruß l.
Mitglied: Manrique
Manrique 08.11.2018 um 17:04:25 Uhr
Goto Top
Hallo lummel,

danke für deine Hilfe. Es funktioniert fast: in der Datei test.xlsx wird in Zelle I1 betragnach UUID durch betrag ersetzt. Jedoch in Zelle K1 steht immer noch steuernach UUID anstatt steuer.
In den Arrays Alt bzw Neu sind das doch immer "Pärchen" oder? Also ist die Positon im Array entscheidend, oder?

Wie würde das gehen wenn ich die xlsx Datei als csv Trennzeichen getrennt speichern möchte?

Danke für die Hilfe
Mitglied: 137443
137443 08.11.2018 aktualisiert um 17:49:51 Uhr
Goto Top
Zitat von @Manrique:
danke für deine Hilfe. Es funktioniert fast: in der Datei test.xlsx wird in Zelle I1 betragnach UUID durch betrag ersetzt. Jedoch in Zelle K1 steht immer noch steuernach UUID anstatt steuer.
Logisch weil du nur in der ersten Zeile danach suchen wolltest, so dein Wortlaut. Deswegen ersetzt es auch nur dort die Überschriften ich zitiere:
in einer Excel Datei stehen in der ersten Zeile (Spaltenbeschriftung) die Werte betragnach UUID oder steuernach UUID. Diese sollen durch betrag und steuer ersetzt werden!


In den Arrays Alt bzw Neu sind das doch immer "Pärchen" oder?
Ja-
Also ist die Positon im Array entscheidend, oder?
Nein. das hier legt fest in welchem Bereich diese Teile ersetzt werden.
With .Sheets(1).Range("1:1")

Wie würde das gehen wenn ich die xlsx Datei als csv Trennzeichen getrennt speichern möchte?

Danke für die Hilfe
Methode SaveAs nutzen.
Mitglied: Manrique
Manrique 08.11.2018 um 17:13:20 Uhr
Goto Top
Aber K1 befindet sich in der ersten Zeile, was ist daran falsch

LG
Mitglied: 137443
137443 08.11.2018 aktualisiert um 17:31:35 Uhr
Goto Top
Uups, sorry komplett übersehen. Nochmal kopieren, da war ein Schnitzer von dir noch drin den ich fälschlicherweise übernommen hatte.
Mitglied: Manrique
Manrique 08.11.2018 um 17:31:33 Uhr
Goto Top
Was meinst du mit nochmal kopieren?

Kannst du mir bitte den Code ändern?

Vielen Dank
Mitglied: 137443
137443 08.11.2018 um 17:31:44 Uhr
Goto Top
s.o.
Mitglied: Manrique
Manrique 08.11.2018 um 17:36:54 Uhr
Goto Top
Super, jetzt funktionierts!

Vielen Dank für die rasche und kompetente Hilfe!

Schönen Abend noch
Mitglied: 137443
137443 08.11.2018 um 17:50:14 Uhr
Goto Top
Kein Thema, ebenfalls schönen Abend.
Mitglied: Manrique
Manrique 09.11.2018 um 11:26:56 Uhr
Goto Top
Hallo lummel,

ich möchte ab Zeile 2 auch ev. vorhandene Zeilenumbrüche entfernen. Das sollte Chr(10) und Chr(13) sein.

Ist das mit einer Erweiterung in Zeile 13 möglich?

Könnte für andere hilfreich sein - SaveAs csv Trennzeichen getrennt:
https://stackoverflow.com/questions/9216919/converting-xls-to-csv-using- ...

The Function SaveAs is defined so : .SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local)

Thas is, to use the semicolon (if your regional language option are correctly set)

ExcelObj.Workbooks(1).SaveAs csvFile, 6,,,,,,,,,,True


LG