Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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

Anzeige

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
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

ASCII Datei aus Excel speichern und erstellen


Schritt-für-Schritt-Anleitung

Um eine ASCII Datei aus Excel zu erstellen, kannst Du ein VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke auf Einfügen und wähle Modul.

  3. Kopiere den folgenden Code in das Modul:

    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
       spath = "C:\Lokale Daten\Test\" ' Pfad anpassen
       sfile = Format(Now, "yyyymmddhhmmss") & "_Batch_PO.txt"
       sfileXLS = spath & Format(Now, "yyyymmddhhmmss") & "_Batch_PO.xls"
    
       ' Kopie der Exceldatei speichern
       ActiveWorkbook.SaveCopyAs Filename:=sfileXLS
       Workbooks.Open Filename:=sfileXLS
       Set wbKopie = ActiveWorkbook
    
       ' Blatt als Text speichern
       Worksheets("Batch_PO").Activate
       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
               .Cells(Zeile, 1).Value = strText
           Next
       End With
    
       ' Speichern als ASCII Datei
       ActiveWorkbook.SaveAs spath & sfile, FileFormat:=xlUnicodeText, CreateBackup:=False
       wbKopie.Close savechanges:=False
       VBA.Kill sfileXLS ' Kopie löschen
    End Sub
  4. Passe den Pfad in der Variable spath an, um den Speicherort für die ASCII Datei festzulegen.

  5. Führe das Makro aus, um die ASCII Datei zu erstellen.


Häufige Fehler und Lösungen

  • Problem: Zellen mit Kommas werden in der ASCII Datei in Anführungszeichen gesetzt.

    • Lösung: Stelle sicher, dass Du die Inhalte in einer Zeile zusammenfasst, wie im obigen Code.
  • Problem: Zellen werden durch Tabulatoren getrennt.

    • Lösung: Ersetze die Trennung durch ein Leerzeichen in der Schleife, um nahtlose Ausgaben zu erhalten.
  • Problem: Die Datei wird immer umbenannt.

    • Lösung: Speichere eine Kopie der Datei und lösche sie nach dem Speichern der ASCII Datei.

Alternative Methoden

Wenn Du eine ASCII Datei in Excel erstellen möchtest, gibt es auch andere Methoden:

  1. Speichern unter:

    • Wähle Datei > Speichern unter und wähle dann Text (Tabstopp-getrennt) (*.txt) aus. Dies ist eine manuelle Methode, um eine ASCII Datei zu erstellen.
  2. Excel als ASCII speichern:

    • Verwende die Funktion Speichern unter und wähle das Format Unicode Text (*.txt).

Praktische Beispiele

Hier sind einige Beispiele, wie Du ASCII Dateien in Excel verwenden kannst:

  • Beispiel 1: Speichern von Verkaufsdaten als .txt Datei für den Import in ein anderes System.
  • Beispiel 2: Umwandeln von Excel-Daten in eine ASCII-Datei zur Nutzung in Programmen, die keine Excel-Daten lesen können.

Tipps für Profis

  • VBA ASCII Code: Nutze den vbTab und vbCrLf für präzise Formatierungen, wenn Du ASCII-Textdateien erstellst.
  • Automatisierung: Plane das Makro über Task Scheduler, um regelmäßig ASCII Dateien zu erstellen.
  • Datenvalidierung: Überprüfe die Daten vor dem Speichern, um sicherzustellen, dass keine unerwünschten Zeichen in die ASCII Datei gelangen.

FAQ: Häufige Fragen

1. Was ist eine .asc-Datei?
Eine .asc-Datei ist eine ASCII-Datei, die oft für den Austausch von Daten zwischen verschiedenen Anwendungen verwendet wird.

2. Wie kann ich eine ASCII Datei in Excel öffnen?
Du kannst eine ASCII Datei in Excel öffnen, indem Du Datei > Öffnen wählst und den Dateityp auf Textdateien (*.txt; *.csv) änderst.

3. Wie kann ich eine ASCII-Datei umwandeln in PDF?
Du kannst eine ASCII-Datei in Excel importieren und dann als PDF speichern, indem Du Datei > Speichern unter wählst und das PDF-Format auswählst.

4. Was ist der Unterschied zwischen ASCII und Unicode?
ASCII verwendet 7 oder 8 Bits zur Kodierung von Zeichen, während Unicode eine breitere Palette von Zeichen unterstützt und mehr Bits benötigt.

5. Wie kann ich eine ASCII Textdatei mit VBA lesen?
Du kannst den Open Befehl in VBA verwenden, um eine ASCII-Datei zu lesen und die Inhalte in Excel zu importieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige