Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1000to1004
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Textfile Punkt Komma @Christian?

Textfile Punkt Komma @Christian?
22.08.2008 11:24:00
Petra
Hallo Excelianer(innen)
beim Speichern eines Sheets als Textfile wandelt Excel die Kommas in Punkte um.
Wie kann ich nachträglich im Textfile alle Punkte wieder in Komma umwandeln (per VBA)?
Liebe Grüße Petra

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textfile Punkt Komma @Christian?
22.08.2008 12:28:00
ede
Hallo Petra,
leider kann ich das nicht nachvollziehen, beim speichern unter txt-format ist bei mir das Komma auch ein Komma!
was machst du anders bzw. wie?
gruss

AW: Textfile Punkt Komma @Christian?
22.08.2008 12:40:00
ede
ansonsten hier mal ein einfaches beispiel für den export in eine txt-datei (nur Spalte A)
gruss und schoenes WE

Sub Text_Export()
Dim i As Integer
'Dialogfenster Speichern unter
sFile = Application.GetSaveAsFilename _
(fileFilter:="Text Files (*.txt), *.txt")
If sFile  False Then
Open sFile For Output As #1
For i = 1 To Cells(65536, 1).End(xlUp).Row
Print #1, Cells(i, 1).Value
Next i
Close #1
MsgBox sFile
End If
End Sub


Anzeige
AW: Textfile Punkt Komma @Christian?
22.08.2008 12:50:32
Petra
Hallo Ede
danke, dass Du Dich meiner annimmst! Ich speichere lediglich ein Excelsheet als *.prn Datei ab (speichern unter) . Trotz richtiger PC-Einstellung, Dezimaltrenner = Komma, Tausenderpunkt = Punkt, wandelt Excel (je nach PC ?!?!) das Komma in einen Punkt um (in der prn-Datei).
Meine Idee war nun, nachträglich in der Textdatei zu changen: . in ,
Händisch gehts! Aber wie gehts per VBA?
Liebe Grüße Petra

AW: Textfile Punkt Komma @Christian?
22.08.2008 13:16:34
Bertram
Hallo Petra,
hofe ich hab dein Problem richtig verstanden. Ich benutze das für CSV-Files, sollte aber für TXT-Files auch anwendbar sein. Mußt du halt an deine Bedingungen anpassen:

Sub TabToCSV()
'CSV-Datei erstellen mit Dezimalkomma, statt Dezimalpunkt
Dim intFileNumber As Integer
Dim lngRow As Long
Dim vntArray As Variant
Dim strText As String
Reset
intFileNumber = FreeFile
With ActiveWorkbook
.Save
Open .Path & "\" & Left(.Name, Len(.Name) - 4) & ".csv" For Output As #intFileNumber
End With
With ActiveSheet.UsedRange
For lngRow = 1 To .Row + .Rows.Count - 1
vntArray = Range(Cells(lngRow, 1), Cells(lngRow, .Column + .Columns.Count - 1))
vntArray = WorksheetFunction.Transpose(WorksheetFunction.Transpose(vntArray))
strText = Join(vntArray, ";")
Print #intFileNumber, strText
Next
End With
Close #intFileNumber
End Sub


Gruß
Bertram

Anzeige
AW: Textfile Punkt Komma @Christian?
22.08.2008 13:38:00
Petra
Hallo Bertram
klappt leider nicht, da dein Makro auch alle Leerzeichen eliminiert.
Liebe Grüße Petra

AW: Textfile Punkt Komma @Christian?
22.08.2008 13:47:00
Bertram
Hallo Petra,
wo werden Leerzeichen eliminiert? Hab's gerade als TXT getestet. Bei mir wird nix eliminiert.
Gruß
Bertram

AW: Textfile Punkt Komma @Christian?
22.08.2008 13:56:15
Petra
Hi Bertram
bei mir werden alle Leerzeichen(bei mehreren nebeneinander) gelöscht.
Wie hast Du denn das Makro angepasst?
Gruß Petra

AW: Textfile Punkt Komma @Christian?
22.08.2008 14:01:00
Bertram
Hi,
hier gehört's hin:
Hallo,
einfach das CSV durch TXT ersetzt:

Public Sub prcCreateTXT()
'TXT-Datei erstellen mit Dezimalkomma, statt Dezimalpunkt
Dim intFileNumber As Integer
Dim lngRow As Long
Dim vntArray As Variant
Dim strText As String
Reset
intFileNumber = FreeFile
With ActiveWorkbook
.Save
Open .Path & "\" & Left(.Name, Len(.Name) - 4) & ".txt" For Output As #intFileNumber
End With
With ActiveSheet.UsedRange
For lngRow = 1 To .Row + .Rows.Count - 1
vntArray = Range(Cells(lngRow, 1), Cells(lngRow, .Column + .Columns.Count - 1))
vntArray = WorksheetFunction.Transpose(WorksheetFunction.Transpose(vntArray))
strText = Join(vntArray, ";")
Print #intFileNumber, strText
Next
End With
Close #intFileNumber
End Sub


Gruß
Bertram

Anzeige
AW: Textfile Punkt Komma @Christian?
22.08.2008 14:00:20
Bertram
Hallo,
einfach das CSV durch TXT ersetzt:

Public Sub prcCreateTXT()
'TXT-Datei erstellen mit Dezimalkomma, statt Dezimalpunkt
Dim intFileNumber As Integer
Dim lngRow As Long
Dim vntArray As Variant
Dim strText As String
Reset
intFileNumber = FreeFile
With ActiveWorkbook
.Save
Open .Path & "\" & Left(.Name, Len(.Name) - 4) & ".txt" For Output As #intFileNumber
End With
With ActiveSheet.UsedRange
For lngRow = 1 To .Row + .Rows.Count - 1
vntArray = Range(Cells(lngRow, 1), Cells(lngRow, .Column + .Columns.Count - 1))
vntArray = WorksheetFunction.Transpose(WorksheetFunction.Transpose(vntArray))
strText = Join(vntArray, ";")
Print #intFileNumber, strText
Next
End With
Close #intFileNumber
End Sub


Gruß
Bertram

Anzeige
AW: Textfile Punkt Komma @Christian?
22.08.2008 14:08:49
Petra
Hi Bertram
mit der Änderung in txt ist es ja meines Erachtens nicht getan.
Ich benötige keine ; (Semikolons) . Die Textdatei muß das gleiche Format wie das Excelsheet haben (Spaltenabstände etc.)
Hast Du noch was im Köcher?
Lieben Gruß und danke für Deine Mühe
Petra

AW: Textfile Punkt Komma @Christian?
22.08.2008 14:12:09
Bertram
Hallo,
mal back to the roots. Da ich nicht alle deine Threads verfolgt habe: Was willst du denn erreichen?
Gruß
Bertram

AW: Textfile Punkt Komma @Christian?
22.08.2008 14:20:00
Petra
https://www.herber.de/bbs/user/54819.xls
Hi Bertram
hier mal ein Excelsheet, dieses soll als prn Datei oder auch txt gespeichert werden.
in der Textdatei werden aber die Beträge nicht mit Komma sondern mit Punkt angezeigt.
die prn Datei soll also genau so ausschauen wie das Excelsheet.
Gruß Petra

Anzeige
AW: Textfile Punkt Komma @Christian?
22.08.2008 14:26:00
Bertram
Hallo,
mit meiner Variante ist zumindest dein Problem Punkt-Komma erledigt. Mit prn-Dateien kenn ich mich nicht aus, die hab ich noch nicht benutzt. Bei CSV und TXT können Formatierungen und Spaltenbreiten nicht mit übergeben werden.
Muss leider los jetzt. Schau später nochmal rein.
Gruß
Bertram

AW: Textfile Punkt Komma @Christian?
22.08.2008 14:31:00
Petra
Hallo Bertram
nochmals DANKE.
Ich stell nochmal auf offen, in der Hoffnung, irgend jemand hat noch eine schlaue Idee!
Ich stell mir halt vor, dass man in der Text (PRN) Datei bestimmte Buchstaben (hier eben der Punkt) changen kann und das natürlich mit VBA.
Liebe Grüße Petra

Anzeige
AW: Textfile Punkt Komma @Christian?
22.08.2008 17:22:00
Tino
Hallo,
na jetzt möchte ich mal mein Glück versuchen.
Dieser Code liest die Datei in einen String ein,
ersetzt Punkt durch Komma und schreibt diesen zurück.
Achtung!!
Die Datei darf nicht im Excel geöffnet sein z. Bsp. direkt nach dem speichern als *.prn Datei sonst kommt es zu einem Fehler.
Alternativ kannst du beim zurückschreiben eine neue Datei erstellen, in dem du den Namen der Datei änderst.

Sub test()
txt_Bearbeiten ("C:\Test\Petra.prn")
End Sub
Sub txt_Bearbeiten(ByVal sFile As String)
Dim F As Integer
Dim sInhalt As String
'ist die Datei vorhanden?
If Dir$(sFile, vbNormal)  "" Then
F = FreeFile
'Datei in String Einlesen
Open sFile For Binary As #F
sInhalt = Space$(LOF(F))
Get #F, , sInhalt
Close #F
'Im String . durch , ersetzen
sInhalt = Replace(sInhalt, ".", ",")
'String zurückschreiben
Open sFile For Output As #F
Print #F, sInhalt
Close #F
End If
End Sub


Gruß Tino

www.VBA-Excel.de


Anzeige
AW: Textfile Punkt Komma @Christian?
22.08.2008 20:38:00
Petra
Guten Abend Tino
alle ACHTUNG, das klappt vorzüglich!!!
Vielen, vielen DANK
Grüße Petra

AW: Textfile Punkt Komma @Christian?
22.08.2008 17:32:48
fcs
Hallo Petra,
das folgende Makro schreibt die Zellinhalte in eine Textdatei, wobei mit Leerzeichen aufgefüllt wird.

Sub Text_Export()
Dim i As Integer, arrZeichen(), lngSpalten As Long, lngZeileLast As Long
Dim wks As Worksheet, strtext As String, spalte As Integer, sfile As Variant
Set wks = ActiveSheet
'Dialogfenster Speichern unter
sfile = Application.GetSaveAsFilename _
(fileFilter:="Text Files (*.txt), *.txt")
If sfile  False Then
With wks
'Anzahl Spalten
lngSpalten = 39 '.UsedRange.Column + .UsedRange.Columns.Count - 1
'Letzte Datenzeile in Spalte B (2)
lngZeileLast = .Cells(.Rows.Count, 2).End(xlUp).Row ' .UsedRange.Row _
+ .UsedRange.Rows.Count - 1
'Zeichen pro Spalte ermitteln
ReDim arrZeichen(1 To lngSpalten)
'Hilfswerte für Anzahl Zeichen in Spalten berechnen und unterhalb Daten eintragen
For spalte = 1 To lngSpalten
'max. Textlänge in Zellen
.Cells(lngZeileLast + 1, spalte).FormulaArray = _
"=MAX(LEN(R1C" & spalte & ":R" & lngZeileLast & "C" & spalte & "))"
'Spaltenbreite
.Cells(lngZeileLast + 2, spalte).Value = .Columns(spalte).ColumnWidth
Next
'Anzahl Zeichen in Spalte gem. Spaltenbreite oder max. Textlänge in Spalte festlegen
For spalte = 1 To lngSpalten
arrZeichen(spalte) = Application.WorksheetFunction.Max(.Cells(lngZeileLast + 1,  _
spalte), Int(.Cells(lngZeileLast + 2, spalte).Value * 0.8)) + 1
Next
'Tabelleninhalte in Textdatei schreiben
Open sfile For Output As #1
For i = 1 To lngZeileLast
'Zellinhalte in Zeile zusammenfügen inkl. Auffüllen mit Leerzeichen
For spalte = 1 To lngSpalten
strtext = strtext & Space(arrZeichen(spalte) - Len(.Cells(i, spalte).Text)) _
& .Cells(i, spalte).Text
Next
Print #1, strtext
strtext = ""
Next i
Close #1
MsgBox sfile
'Hilfszeilen wieder löschen
.Range(.Rows(lngZeileLast + 1), .Rows(lngZeileLast + 2)).ClearContents
End With
End If
End Sub


Das folgende Makro ersetzt in der gewählten PRN-Datei die Punkte durch Komma.


Sub PRN_bereinigen()
Dim sfile As Variant, lngI As Long, arrDaten() As String, intFF As Integer, strtext As String
sfile = Application.GetOpenFilename(Filefilter:="PRN-Dateien(*.PRN),*.PRN", _
Title:="PRN-Datei öffnen")
If sfile  False Then
intFF = FreeFile()
Open sfile For Input As #intFF
Do Until EOF(intFF)
lngI = lngI + 1
ReDim Preserve arrDaten(1 To lngI)
Line Input #intFF, strtext
arrDaten(lngI) = Replace(strtext, ".", ",")
Loop
Close #intFF
Open sfile For Output As #intFF
For lngI = 1 To lngI
Print #intFF, arrDaten(lngI)
Next
Close #intFF
End If
End Sub


Gruß
Franz

Anzeige
AW: Textfile Punkt Komma @Christian?
22.08.2008 20:39:37
Petra
Guten Abend Franz
auch Deine Lösung ist Spitze!
Danke und noch einen schönen Abend
Grüße Petra

AW: Textfile Punkt Komma @Christian?
22.08.2008 20:41:25
Petra
Guten Abend Franz
auch Deine Lösung ist Spitze, nur der Code ist eine bischen länger.
Vielen Dank und einen schönen Abend
Petra

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige