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

als txt abspeichern, erste Spalte leer

als txt abspeichern, erste Spalte leer
07.11.2015 00:16:03
Rudi
Hallo
Ich möchte eine Excel-Datei als *txt-Datei (Tab getrennt) abspeichern per VBA.
Funktioniert alles einwandfrei. Einziges Problem: die erste Spalte ist leer.
Wie schaffe ich es, dass die 1.Spalte in der txt-Datei erscheint?
z.B. Excel:

leer 01.01.2016 31.03.2016
wird abgespeichert als:
01.01.2016 31.03.2016
Danke für euren Input!
Gruss, Rudi

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: xls als txt abspeichern, erste Spalte leer
07.11.2015 06:39:14
Over
Hallo Rudi,
wie hast du das Speichern in VBA realisiert?
ich habe mal einfach Speichern unter als Tabgetrennte-Txt-Datei gewählt...
 ActiveWorkbook.SaveAs Filename:= _
"C:\Wunschpfad\Test.txt", FileFormat:=xlText, _
CreateBackup:=False
macht aus xls-Tab




Spalte 1Spalte 2Spalte 3
leer 01.01.2015 31.03.2015
leer 01.02.2015 30.04.2015

eine Textdatei mit dem gewünschten Aufbau




Spalte 1Spalte 2Spalte 3
leer 01.01.2015 31.03.2015
leer 01.02.2015 30.04.2015

lg
Daniel Ov

Anzeige
AW: xls als txt abspeichern, erste Spalte leer
07.11.2015 09:35:52
Rudi
Hallo Daniel
So:
datnam = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5)
Rows("1:1").Select
Selection.Delete Shift:=xlUp
Range("A1").Select
ActiveWorkbook.SaveAs Filename:= _
"c:\wunschpfad\" & datnam _
, FileFormat:=xlText, CreateBackup:=False
ActiveWorkbook.Close False
Das "Problem" ist, dass ich die erste Zeile mit den Überschriften löschen muss. Wäre der Titel von Spalte 1 noch vorhanden, wär's überhaupt kein Problem.

AW: xls als txt abspeichern, erste Spalte leer
07.11.2015 09:36:59
Rudi
...oder muss ich das *.txt-File nach Erstellung öffnen per VBA und dann eine Leerspalte einfügen? Wenn's anders geht, wäre ich froh...

Anzeige
AW: xls als txt abspeichern, erste Spalte leer
07.11.2015 09:48:34
Werner
Hallo Rudi,
was ist denn, wenn du nach dem Löschen der Zeile 1 ein Leerzeichen in die Zelle A1 schreibst?
Rows("1:1").Select
Selection.Delete Shift:=xlUp
Cells(1, 1) = " "
Gruß Werner

AW: xls als txt abspeichern, erste Spalte leer
07.11.2015 10:24:30
Rudi
Hallo Werner
Danke dir. Das geht schon, dann macht VBA die Spalte. Das Problem ist nur: Für die nachfolgende Bearbeitung in SAP muss die Spalte wirklich leer sein... " " ist ein blank, nicht leer..
Hast du noch weitere Ideen?
Gruss, Rudi

AW: xls als txt abspeichern, erste Spalte leer
07.11.2015 10:36:21
Werner
Hallo Rudi,
mein Vorschlag war auch nur als Notlösung gedacht. Was du vielleicht noch versuchen könntest wäre, zunächst ein Leerzeichen in die Zelle zu schreiben und dann die Zelle wieder zu leeren (nicht löschen).
Rows("1:1").Select
Selection.Delete Shift:=xlUp
Cells(1, 1) = " "
cells(1, 1).ClearContents
Gruß Werner

Anzeige
AW: xls-Daten in *.txt ausgeben
07.11.2015 14:14:24
Over
Hallo Rudi,
wo soll es denn in SAP rein?
da es Probleme macht das Tabellenblatt vor dem Speichern passend zubiegen...
ist vielleicht Tinos Variante, die gewünschten Daten direkt in eine txt-Datei zu schreiben, einfacher umzusetzen...

Wunschpfad = "C:\"
Dateiname = "Test.txt"
Datenspalte = 2 'die von oben bis unten Werte enthält
Anz_Spalten = 2  ' Anzahl der von links nach rechts zu übernehmenden Daten-Spalten
zeile = 4 'erste Zeile, ab wo Daten zu übetragen sind
Open Wunschpfad & Dateiname For Output As #1
Do
Datensatz = vbTab  'erste Spalte leer
For i = 1 To Anz_Spalten
Datensatz = Datensatz & Cells(zeile, 1 + i) & vbTab 'Zeile Spaltenweise zusammensetzen
Next i
Print #1, Datensatz   'komplette Zeile in txt-Datei schreiben
zeile = zeile + 1
Loop Until (Cells(zeile, Datenspalte) = "")
Close #1
Lg
Daniel Ov

Anzeige
AW: als txt abspeichern, erste Spalte leer
07.11.2015 10:52:05
Tino
Hallo,
kannst mal diese Version testen.
Option Explicit

Sub SaveTXT()
Dim ArData
Dim rngRange As Range
Dim sText$, SaveTxTPath$
Dim F%
Dim n&, nn&

'Pfad für Textdatei, evtl. anpassen 
SaveTxTPath = ThisWorkbook.FullName
SaveTxTPath = Left$(SaveTxTPath, InStrRev(SaveTxTPath, "."))
SaveTxTPath = SaveTxTPath & "txt"
'Textdatei vorhanden -> löschen 
If Dir(SaveTxTPath) <> "" Then Kill SaveTxTPath


With Tabelle1 'Tabelle evtl. anpassen 
    Set rngRange = .Range("A1", FindLetzte(.UsedRange))
    If rngRange.Cells.Count > 1 Then
        ArData = rngRange
    Else
        If rngRange.Value <> "" Then
            ArData = rngRange.Resize(, 2)
            Redim Preserve ArData(1 To 1, 1 To 1)
        Else
            MsgBox "keine Daten in der Tabelle gefunden!", vbExclamation
            Exit Sub
        End If
    End If
End With

With Application
    F = FreeFile
    Open SaveTxTPath For Append As #F
    If Ubound(ArData) > 1 Then
        For n = 1 To Ubound(ArData)
            sText = Join(.Index(ArData, n), vbTab)
            Print #F, sText
            sText = ""
        Next n
    Else
        For nn = 1 To Ubound(ArData, 2)
            sText = sText & ArData(1, nn) & vbTab
        Next nn
        sText = Left$(sText, Len(sText) - 1)
        Print #F, sText
    End If
    Close #F
End With
End Sub


Function FindLetzte(myRange As Range) As Range
Dim LRow As Long, LCol As Long
Dim A As Long
 
With myRange
    On Error Resume Next
    'Finde Zeile 
    LRow = .Find("*", , xlValues, xlWhole, xlByRows, xlPrevious, False, False).Row
    LRow = Application.Max(LRow, .Find("*", , xlFormulas, xlWhole, xlByRows, xlPrevious).Row)
    If LRow = 0 Then LRow = 1
    'Finde Spalte 
    For A = .Columns(.Columns.Count).Column To .Columns(1).Column Step -1
          LCol = .Parent.Columns(A).Find("*", , xlValues, xlWhole, xlByRows, xlPrevious).Column
          LCol = Application.Max(LCol, .Parent.Columns(A).Find("*", , xlFormulas, xlWhole, xlByRows, xlPrevious).Column)
          If LCol > 1 Then: LCol = A: Exit For
    Next A
    If LCol = 0 Then LCol = 1
End With

Set FindLetzte = myRange.Parent.Cells(LRow, LCol)
End Function
Gruß Tino

Anzeige
AW: als txt abspeichern, erste Spalte leer
07.11.2015 11:57:22
Rudi
Danke, Tino, werde ich versuchen und dir Bescheid geben.

AW: als txt abspeichern, erste Spalte leer
07.11.2015 21:04:17
Rudi
Hallo Tino
Funktioniert wunderbar! Vielen Dank für deine Hilfe.
Gruss, Rudi

288 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige