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

Markierter Bereich als Text Datei speichern

Markierter Bereich als Text Datei speichern
Roland
Hallo,
Ich brauche von einem Excelblatt nur einen ausgewählten Bereich an Daten. Diese Daten müssen in einen bestimmten Format als Text Datei bespeichert werden, damit sie ein anderes Programm wieder lesen kann.
Am besten wäre es, wenn ich die Daten einfach markieren könnte und dann über eine Tastenkombination in ein TXT-Format speichern könnte.
Das Beispiel zeigt die Exceldatei als Quelle und die entsprechende TXT-Datei. Wichtig wäre noch, dass das Zahlenformat von xx,xx nach xx.xx geändert wird.
Kann mir jemand helfen?
Besten Dank im voraus.
Roland
Quelldatei: https://www.herber.de/bbs/user/63994.xls
Zieldatei: https://www.herber.de/bbs/user/63995.txt

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Selection-Ausgabe in Textfile
21.08.2009 23:44:54
Erich
Hi Roland,
hier zwei Varianten, die vielleicht schon ausreichen:

Option Explicit
Sub SelInText1()
Dim rngZ As Range, arrV, strE As String, kk As Integer
Const strDel As String = " "                    ' Trennzeichen
For Each rngZ In Selection.Rows
arrV = Application.Transpose(Application.Transpose(rngZ.Value))
If strE  "" Then strE = strE & vbCrLf
strE = strE & Join(arrV, strDel)
Next rngZ
strE = Replace(strE, ",", ".")
kk = FreeFile(1)
Open "c:\temp\SelInText.txt" For Output As kk   ' Ausgabedatei - anpassen
Print #kk, strE
Close kk
End Sub
Sub SelInText2()
Dim rngZ As Range, arrV, strE As String, kk As Integer, ss As Long
Const strDel As String = " "                    ' Trennzeichen
For Each rngZ In Selection.Rows
arrV = Application.Transpose(Application.Transpose(rngZ.Value))
For ss = 1 To UBound(arrV)
arrV(ss) = Replace(arrV(ss), ",", ".")
Next ss
If strE  "" Then strE = strE & vbCrLf
strE = strE & Join(arrV, strDel)
Next rngZ
kk = FreeFile(1)
Open "c:\temp\SelInText.txt" For Output As kk   ' Ausgabedatei - anpassen
Print #kk, strE
Close kk
End Sub
In Variante 1 wird erst die gesamte Ausgabe in einem String strE gesammelt,
dann werden in den (langen) String alle Kommata durch Punkte ersetzt.
Wenn strE sehr lang wird, könnte es sein, dass die Funktion Replace nicht mehr korrekt arbeitet.
Deshalb wird in Variante 2 die Ersetzung mit Replace für jede Zeile einzeln vorgenommen.
Achtung: Jedes Komma - auch innerhalb eines Textes - wird durch einen Punkt ersetzt.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Selection-Ausgabe in Textfile
22.08.2009 10:02:51
Roland
Hallo Erich,
ich bin restlos begeistert! Das Macro arbeitet genau so wie ich es mir vorgestellt habe. Besonders gut ist, dass in der Zieldatei die alte Daten gelöscht werden.
Da es maximal 10 Zeilen sind die exportiert werden müssen langt wohl die Variante 1 aus.
Etwas Probleme habe ich noch mit dem Aufrufen des Macros durch eine Tastenkombination. Dein Macro habe ich in ein neues Modul gespeichert. Anschließend habe ich ein kleines Macro aufgezeichnet und dabei eine Tastenkombination zugeordnet. Anschließend lösche ich die Aktion des Macros und füge "Call SelInText1" ein. Somit läuft es.
Gibt es noch einen eleganteren Weg?
Grüße aus Heidelberg
Roland
Anzeige
Tastenkombi für Makro zuweisen
22.08.2009 10:47:53
{Boris}
Hi Roland,
Entwicklertool - Makros - Makro auswählen - Optionen - und hier ne Tastenkombi zuweisen.
Grüße Boris
AW: Tastenkombi für Makro zuweisen
22.08.2009 13:41:48
Roland
Manchmal ist das Leben doch so einfach ;-)
Danke!
Grüße
Roland
AW: Selection-Ausgabe in Textfile
22.08.2009 10:56:09
Hajo_Zi
Halo Roland,
falls Entwicklertools nicht aktiviert.
Register Ansicht Befehlgruppe Makros, Makros

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige