Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1072to1076
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

ASCII Datei aus Excel schreiben

ASCII Datei aus Excel schreiben
06.05.2009 18:36:36
Marc
Hallo
Möchte laufend ein Tabellenblatt als ASCII Datei speichern.
Habe dazu folgendes Makro geschrieben:

Sub Start()
Dim sfile, spath As String
Dim ID As Integer
spath = "C:\"
sfile = Format(Now, "yyyymmddhhmmss") & "_Batch_PO.txt"
Worksheets("Batch_PO").Activate
ActiveWorkbook.SaveAs spath & sfile, FileFormat:=xlUnicodeText, CreateBackup:=False
ActiveSheet.Name = "Batch_PO"
Worksheets("Allgemein").Activate
End Sub


Nun zeigen sich zwei Probleme:
1. Einige Zellen beinhalten ein Komma. Diese Zeilen werden in der Text Datei mit " am Anfang und am Ende versehen. Das will ich nicht, benötige aber unbedingt das Komma. Komischerweise passiert dies nicht, wenn ich die Textdatei von Hand über "Speichern unter" erzeuge.
2. Zwei hintereinanderliegende Zellen werden in der Textdatei durch einen Tab-Abstand getrennt, sollten aber nahtlos aneinanderhängen.
Ausserdem würde ich gerne nur eine Kopie der Datei speichern. Mit dem Makro wird jedoch stets die Datei selber umbenannt.
Hat jemand eine Idee?
Gruss und Danke!
Marc

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ASCII Datei aus Excel schreiben
06.05.2009 20:48:27
fcs
Hallo Marc,
hier Anpassungen. Dabei wird von der aktiven Datei eine temporäre Kopie angelegt. Die Textdatei wird dann aus der Kopie erzeugt.
Um die Tabs in der Textdatei zu verhindern müssen vor dem Speichern die Inhalte der Zellen in einer Zeile alle in die Spalte A geschrieben werden. Hierfür hab ich eine entsprechende For-Next-Schleife eingebaut.
Gruß
Franz

Sub Start()
Dim sfile As String, sfileXLS As String, spath As String, wbKopie As Workbook
Dim Zeile As Long, Spalte As Long, strText As String
Dim ID As Integer
spath = "C:\Lokale Daten\Test\"                 'Pfad ggf. anpassen!!!!
sfile = Format(Now, "yyyymmddhhmmss") & "_Batch_PO.txt"
'Kopie der Exceldatei speichern
sfileXLS = spath & Format(Now, "yyyymmddhhmmss") & "_Batch_PO.xls"
ActiveWorkbook.SaveCopyAs Filename:=sfileXLS
'Kopie öffnen
Workbooks.Open Filename:=sfileXLS
Set wbKopie = ActiveWorkbook
'Blatt Batch_PO als Text speichern
Worksheets("Batch_PO").Activate
' Alle Zeileninhalte in Spalte A eintragen mit Leerzeichen getrennt
With ActiveSheet
For Zeile = 1 To .Cells.SpecialCells(xlCellTypeLastCell).Row
strText = ""
For Spalte = 1 To .Cells(Zeile, .Columns.Count).End(xlToLeft).Column
If Not IsEmpty(.Cells(Zeile, Spalte)) Then
If strText = "" Then
strText = .Cells(Zeile, Spalte).Text
Else
strText = strText & " " & .Cells(Zeile, Spalte).Text
End If
End If
Next
.Rows(Zeile).Clear
With .Cells(Zeile, 1)
.NumberFormat = "@"
.Value = strText
End With
Next
End With
'Blatt als Text speichern, Tabs als Spalten-Trennzeichen
ActiveWorkbook.SaveAs spath & sfile, FileFormat:=xlUnicodeText, CreateBackup:=False, _
Local:=True
'Blatt als Text speichern, Druckausgabe mit Leerzeichen als Spaltenausgleich
'    ActiveWorkbook.SaveAs spath & sfile, FileFormat:=xlTextPrinter, CreateBackup:=False, _
Local:=True
wbKopie.Close savechanges:=False
'Kopie der Exceldatei wieder löschen
VBA.Kill sfileXLS
Worksheets("Allgemein").Activate
End Sub


Anzeige
AW: ASCII Datei aus Excel schreiben
08.05.2009 14:36:19
Marc
Hallo Franz
Super! Herzlichen Dank!
Bin noch nicht dazu gekommen, das Programm im Detail anzuschauen und anzupassen.
Gruss & Danke
Marc

172 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige