Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
716to720
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
716to720
716to720
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Spalten exportieren als ASCII *.txt

Spalten exportieren als ASCII *.txt
07.01.2006 14:50:36
Viktor
Hallo!
Ist es möglich durch einen klick auf einen VBA Button einen Bereich (2Spalten, sagen wir mal z.B. B4:C28) in eine TXT Datei zu exportieren, die beim Klick auch gleich erstellt und abgespeichert wird? Wenn ja - hat jemand dazu ein Codebeispiel?
Vielen Dank schonmal im Voraus!
Viktor

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten exportieren als ASCII *.txt
07.01.2006 15:15:33
volker
hallo viktor,
einfach einen bereich zu speichern weiß ich nicht ob oder wie das geht. aber du kannst ja ein neues arbeitsblatt erstellen. zb so:

Sub save_as_text()
Range("B4:C28").Copy
Set NewSheet = Sheets.Add(Type:=xlWorksheet)
NewSheet.Paste
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
"C:\Dokumente und Einstellungen\volker\Eigene Dateien\Mappe2.txt", FileFormat _
:=xlText, CreateBackup:=False
NewSheet.Delete
Application.DisplayAlerts = True
End Sub

hoffe du kannst es so verwenden
gruß volker.
AW: Spalten exportieren als ASCII *.txt
07.01.2006 15:25:45
Viktor
Hi Volker,
Ja, das passt schon sehr gut, ich danke Dir vielmals! Könnte man das noch insofern ändern als dass der Speicherort ausgewählt werden kann (jetzt ist das ja im Ordner Eigene Dateien festgelegt)?
Viktor
Anzeige
AW: Spalten exportieren als ASCII *.txt
07.01.2006 15:21:18
Cardexperte
Hallo, ist eigentlich ohne Probleme möglich: hier mal ein Beispiel, aber da werden für die Asciiausgabe noch bestimmte forderungen gestellt(spaltenweise):

Sub aufbereiten()
Dim Dateiname As String, DateiNr As Integer
Dat = InputBox("Bitte Dateinamen angeben (ohne Extension)")
If Dat = "" Or Len(Dat) > 8 Then MsgBox ("es wird keine Datei angelegt!"), vbOKOnly: Exit Sub
Dateiname = Dat & ".pol"
anzahl = Sheets("Geograflin").Range("j1").Value
DateiNr = FreeFile
Open Dateiname For Output As DateiNr
For i = 1 To anzahl
wert1 = Cells(i, 2).Value
l = Len(wert1)
Do While l < 13
wert1 = wert1 & " "
l = Len(wert1)
Loop
wert2 = Cells(i, 3).Value
l = Len(wert2)
If wert2 = "R" Then
wert2 = Cells(i, 5).Value
l = Len(wert2)
Do While l < 13
wert2 = wert2 & " "
l = Len(wert2)
Loop
Else
Do While l < 13
wert2 = wert2 & " "
l = Len(wert2)
Loop
End If
code = Cells(i, 6).Value
Print #DateiNr, wert1 & code & "   1   0" & Chr(10) & wert2 & code & "   1   0" & Chr(10)
Next i
Close DateiNr
End Sub

schau es dir, einziger Nachteil bei schon vorhandener Datei wird diese ohne Rücksicht überschrieben, wenn du mit diesem Beispiel nicht klar kommst dann schreib ruhig nochmal und insbesondere, welche Zewllen du in Excel ausgeben wills, vielleicht ein kleines Beispiel dazu.
Gruss WS
Anzeige
AW: Spalten exportieren als ASCII *.txt
07.01.2006 15:37:05
Viktor
Hallo cardexperte,
hier habe ich mal ein Beispiel: https://www.herber.de/bbs/user/29813.xls
Es sollen eigentlich nur koordinatenlisten, also Zahlen die auch negativ sein können, exportiert werden. Ich denke da sollte es keine Probleme mit ASCII Restriktionen geben. Wenn ich dein Makro starte kommt allerdings immer falscher indexbereich... Könntest du evtl. die esentiellen Variablen im Makro kommentieren, damit ich weis was ich ändern kann? (und wo), wenn es dir nichts ausmacht... Herzlichen Dank!
Viktor
AW: Spalten exportieren als ASCII *.txt
07.01.2006 15:34:32
volker
hallo viktor,
du hast natürlich recht , so wäre es besser:

Sub save_as_text()
Do
fname = Application.GetSaveAsFilename
Loop Until fname <> False
Range("B4:C28").Copy
Set NewSheet = Sheets.Add(Type:=xlWorksheet)
NewSheet.Paste
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
fname, FileFormat _
:=xlText, CreateBackup:=False
NewSheet.Delete
Application.DisplayAlerts = True
End Sub

habe die ersten beiden zeilen so eingebaut ohne es zu testen probiere mal ob es geht.
gruß volker.
Anzeige
AW: Spalten exportieren als ASCII *.txt
07.01.2006 15:45:54
Viktor
Danke Volker,
Ich habe es versucht, aber da tritt jetzt das Problem auf, daß er dann die ganze arbeitsmappe speichert - nochdazu muss man angeben daß es unter *.txt gespeichert wird. Zu guter Letzt ist meine gesamte arbeitsmappe als txt gespeichert, aber ich möchte daß die unangetastet bleibt, und nur daß die spalte (oder das tabellenblatt, das ja in deinem beisppiel erstellt wird) exportiert (=gespeichert) wird.
Viktor
AW: Spalten exportieren als ASCII *.txt
07.01.2006 16:03:10
volker
hallo viktor,
habe dir mal einen filefilter eingebaut damit die extension .txt schon da steht.
den ander fehler habe ich nicht nachvollziehen können.
die gesamte arbeitsmappe speichert er im txt format eigentlich nicht.
es war noch ein fehler drin der auftritt wenn du GetSaveAsFilename abbrichst , habe ich nun geändert.
müßte eigentlich so gehen.

Sub save_as_text()
fname = Application.GetSaveAsFilename(fileFilter:="Text Files (*.txt), *.txt")
If fname = False Then Exit Sub
Range("B4:C28").Copy
Set NewSheet = Sheets.Add(Type:=xlWorksheet)
NewSheet.Paste
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
fname, FileFormat _
:=xlText, CreateBackup:=False
NewSheet.Delete
Application.DisplayAlerts = True
End Sub

gruß volker.
Anzeige
AW: Spalten exportieren als ASCII *.txt
07.01.2006 16:14:05
Viktor
Danke nochmals, Volker:
Also folgendes passiert: Nachdem ich den Text einmal mit deinem Makro exportiert habe, wird die gesamte arbeitsmappe in ein txt format gebracht (wie im bild:)
Userbild
Wenn ich nun etwas speichern will, geht das natürlich nicht mehr. Ich müsste dann wieder die gesamte Mappe als`speichern unter - xls speichern.
Kann das eventuell an verschiedenen Versionen von Excel liegen?
AW: Spalten exportieren als ASCII *.txt
07.01.2006 16:32:14
volker
hallo viktor,
du hast recht es steht immer oben der letzte dateiname , das hat aber nichts damit zu tun daß er den bereich trotzdem als textdatei speichert. habe es jetzt zwar nicht probiert glaube aber nicht daß er die gesamte arbeitsmappe speichert.
nehme einfach mal an daß der getsaveasfilename das macht deswegen lassen wir ihn einfach wieder weg.

Sub save_as_text()
fname = InputBox("Dateinamen ohne .TXT eingeben")
If fname = "" Then Exit Sub
Range("B4:C28").Copy
Set NewSheet = Sheets.Add(Type:=xlWorksheet)
NewSheet.Paste
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
fname, FileFormat _
:=xlText, CreateBackup:=False
NewSheet.Delete
Application.DisplayAlerts = True
End Sub

Anzeige
AW: Spalten exportieren als ASCII *.txt
07.01.2006 16:33:06
volker
gruß volker.
AW: Spalten exportieren als ASCII *.txt
07.01.2006 16:36:31
volker
Hallo,
habe natürlich .TxT vergessen
alsso so muss es sein:

Sub save_as_text()
fname = InputBox("Dateinamen ohne .TXT eingeben")
If fname = "" Then Exit Sub
fname = fname & ".TXT"
Range("B4:C28").Copy
Set NewSheet = Sheets.Add(Type:=xlWorksheet)
NewSheet.Paste
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
fname, FileFormat _
:=xlText, CreateBackup:=False
NewSheet.Delete
Application.DisplayAlerts = True
End Sub

gruß Volker.
AW: Spalten exportieren als ASCII *.txt
07.01.2006 17:03:22
volker
hallo viktor,
tut mir leid geht auch nicht.
bzw. es geht so nur steht halt immer der name der letzten gespeicherten datei oben aber du speicherst so nicht die gesamte arbeitsmappe . allso wenn du dann ohne zu speichern rausgehst gibt es die excel mappe noch so wie vorher.
gruß volker.
Anzeige
AW: Spalten exportieren als ASCII *.txt
07.01.2006 17:09:09
Cardexperte
Hallo, warum bastelt ihr da so lange rum, habe doch die Lösung euch mitgeteilt!
War nur zu faul das Makro noch umzuschreiben, dies funktioniert hervorragend und erstellt (außerhalb von Excel, wenn man so will auf der DOS-Ebene eine hier pol Datei, ist aber eine reine ASCIIdatei ohne jegliche zusätze!!!
schick doch ein kleines Beispiel und ich passe dir mein Makro an, dauert doch nur ein paar Minuten!
Gruss WS
AW: Spalten exportieren als ASCII *.txt
07.01.2006 17:16:41
volker
hallo WS
habe halt gedacht es ist einfacher den standard saveas zu benutzen.
weil ich ja dann nur ein paar befehle habe blatt erstellen reinkopieren speichern.
was meiner meinung auch so geht .
das einzigste was jetzt störend ist ist der letzte dateiname in der überschrift.
gruß volker.
Anzeige
Noch ne Variante....
07.01.2006 17:15:13
Ramses
Hallo
Markiere den Bereich den du exportieren willst, und löse das Makro aus
Option Explicit

Sub export_selected_Range_and_save_as_TXT()
    '(C) by Ramses
    'Exportiert einen ausgewählten Bereich in ein zu definierendes Textfile
    Dim i As Integer, n As Integer, maxExpCol As Integer, QE As Integer
    Dim StartRow As Integer, StartCol As Integer, selRow As Integer, selCol As Integer
    Dim myC As Range
    Dim expFolder As String, expFileName As String
    Dim myDiv As String, tmpExpText As String, expText As String
    'Maximal zu exportierende Spalten
    'Dieser Parameter ist anzupassen, um unterschiedliche Bereich
    'in ein einheitliches Exportformat zu bringen
    maxExpCol = 25
    'Default Pfad incl abschliessendem Backslash
    expFolder = "C:\Temp\"
    'Standard Name für TextExportFile
    expFileName = "Koordinaten.txt"
    '************************************************
    'Ab hier keine Änderungen mehr vornehmen
    'Trennzeichen für das Textfile
    myDiv = ";"
    If Selection.Columns.Count > maxExpCol Then
        MsgBox "Maximal zu exportierende Spaltenzahl überschritten"
        Exit Sub
    End If
    'Starbereich festlegen
    StartRow = Selection.Range("A1").Row
    StartCol = Selection.Range("A1").Column
    'Scheifenparameter initialisieren
    selRow = Selection.Rows.Count
    selCol = Selection.Columns.Count
    For i = StartRow To StartRow + selRow
        tmpExpText = ""
        For n = StartCol To StartCol + selCol
            tmpExpText = tmpExpText & Cells(i, n).Text & myDiv
        Next n
        'Exportfile auf erforderliche Länge bringen
        If Len(tmpExpText) < maxExpCol Then
            For n = Len(tmpExpText) To maxExpCol
                tmpExpText = tmpExpText & myDiv
            Next n
        End If
        expText = expText & tmpExpText & vbCrLf
    Next i
    'Exportfile und Speicherpfad kontrollieren
    expFileName = Application.GetSaveAsFilename(InitialFileName:=expFolder & expFileName, _
        fileFilter:="Text Files (*.txt), *.txt)", Title:="Exportpfad definieren")
    If Dir(expFileName) <> "" Then
        QE = MsgBox("Sollen die Daten an die existierende Datei angehängt werden," & vbCrLf & _
            "oder soll die Datei überschrieben werden ?" & vbCrLf & vbCrLf & _
            "JA = Anhängen" & vbCrLf & "NEIN = Datei überschreiben" & vbCrLf & "ABBRECHEN = Abbrechen", _
            vbYesNoCancel + vbCritical + vbDefaultButton1, "Exportverhalten definieren")
        If QE = vbCancel Then Exit Sub
        If QE = vbYes Then
            'Daten anhängen
            Open expFileName For Append As #1
            Print #1, expText
            Close #1
        Else
            'Daten überschreiben
            Open expFileName For Output As #1
            Print #1, expText
            Close #1
        End If
    Else
        'Daten erstmalig schreiben
        Open expFileName For Output As #1
        Print #1, expText
        Close #1
    End If
    MsgBox "Daten exportiert"
End Sub

Der Export ist in diesem Beispiel auf 25 Spalten begrenzt, aber das sollte reichen ;-)
Gruss Rainer
Anzeige
AW: Noch ne Variante....
07.01.2006 17:35:15
Viktor
Hallo Volker,Cardexperte und Ramses!
Vielen Dank für die Hilfe, ich denke jetzt habe ich, was ich brauche. Die Version von Volker hat mir recht gut gefallen, weil sie einfach mit ein paar standardbefehlen funktionieren sollte, ich habe sie noch angepasst, aber leider habe ich es nicht geschafft, daß die originaldatei unangetastet bleibt.
@Cardexperte: Ich habe es einfach nicht geschafft, den code so zu modifizieren, daß es bei mir läuft (wie in dem ersten hochgeladenen Beispiel kommt die Fehlermeldung, daß der Indexbereich falsch definiert ist), aber danke dir trotzdem!
Und Ramses, danke Dir, das ist sehr gut, denn ich kann sogar den Exportbereich vorher auswählen und die Koordinaten dann darüberhinaus sogar an eine bestehende Datei anhängen. Mit dem 25 Spaltenlimit komme ich bestens aus, normalerweise brauche ich sowieso nur 2 für die x- und y- Koordinate. Jetzt muss ich nur noch ein Trennzeichen finden das mir der Theodolit erkennt und alles ist wunderbar! Danke vielmals!!!
Viktor
Anzeige
AW: Noch ne Variante....
07.01.2006 17:58:47
volker
hallo viktor,
freut mich daß dir mein minimalcode gefallen hat.
aber noch mals: du änderst keine xls datei ab es wird nur das eine sheet gespeichert.
was mir aber eben beim geschirrspülen eingefallen ist:
du kannst vor dem saveas natürlich mit altername = ActiveWorkbook.Name dir den jetzigen nawen wegretten und dann halt nach dem saveas (textdatei) nochmals einen saveas (altedatei) machen (brauchst dann natürlich noch den richtigen pfad)
gruß volker.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige