Zum Inhalt springen

Textstellen aus Textdatei automatisch löschen


WolleXPC

Empfohlene Beiträge

Ich habe ein Makro geschrieben, welches aus einer Excel CSV Datei eine Textdatei macht. In der Textdatei werden aber die vorherigen Zellen durch "," (Kommas) getrennt.

Ich möchte das dem Makro eine Funktion hinzugefügt wird, dass alle "," aus der Textdatei gelöscht werden.

Man kann dies in der Textdatei durch manuelles ersetzen machen, doch ich möchte es automatisch durchführen lassen. Kenne leider den Code für solch eine Funktion nicht.

Ich hoffe ihr könnt mir dabei helfen.

Vielen Dank

mfg Wolle

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe ein Makro geschrieben, welches aus einer Excel CSV Datei eine Textdatei macht.

CSV-Datei ist eine Textdatei, nur eben mit Endung CSV.

CSV-Datei - Wikipedia

wie sieht dein makro bisher aus? nützt du Funktionen von Excel wie "Speichern unter -> als txt-Datei" oder ähnlich oder hast du die Inhalte wirklich in die Textdatei rausgeschrieben?

gruss

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mein Makro sieht bis jetzt so aus.

Makro 3 wird durch nen Button ausgelöst sowie Makro4 durch einen eigenen Button.

In Makro 3 soll die lösch Funktion der Kommas eingebaut werden.

Sub Makro3()

'

' Makro3 Makro

Workbooks.Open Filename:= _

"C:\Dokumente und Einstellungen\kröll\Desktop\ARAP\ARAP-V-2004.xls"

Windows("ARAP Stala Schnittstelle.xls").Activate

Sheets("ARAP Stala Schnittstelle").Select

ChDir "C:\Dokumente und Einstellungen\kröll\Desktop\Arap Test"

ActiveWorkbook.SaveAs Filename:= _

"C:\Dokumente und Einstellungen\kröll\Desktop\Arap Test\ARAP Stala Schnittstelle.csv" _

, FileFormat:=xlCSV, CreateBackup:=False

Sheets("Tabelle1").Select

Windows("ARAP-V-2004.xls").Activate

ActiveWindow.Close

ChDir "C:\Dokumente und Einstellungen\kröll\Desktop\ARAP"

ActiveWorkbook.SaveAs Filename:= _

"C:\Dokumente und Einstellungen\kröll\Desktop\ARAP\ARAP Stala Schnittstelle.xls" _

, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _

ReadOnlyRecommended:=False, CreateBackup:=False

Set fso = CreateObject("Scripting.FileSystemObject")

Set f1 = fso.GetFile("C:\Dokumente und Einstellungen\kröll\Desktop\Arap Test\Arap Stala Schnittstelle.csv")

f1.Move ("C:\Dokumente und Einstellungen\kröll\Desktop\Arap Test\Arap2.txt")

MsgBox "Schritt 1 wurde durchgeführt"

End Sub

Sub Makro4()

Set fso = CreateObject("Scripting.FileSystemObject")

Set f1 = fso.GetFile("C:\Dokumente und Einstellungen\kröll\Desktop\Arap Test\arap2.txt")

f1.Delete

MsgBox "Die Datei wurde gelöscht!"

End Sub

Link zu diesem Kommentar
Auf anderen Seiten teilen

ok, ich mehme mal an, du hast ein Makro aufgezeichnen und dieses bearbeitet.

Vorschlag:

Deine Texte einzeln in einer Schleife aus Excel auslesen und selbst in die TXT schreiben.

wie du das machst, findest du bestimmt auf den folgenden Seiten:

Schmitti's Page - Visual Basic, Excel, VBA, Win95/NT/2000, Freeware uvm.

ActiveVB - Speichern und Einlesen

ActiveVB - Umgang mit Textdateien

gruss

Link zu diesem Kommentar
Auf anderen Seiten teilen

Leider kann ich kein VB, kann gerade ma nen bischen mit WSH.

Das mit dem auslesen in Excel wird nicht klappen, da die Zahlen aus der .txt (vorher CSV) schon die richtige Formatierung hat. Die Zahlen sollen in folgender Formatierung in der Textdatei stehen: Siehe Bild

Und die Kommas sollen durch eine Funktion gelöscht werden. Die Leerzeichen sollen beibehalten werden.

Ich würde mich sehr freuen wenn mir jemand in mein Makro die Funktion einbauen könnte.

Vielen Dank

Wolle

post-33604-14430447489028_thumb.jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hab folgendes zur Replace Funktion gefunde:

Dim MeineZf

MeineZf = Replace("XXpXXPXXp", "p", "Y") ' Ein am Anfang der Zeichenfolge beginnender Binärvergleich. Gibt "XXYXXPXXY" zurück.

MeineZf = Replace("XXpXXPXXp", "p", "Y", 3, -1, 1)

' Ein an Position 3 der Zeichenfolge beginnender Textvergleich. Gibt "YXXYXXY" zurück.

Weiß aber nicht wie ich das in mein Makro einbauen soll. Kenne mich damit noch zu wenig aus.

Könnte mir jemand den gefallen tun und mir die Funktion in mein Makro einzubauen.

Vielen Dank

Gruß Wolle

Link zu diesem Kommentar
Auf anderen Seiten teilen

normalerweise werden hier keine fertigen lösungen vorgegeben,

aber ausnahmsweise mach ich das.

unter umständen musst du noch kleine anpassungen vornehmen.



Sub SaveAsTXT()

Dim ZielPfad As String, QuelPfad As String
Dim nCols As Integer, nLines As Integer, Z As String, xZ As String, i As Integer, j As Integer

QuelPfad = "C:\test.xls"
ZielPfad = "C:\test.csv"
Workbooks.Open Filename:=QuelPfad

'Anzahl Spalten und Zeilen ermitteln
nCols = ActiveWorkbook.Sheets(1).UsedRange.Columns.Count
nLines = ActiveWorkbook.Sheets(1).UsedRange.Rows.Count

'ZielDatei zum Beschreiben öffnen
Open ZielPfad For Output As #1 Len = 1000
For i = 1 To nLines 'fuer jede Zeile
Z = ""
For j = 1 To nCols - 1 'fuer jede Spalte ausser der letzten
Z = Z & ActiveWorkbook.Sheets(1).Cells(i, j).Text 'inhalt der zelle einlesen
Z = Z & vbTab 'tab hinzufuegen
Next
Z = Z & ActiveWorkbook.Sheets(1).Cells(i, nCols).Text 'letzte spalte einer zeile
Print #1, Z 'in die datei zeile rauschreiben
Next
Close #1
ActiveWorkbook.Close
End Sub

[/PHP]

gruss

Link zu diesem Kommentar
Auf anderen Seiten teilen

Vielen Dank für deine Mühe russkij, aber leider werden noch die Kommas mit in die Textdatei geschrieben und die Formatierung ist komplett falsch.

Kann mir nicht einer netterweise, nen kleines Script mit der der Replace Funktion basteln, sodass ich nur noch den Pfad angeben muss und das Script in mein Makro einbauen muss.

Vielen Dank

Link zu diesem Kommentar
Auf anderen Seiten teilen

    Dim quelle As String

    Dim ziel As String


    quelle = "E:\Test.txt"

    ziel = "E:\Test2.txt"



    Set fs = CreateObject("Scripting.FileSystemObject")

    Set q = fs.OpenTextFile(quelle)

    Set z = fs.CreateTextFile(ziel, True)


    Do Until q.AtEndOfStream

        z.WriteLine (Replace(q.ReadLine, ",", ""))

    Loop


    z.Close

    q.Close


    fs.DeleteFile quelle

so das wäre dann mal das skript mit der replace funktion. dieses erstellt aber bisher noch eine eigene datei in dem dann der text ohne die kommas gespeichert wird.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Vielen vielen Dank, habs gerade ausprobiert und es funktioniert.

Hab aber noch eine Frage und zwar wenn ich das Script in der Konsole ausführe oder per Doppelklick auf die Datei dann kommt die Fehlermeldung das in der Zeile wo die Variablen deklariert werden "Dim quelle As String" ein Anweisungsende erwartet wird.

Wenn ich aber das Script in meinem Makro einbaue, kommt keine Fehlermeldung und es funktioniert.

Gruß Wolle

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...