zinedine
Goto Top

Suchen und ersetzen als Batch oder VBA

Hallo,

bin hier neu im Forum und ein absoluter Laie was Programmierung betrifft...
Habe deswegen auch ein großes für viele eher ein leichtes Problem:
Ich möchte für eine Excelauswertung, in einer Textdatei alle Punkte mit einem Komma ersetzen!
Sollte ich das über ein Makro machen oder über eine Batchdatei, die ich dann auch über ein Makro starten kann?

Wie könnte diese Programmierung aussehen? Für eure Hilfe bin ich sehr Dankbar...

Content-ID: 382584

Url: https://administrator.de/forum/suchen-und-ersetzen-als-batch-oder-vba-382584.html

Ausgedruckt am: 22.04.2025 um 10:04 Uhr

emeriks
emeriks 07.08.2018 um 15:35:40 Uhr
Goto Top
Hi,
wenn das nur eine einmalige Sache ist, dann einfach die Textdatei im Notepad öffnen und Suchen-Ersetzen + Speichern.

E.
SeaStorm
SeaStorm 07.08.2018 um 15:52:58 Uhr
Goto Top
Hi in Powershell:
(Get-Content c:\temp\test.csv).replace('.', ',') | Set-Content c:\temp\test.csv  
Zinedine
Zinedine 07.08.2018 um 16:08:07 Uhr
Goto Top
Nee face-smile sollen tägliche auswertungen werden...
Zinedine
Zinedine 08.08.2018 um 08:10:38 Uhr
Goto Top
klappt als Powershell sehr gut damit. Wenn ich das aber über ein Makro abspielen möchte funktioniert es leider nicht. Hast du eine Ahnung wieso ? face-smile

Sub PS_ausführen()

Dim pathname As String
pathname = ActiveWorkbook.Path
Call Shell("powershell -noexit -file ""C:\Users\ds\Desktop\log_bearbeiten", 1)


End Sub
SeaStorm
SeaStorm 08.08.2018 um 08:14:14 Uhr
Goto Top
Morgen,

da ausser "geht nicht" keine Beschreibung vorliegt ...
Vermute ich mal ins blaue rein, das du da noch die ExecutionPolicy brauchst
Call Shell("powershell -executionpolicy bypass -noexit -file ""C:\Users\ds\Desktop\log_bearbeiten", 1)  
emeriks
emeriks 08.08.2018 aktualisiert um 08:17:29 Uhr
Goto Top
log_bearbeiten
Hast Du die Datei tatsächlich ohne Dateinamenerweiterung gespeichert? Bedenke, dass der Explorer standardmäßig keine bekannten Erweiterungen anzeigt.

Dann:
Du hast "" vor dem Pfad, dann also auch danach.
"powershell -noexit -file ""C:\Users\ds\Desktop\log_bearbeiten"""  

Da das aber ein Pfad ohne Leerzeichen ist, kannst Du das hier auch weglassen.
"powershell -noexit -file C:\Users\ds\Desktop\log_bearbeiten"  


Welche ExecutionPolicy gilt? ggf. versuchen mit
powershell -noexit -ExecutionPolicy Bypass -file ".......  

E.
Zinedine
Zinedine 08.08.2018 um 08:25:38 Uhr
Goto Top
Morgen,

sorry...
auch in dieser Form öffnet sich die Powershell und schließt auch sofort wieder, ohne das es veränderungen in der Textdatei vornimmt.
Wenn ich die PS seperat öffne, ohne Makro, brauch er auch etwas länger, aber funktioniert prima...
emeriks
emeriks 08.08.2018 um 08:30:41 Uhr
Goto Top
auch in dieser Form
Weil auch @SeaStorm die "" übersehen hat ...
Zinedine
Zinedine 08.08.2018 um 08:40:48 Uhr
Goto Top
Ich habe es so probiert:

Sub PS_ausführen()

Dim pathname As String
pathname = ActiveWorkbook.Path
Call Shell("powershell -noexit -ExecutionPolicy Bypass -file ""C:\Users\ds\Desktop\log_bearbeiten""", 1)


End Sub

Hat auch wieder nicht funktioniert...
SeaStorm
SeaStorm 08.08.2018 um 08:53:43 Uhr
Goto Top
da ist immernoch zu viel " im Spiel. Und benenne die Datei korrekt bitte

1. Sicher gehen das die Datei die Endung .ps1 hat und dann
2.:
Call Shell("powershell -noexit -ExecutionPolicy Bypass -file "C:\Users\ds\Desktop\log_bearbeiten.ps1", 1)  
emeriks
emeriks 08.08.2018 um 09:11:15 Uhr
Goto Top
da ist immernoch zu viel " im Spiel. Und benenne die Datei korrekt bitte
Nein, das war schon richtig. Deine Zeile geht so nicht. Bedenke: Es ist VBA!
emeriks
emeriks 08.08.2018 um 09:13:25 Uhr
Goto Top
öffnet sich die Powershell und schließt auch sofort wieder
Das verstehe ich nicht. Hast Du doch ein "-noexit" in der Kommandozeile. Hast Du doch?

Im Script hast Du aber keinen explizite Exit-Anweisung? Falls doch, nimm sie mal vorübergehend raus. Dann müsste das Fenster stehen bleiben und Du kannst ggf. sehen, wo der Schuh drückt.
emeriks
Lösung emeriks 08.08.2018 um 09:14:08 Uhr
Goto Top
Was passiert, wenn Du einfach nur ausführst:
Call Shell("powershell -noexit", 1)  
Zinedine
Zinedine 08.08.2018 um 09:33:57 Uhr
Goto Top
Sub PS_ausführen()

Dim pathname As String
pathname = ActiveWorkbook.Path
Call Shell("powershell ""C:\Users\ds\Desktop\log_bearbeiten", 1)


End Sub

so hat es funktioniert. Frag mich nicht wieso face-smile
SeaStorm
SeaStorm 08.08.2018 um 09:56:50 Uhr
Goto Top
Zitat von @emeriks:

Bedenke: Es ist VBA!
OOps da war ja was face-smile
emeriks
emeriks 08.08.2018 um 10:35:46 Uhr
Goto Top
Call Shell("powershell ""C:\Users\ds\Desktop\log_bearbeiten", 1)
Ich glaube Dir kein Wort. Diese Zeile ist syntaktisch falsch.
Zinedine
Zinedine 08.08.2018 um 10:47:53 Uhr
Goto Top
hahaha face-smile
was soll ich dir jetzt sagen? Es funktioniert aber trotzdem...
soll ich was ändern?
emeriks
emeriks 08.08.2018 um 10:54:18 Uhr
Goto Top
PS wir das " vor dem Pfad irgnorieren. Aber sobald Du mal einen Pfad mit Leerzeichen drin hast, wird das nicht mehr funktionieren. Ganz einfach.
colinardo
Lösung colinardo 08.08.2018 aktualisiert um 11:41:39 Uhr
Goto Top
Wenn Ihr schon in VBA hantiert dann macht es doch auch direkt damit face-smile.
strFile = "D:\test.txt"  
Set fso = CreateObject("Scripting.FileSystemObject")  
strContentNew = Replace(fso.OpenTextFile(strFile,1).ReadAll(),".",",",1,-1,1)  
fso.OpenTextFile(strFile,2).Write strContentNew
Grüße Uwe
Zinedine
Zinedine 08.08.2018 um 11:45:40 Uhr
Goto Top
das probiere ich auch mal aus...
Zinedine
Zinedine 08.08.2018 um 11:46:46 Uhr
Goto Top
ich weiß bescheid. Vielen Dank für deine Hilfe... bin auf jeden Fall ein großen Schritt weiter face-smile
Zinedine
Zinedine 08.08.2018 um 12:05:44 Uhr
Goto Top
Hi Uwe,

die Variante ist über VBA tatsächlich die bessere...
Vielen Dank an alle...