Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

  • Autor

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

Wenn das ein einmaliger Fall ist, dann öffne die csv mit einem editor und mach suchen ersetzen mit der Option alles ersetzen!

  • Autor

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

Also mir würde da sofort die idee kommen, das du den text in der txt datei wieder ausliest, und dann mit hilfe der replace funktion die vorhandenen kommas durch nichts oder leerzeichen ersetzt.

  • Autor

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

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

  • Autor

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

    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.

  • Autor

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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.