2.3k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo erst ein mal,ich habe da ein problemm !!

Ich möchte meine Tabelle1 als txt datei unter MS_Dos Speichern,
die werte die in dieser tabelle stehen werden aus einer formel
regeneriert.
jetzt habe ich das problemm das er mit wenn ich die txt datei
speicher immer ein leer zeichen vor jeder zelle im editor setzt wenn
ich die datei öffne.

kann ich diese datei auch per makro speichern ( txt MS_DOS )
und den namen für die datei soll er mir aus Tabelle2 G6 hollen.

wenn ich es nicht eindeutig geschrieben habe sagt es bitte... :(

aber danke schon eine mal für eure mühe !!!!!!!!!!!!!!!!

Sub Speichern_TXT()
'
' Speichern_TXT Makro
'
' Tastenkombination: Strg+a
'
ActiveWorkbook.SaveAs Filename:="C:\Desktop\001.txt", _
FileFormat:=xlTextMSDOS, CreateBackup:=False
' Speichern_mit_Makro Makro
'

'
ActiveWorkbook.SaveAs Filename:="C:\Desktop\Test.xlsx.xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled,
CreateBackup:=False
End Sub

hier habe ich mal ein makro erstellt aber leider weiß ich nicht wie ich
es hinbekomme das er mir die datei speichert mit nammen aus
zelle... ( Tabelle2 "G6" )

6 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

wenn du deine Tabelle als Text-Datei im MS-DOS-Format speichern willst, so kannst du das folgende Makro nehmen:

Sub Speichern_TXT()
'
' Speichern_TXT Makro
'
' Tastenkombination: Strg+a
'
Dim Dateiname As String

'Prüfen, ob in Tabelle2, Zelle G6 ein gültiger Dateiname steht
If Len(Trim(ActiveWorkbook.Sheets("Tabelle2").Range("G6"))) = 0 Then
MsgBox "Kein gültiger Dateiname!", 16, "Fehler"
Exit Sub
End If

Dateiname = "C:\Desktop\" & Trim(ActiveWorkbook.Sheets("Tabelle2").Range("G6")) & ".txt"

ActiveWorkbook.SaveAs Filename:=Dateiname, _
FileFormat:=xlTextMSDOS, CreateBackup:=False

End Sub



Wenn ich dich richtig verstehe, hast du mehrere Arbeitsblätter in deiner Arbeitsmappe. Daher würde ich die Daten aus der Tabelle1 mit folgendem Makro als Text-Datei exportieren:

Sub txtDateiErstellen()

'Variablendeklaration
Dim Ausgabepfad As String
Dim Spalte, LSpalte As Integer
Dim VollZeile As String
Dim Trennzeichen As String
Dim LZeile, Zeile As Long

'Prüfen ob in Tabelle2, Zelle G6 ein gültiger Wert als Dateiname steht
If Len(Trim(ActiveWorkbook.Sheets("Tabelle2").Range("G6"))) = 0 Then
MsgBox "Kein gültiger Dateiname!", 16, "Fehler"
Exit Sub
End If

'Ausgabepfad und - name wird festgelegt - Pfad anpassen
Ausgabepfad = "C:\Desktop\" & Trim(ActiveWorkbook.Sheets("Tabelle2").Range("G6").Text) & ".txt"

'Trennzeichen wird festgelegt - hier Tabulator
Trennzeichen = vbTab

'Anzahl der beschriebenen Spalten wird ermittelt
LSpalte = ActiveWorkbook.Sheets("Tabelle1").UsedRange.SpecialCells(xlCellTypeLastCell).Column

'Anzahl der beschriebenen Zeilen wird ermittelt
LZeile = ActiveWorkbook.Sheets("Tabelle1").UsedRange.SpecialCells(xlCellTypeLastCell).Row

'Datei Öffen zur Ausgabe
Open Ausgabepfad For Output As #1

'Schleife für Zeilen
For Zeile = 1 To LZeile

'Schleife für Spalten
For Spalte = 1 To LSpalte

'Ausgabezeile für Textdatei wird generiert
VollZeile = VollZeile & Trim(Cells(Zeile, Spalte).Text) & Trennzeichen

Next Spalte

'Ausgabe in Datei
VollZeile = Left(VollZeile, Len(VollZeile) - 0) 'Letzten Semicolon nicht abschneiden
Print #1, VollZeile
'Zurücksetzen der Ausgabezeile
VollZeile = ""

Next Zeile

Close #1 'Datei schliessen

'Nachricht, dass Exportdatei erstellt wurde
MsgBox "Die Ausgabedatei wurde erstellt", vbOKOnly, "Export beendet"

End Sub


Den Ausgabepfad musst du natürlich nach deinen Bedürfnissen anpassen.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O !!!
denke dir erst ein mal für deine hilfe,ich habe die zweite variante genommen und sie geht
hervorragend !!!
es ist genau das was ich brauchte.......
Danke dir nochmals !!!!!!!!!!!!!!!!

eine frage habe ich noch und zwar wo kann ich das programmieren über vba erlehrnen...?
gibt es da gute bücher die du mir empfehlen vieleicht empfehlen kannst...?
etwas kenne ich mich mit vba aus aber nur etwas
ansonnsten mit excel tabellen erstellen und formeln das ist kein problem.
0 Punkte
Beantwortet von nero022 Mitglied (179 Punkte)
eine frage habe ich da noch oder ehr noch ein kleines problem...
ist es möglich in dem makro noch volgendes mit einzubinden...?

in tabelle 1 stehen ja meine daten für die txt datei jetzt möchte ich gerne noch wenn
eine zeile weniger alls z.b 30 zeichen hat das sie ausgeblendet wird und nicht mit in
die txt datei rein kommt ...

ist das vieleicht möglich...?????

danke schon mal..
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Christian,

hier der geänderte Code, der erst Zeilen mit einer Länge von 30 Zeichen in die Text-Datei schreibt:

Sub txtDateiErstellen()

'Variablendeklaration
Dim Ausgabepfad As String
Dim Spalte, LSpalte As Integer
Dim VollZeile As String
Dim Trennzeichen As String
Dim LZeile, Zeile As Long

'Prüfen ob in Tabelle2, Zelle G6 ein gültiger Wert als Dateiname steht
If Len(Trim(ActiveWorkbook.Sheets("Tabelle2").Range("G6"))) = 0 Then
MsgBox "Kein gültiger Dateiname!", 16, "Fehler"
Exit Sub
End If

'Ausgabepfad und - name wird festgelegt - Pfad anpassen
Ausgabepfad = "C:\Desktop\" & Trim(ActiveWorkbook.Sheets("Tabelle2").Range("G6").Text) & ".txt"

'Trennzeichen wird festgelegt - hier Tabulator
Trennzeichen = vbTab

'Anzahl der beschriebenen Spalten wird ermittelt
LSpalte = ActiveWorkbook.Sheets("Tabelle1").UsedRange.SpecialCells(xlCellTypeLastCell).Column

'Anzahl der beschriebenen Zeilen wird ermittelt
LZeile = ActiveWorkbook.Sheets("Tabelle1").UsedRange.SpecialCells(xlCellTypeLastCell).Row

'Datei Öffen zur Ausgabe
Open Ausgabepfad For Output As #1

'Schleife für Zeilen
For Zeile = 1 To LZeile

'Schleife für Spalten
For Spalte = 1 To LSpalte

'Ausgabezeile für Textdatei wird generiert
VollZeile = VollZeile & Trim(Cells(Zeile, Spalte).Text) & Trennzeichen

Next Spalte

'Ausgabe in Datei
VollZeile = Left(VollZeile, Len(VollZeile) - 1) 'Letzten Trenner abschneiden
'nur Zeilen mit mehr als 29 Zeichen in Ausgabedatei schreiben
If Len(VollZeile) > 29 Then Print #1, VollZeile
'Zurücksetzen der Ausgabezeile
VollZeile = ""

Next Zeile

Close #1 'Datei schliessen

'Nachricht, dass Exportdatei erstellt wurde
MsgBox "Die Ausgabedatei wurde erstellt", vbOKOnly, "Export beendet"

End Sub


Zum Erlernen von VBA schaue mal hier nach:
Klick mich!

Gruß

M.O.
0 Punkte
Beantwortet von nero022 Mitglied (179 Punkte)
hallo M.O !!
ich möchte mich noch mal bei dir bedanke,das makro geht hervorragend !!!
echt super............!!!!!!!!!!!!

mit dem erlehrnen werde ich mir mal versuchen ein buch zu besorgen und im internet nachschauen
und natürlich hier,excel ist nun mal ein hobby von mir und es macht echt spaß.
etwas kann ich ja in vba aber ich möchte mehr :)

danke dir noch mal !! und wenn ich mal nicht weiter komme schaue ich ganz einfach hier herrein.
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Christian,

danke für die Rückmeldung. Und ich kann dir nur zustimmen: Excel ist ein Hobby, das wirklich Spaß macht :-).

Gruß

M.O.
...