als txt abspeichern, erste Spalte leer

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: als txt abspeichern, erste Spalte leer
von: Rudi
Geschrieben am: 07.11.2015 00:16:03

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:
<1.Spalte> <2. Spalte> <3. Spalte>
leer 01.01.2016 31.03.2016
wird abgespeichert als:
01.01.2016 31.03.2016
Danke für euren Input!
Gruss, Rudi

Bild

Betrifft: AW: xls als txt abspeichern, erste Spalte leer
von: Over
Geschrieben am: 07.11.2015 06:39:14
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

Bild

Betrifft: AW: xls als txt abspeichern, erste Spalte leer
von: Rudi
Geschrieben am: 07.11.2015 09:35:52
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.

Bild

Betrifft: AW: xls als txt abspeichern, erste Spalte leer
von: Rudi
Geschrieben am: 07.11.2015 09:36:59
...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...

Bild

Betrifft: AW: xls als txt abspeichern, erste Spalte leer
von: Werner
Geschrieben am: 07.11.2015 09:48:34
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

Bild

Betrifft: AW: xls als txt abspeichern, erste Spalte leer
von: Rudi
Geschrieben am: 07.11.2015 10:24:30
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

Bild

Betrifft: AW: xls als txt abspeichern, erste Spalte leer
von: Werner
Geschrieben am: 07.11.2015 10:36:21
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

Bild

Betrifft: AW: xls-Daten in *.txt ausgeben
von: Over
Geschrieben am: 07.11.2015 14:14:24
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

Bild

Betrifft: AW: als txt abspeichern, erste Spalte leer
von: Tino
Geschrieben am: 07.11.2015 10:52:05
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

Bild

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

Bild

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

 Bild

Beiträge aus den Excel-Beispielen zum Thema "als txt abspeichern, erste Spalte leer"