Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen

xls als txt abspeichern | Herbers Excel-Forum


Betrifft: xls als txt abspeichern von: Michael
Geschrieben am: 26.01.2010 07:17:01

Guten Morgen,
ich habe folgendes Problem: Ich muss eine xls-Datei im txt-Format abspeichern, dabei ist folgendes zu beachten: Es muss der Bereich von A4 bis G220 ausgegeben werden (es soll in der txt. datei genau so angeordnet sein wie in der xls-datei), dabei muss beim abspeichern gleich ein Namens-Vorschlag kommen (dieser Vorschlag steht in A1) z.B. Januar2010.
Ich hoffe Ihr habt das Problem verstanden, ich habe wirklich keine Ahnung wie ich das realisieren soll.
Ich danke euch für jede Antwort. Vielen Dank schon mal im voraus.

  

Betrifft: AW: xls als txt abspeichern von: welga
Geschrieben am: 26.01.2010 08:04:39

Hallo Michael,

versuche mal folgendes:

Sub test()
Dim a As String
Dim speicherpfad As String
Dim i As Long
Application.ScreenUpdating = False
Application.DisplayAlerts = False
a = ThisWorkbook.Sheets(1).Cells(1, 1).Text
    speicherpfad = InputBox("Geben Sie den Ordner an, der durchsucht werden soll.", "Pfad  _
definieren", "C:\Dokumente und Einstellungen\Administrator\Desktop\test")
    If speicherpfad = "" Then Exit Sub
    Sheets(1).Select
    Sheets(1).Copy
    Rows("1:3").Select
    Selection.Delete Shift:=xlUp
 For i = ActiveSheet.UsedRange.Rows.Count To 221 Step -1
    Rows(i).Select
    Selection.Delete Shift:=xlUp
    Next i
    
    ActiveWorkbook.SaveAs Filename:=speicherpfad & "\" & a & ".txt", FileFormat:= _
        xlText, CreateBackup:=False
    ActiveWindow.Close
    Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub



  

Betrifft: AW: xls als txt abspeichern von: Michael
Geschrieben am: 26.01.2010 08:05:27

Meine Excel-Datei sieht wie folgt aus.


Die Ausgabe in der txt-Datei, soll wie folgt aussehen.(soll immer mit einem Tab getrennt werden)



Ich hoffe mir kann jemand weiterhelfen.


  

Betrifft: AW: xls als txt abspeichern von: Tino
Geschrieben am: 26.01.2010 09:37:00

Hallo,
kopiere die Datei als neue Arbeitsmappe und speichere diese unter als
Datentyp: Text (Tabstopp-getrennt) (*.txt).
Möchtest Du dies als Makro, lass den Rekorde dabei mal mitlaufen.


Gruß Tino


  

Betrifft: AW: xls als txt abspeichern von: Michael
Geschrieben am: 26.01.2010 09:50:49

Danke für die schnelle Antwort.
Wie meinst des mit dem Rekorde mitlaufen lassen?


  

Betrifft: den Makrorekorder, noch nie gehört? oT. von: Tino
Geschrieben am: 26.01.2010 09:58:25




  

Betrifft: AW: den Makrorekorder, noch nie gehört? oT. von: Michael
Geschrieben am: 26.01.2010 10:05:29

Ja natürlich, aber meine Frage bezieht sich darauf, ob es eine Schleife gibt die bei K220 automatisch endet?


  

Betrifft: AW: den Makrorekorder, noch nie gehört? oT. von: Tino
Geschrieben am: 26.01.2010 10:10:28

Hallo,
kopieren den Bereich einfach in eine Neue Datei, speichern unter schließen fertig, keine Schleife.

Gruß Tino


  

Betrifft: AW: den Makrorekorder, noch nie gehört? oT. von: Michael
Geschrieben am: 26.01.2010 10:52:31

Ja das war mir auch klar, dass ich es mit speichern unter machen könnte. Jedoch benötige ich ein Makro!


  

Betrifft: AW: den Makrorekorder, noch nie gehört? oT. von: Tino
Geschrieben am: 26.01.2010 11:08:39

Hallo,
der Makrorekorder spuckt bei mir dies aus.

 Sheets("Tabelle1").Select   
 Rows("1:220").Select
    Selection.Copy
    Workbooks.Add
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveWorkbook.SaveAs Filename:="G:\1 Forum\Mappe2.txt", FileFormat:=xlText, CreateBackup:= _
False
    ActiveWindow.Close
Den Code kann man von Hand etwas anpassen.
Sub Makro1()
With Application
    .ScreenUpdating = False
    .DisplayAlerts = False
    
        Sheets("Tabelle1").Rows("1:220").Copy
        Workbooks.Add 1
        ActiveSheet.Paste
        Application.CutCopyMode = False
        'Hier noch Deinen Pfad anpassen ***************************************************
        ActiveWorkbook.SaveAs Filename:="D:\Ordner\MeinTextFile.txt", FileFormat:=xlText,  _
CreateBackup:=False
        ActiveWindow.Close False
    
    .ScreenUpdating = True
    .DisplayAlerts = True
End With
End Sub
Gruß Tino


  

Betrifft: AW: den Makrorekorder, noch nie gehört? oT. von: Michael
Geschrieben am: 27.01.2010 13:33:16

Vielen Dank für eure schnelle Antwort.
Funktioniert einwandfrei.
Gruß Michael


  

Betrifft: AW: xls als txt abspeichern von: Rudi Maintaire
Geschrieben am: 26.01.2010 09:54:14

Hallo,
in ein Modul:

Public Sub prcCreateTXT()
    Dim intFileNumber As Integer
    Dim lngRow As Long
    Dim vntArray As Variant
    Dim strText As String
    Dim i As Integer
    Dim sFile
    Const strPre As String = vbTab
    Reset
    sFile = Application.GetSaveAsFilename(Range("a1"), "Textdateien (*.txt), *.txt")
    If sFile <> CStr(False) Then
      intFileNumber = FreeFile
      Open sFile For Output As #intFileNumber
      
      With ActiveSheet.UsedRange
          For lngRow = 1 To .Row + .Rows.Count - 1
              vntArray = Range(Cells(lngRow, 1), _
                  Cells(lngRow, .Column + .Columns.Count - 1))
              vntArray = WorksheetFunction.Transpose(WorksheetFunction.Transpose(vntArray))
              strText = Join(vntArray, strPre)
              Print #intFileNumber, strText
          Next
      End With
      
      Close #intFileNumber
    End If
End Sub

Gruß
Rudi


  

Betrifft: AW: xls als txt abspeichern von: Michael
Geschrieben am: 26.01.2010 10:03:38

Hallo Rudi,
vielen Dank für die schnelle Antwort. Hab da aber noch ein Problem!
Kann man irgendwie einstellen, dass díe Schleife bei K220 endet?
Und dass das alles voll automatisch durchläuft?


  

Betrifft: AW: xls als txt abspeichern von: Rudi Maintaire
Geschrieben am: 26.01.2010 10:28:19

Hallo,
1. so:

Public Sub prcCreateTXT()
    Dim intFileNumber As Integer
    Dim lngRow As Long
    Dim vntArray As Variant
    Dim strText As String
    Dim i As Integer
    Dim sFile
    Const strPre As String = vbTab
    Reset
    sFile = "c:\Test\" & Range("a1") & ".txt"
    intFileNumber = FreeFile
    Open sFile For Output As #intFileNumber
    
    With ActiveSheet
        For lngRow = 1 To 220
            vntArray = Range(Cells(lngRow, 1), Cells(lngRow, 11))
            vntArray = WorksheetFunction.Transpose(WorksheetFunction.Transpose(vntArray))
            strText = Join(vntArray, strPre)
            Print #intFileNumber, strText
        Next
    End With
    
    Close #intFileNumber
End Sub

2. was meinst du mit voll automatisch?

Gruß
Rudi


  

Betrifft: ...mit Exit For bei... von: Luc:-?
Geschrieben am: 26.01.2010 10:30:53

...Range(Cells(lngRow, 1), Cells(lngRow, .Column + .Columns.Count - 1)).Address(0, 0) = "K220", Michael,
also If das von oben Then Exit For nach End If.
Gruß Luc :-?


  

Betrifft: AW: ...mit Exit For bei... von: Michael
Geschrieben am: 26.01.2010 10:51:40

Vielen Dank Luc, hab das mal in meinen Quellcode eingesetzt, jedoch kommt immer ein "Laufzeitfehler".
Können Sie mir weiterhelfen?


  

Betrifft: Warum versuchst du es dann nicht mit... von: Luc:-?
Geschrieben am: 26.01.2010 11:11:56

...Rudis Alternative, Michael,
oder enthält die dieses Ende nicht (habe ich mir nicht so genau angesehen!)? Das war nur ein Vorschlag, aber da Rudi das nochmals völlig überarbeitet hat, will ich ihm nicht reinquatschen, zumal ich das jetzt auch nicht testen kann...
Gruß Luc :-?


  

Betrifft: AW: Warum versuchst du es dann nicht mit... von: Michael
Geschrieben am: 27.01.2010 13:33:39

Vielen Dank für eure schnelle Antwort.
Funktioniert einwandfrei.
Gruß Michael