WolleXPC Geschrieben 9. Januar 2007 Teilen Geschrieben 9. Januar 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
russkij Geschrieben 9. Januar 2007 Teilen Geschrieben 9. Januar 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
WolleXPC Geschrieben 9. Januar 2007 Autor Teilen Geschrieben 9. Januar 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jegor Geschrieben 9. Januar 2007 Teilen Geschrieben 9. Januar 2007 Wenn das ein einmaliger Fall ist, dann öffne die csv mit einem editor und mach suchen ersetzen mit der Option alles ersetzen! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
russkij Geschrieben 9. Januar 2007 Teilen Geschrieben 9. Januar 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
WolleXPC Geschrieben 9. Januar 2007 Autor Teilen Geschrieben 9. Januar 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Dragon8 Geschrieben 9. Januar 2007 Teilen Geschrieben 9. Januar 2007 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
WolleXPC Geschrieben 10. Januar 2007 Autor Teilen Geschrieben 10. Januar 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
russkij Geschrieben 10. Januar 2007 Teilen Geschrieben 10. Januar 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
WolleXPC Geschrieben 10. Januar 2007 Autor Teilen Geschrieben 10. Januar 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Dragon8 Geschrieben 10. Januar 2007 Teilen Geschrieben 10. Januar 2007 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
WolleXPC Geschrieben 12. Januar 2007 Autor Teilen Geschrieben 12. Januar 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.