Clever-Excel-Forum

Normale Version: Problem mit ein Code für txt Datei!
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo liebe Excelgemeinde,


ich habe ein Problem und ich finde einfach den Fehler nicht! :@

Mit folgenden Code kopiere ich die Spalte A in meine "Export" Blatt in eine temporäre Datei, diese speicher ich dann als txt-Datei.

Code:
Sub test2()
Dim letzteZeile As Long
Dim X As Workbook, Y As Worksheet, temp As Workbook
Set X = ActiveWorkbook
Set Y = X.Sheets(2)
Set temp = Workbooks.Add(xlWBATWorksheet)
letzteZeile = Y.Cells(Rows.Count, 1).End(xlUp).Row
Y.Range("A1:A" & letzteZeile).Copy temp.Sheets(1).Cells(1, 1)
Application.CutCopyMode = False
temp.SaveAs Filename:=ThisWorkbook.Path & "\spei_01.txt", _
FileFormat:=xlTextMSDOS, CreateBackup:=False
ActiveWorkbook.Close False
X.Activate
End Sub


IN der txt Datei werden mir jedoch vor manche Zeile ein "" eingefügt und ich weiß nicht warum, denn wenn ich das Ganze manuell kopiere und in der txt einfüge dann funktioniert alles perfekt!

Habt Ihr eine Idee woran das liegen kann?


Danke
VG
Alexandra
Hallo Alexandra,

schaue mal, was in den betroffenen Zellen anders ist als dort, wo es funktioniert.
Eventuell kannst Du die Zellinhalte korrigieren oder die Daten mit der Print-Anweisung ausgeben. Schaue dazu mal in die Hilfe zu Open, Output oder Print.
Hallo Andre,


habe soeben festgestellt, dass wenn Kommas vorkommen das passiert! Kann ich das im Code irgendwie unterbinden den ich brauche die Kommas!?


Danke
VG
Alexandra
Hallo Alexandra,

wie schon gesagt, da musst Du wahrscheinlich mit Print arbeiten.
Hallo Andre,


so habe ich das jetzt gelöst:

Code:
Sub Test()
    Dim FileName As String
    FileName = ThisWorkbook.Path & "\" & Range("H2").Text & ".txt"
    Var = MsgBox("Importdatei " & FileName & " erstellen? Achtung! Falls bereist ein Datei mit diesen Namen existiert, wird diese überschrieben! Sind Sie sicher?", vbYesNo)
     If Var = 7 Then
         Exit Sub
         Else
    Dim FileNo As Integer
    Dim x As Long
    FileNo = FreeFile
    Open FileName For Output As #FileNo
    With Worksheets("Export")
        For x = 1 To .Range("A1:A" & .Range("A65536").End(xlUp).Row).Count
            Print #FileNo, .Cells(x, 1).Value
        Next x
    End With
    End If
    Close #FileNo
    MsgBox "Importdatei " & FileName & " erfolgreich erstellt!"
End Sub

Problem! Ich habe in den Sheet "Export" in Spalte A Formeln drin von A1 bis A10000!

Mit For x = 1 To .Range("A1:A" & .Range("A65536").End(xlUp).Row).Count werden alle 10000 Zellen kopiert obwohl ab A508 kein Wert in der Zelle sondern nur die Formeln =wenn(Tabelle1!A508="";"";blablaba). Das heißt ich habe in meiner Textdatei ca. 9500 leere Zeilen!

Wie kann ich diesen Code:
For x = 1 To .Range("A1:A" & .Range("A65536").End(xlUp).Row).Count
dazu bringen, dass er wirklich nur bis zur letzten Zelle in A die auch tatsächlich einen Wert enthält geht???


Danke
VG
Alexandra
Hallo Alexandra,

Code:
Sub Test()
  Dim FileName As String
  Dim FileNo As Integer
  Dim x As Long
  FileName = ThisWorkbook.Path & "\" & Range("H2").Text & ".txt"
  If MsgBox("Importdatei " & FileName & " erstellen? Achtung! Falls bereist ein Datei mit diesen Namen existiert, wird diese überschrieben! Sind Sie sicher?", vbYesNo) = vbYes Then
    FileNo = FreeFile
    Open FileName For Output As #FileNo
    With Worksheets("Export")
      For x = 1 To Columns(1).Find(What:="*", After:=Cells(1, 1), LookIn:=xlValues, LookAt:=xlPart, SearchDirection:=xlPrevious, MatchCase:=False).Row
        Print #FileNo, .Cells(x, 1).Value
      Next x
    End With
    Close #FileNo
    MsgBox "Importdatei " & FileName & " erfolgreich erstellt!"
  End If
End Sub

Gruß Uwe
Hi Alexandra,

(11.07.2014, 07:41)cysu11 schrieb: [ -> ]Mit For x = 1 To .Range("A1:A" & .Range("A65536").End(xlUp).Row).Count werden alle 10000 Zellen kopiert obwohl ab A508 kein Wert in der Zelle sondern nur die Formeln =wenn(Tabelle1!A508="";"";blablaba). Das heißt ich habe in meiner Textdatei ca. 9500 leere Zeilen!

Du könntest die Formeln in den Zeilen 508 bis 10.000 löschen und den Bereich Zeile 1 bis 507 in eine Tabelle umwandeln mit STRG-L oder STRG-T.
Wenn Du dann in z.B. B501 etwas einträgst, wird automatisch die Formel aus A507 nach A508 fortgeführt. Damit sind aber wirklich nur die benötigten Zeilen mit Formeln bestückt und es wird auch nur dieser Bereich kopiert.
Hallo Uwe,


funktioniert perfekt, genau so wollte ich es haben!
Vielen Dank dafür!!!

@Ralf, leider verstehe ich nicht ganz wie das funktionieren soll!?


Vielen Dank
VG
Alexandra
Hallo Alexandra,

(12.07.2014, 01:08)cysu11 schrieb: [ -> ]@Ralf, leider verstehe ich nicht ganz wie das funktionieren soll!?

Hier ist eine Beispiel-Datei:
[attachment=354]

Schaue Dir den Inhalt von A4 bis C4 an. (Tipp: sie sind leer)

Zum Test schreibe in Zelle B4 etwas rein und danach schau Dir die Zellen A4 und C4 an, dann siehst Du, was ich meine.
Hallo Ralf,


damit habe ich bis jetzt noch nie gearbeitet, aber das ist ja eine Supersache!!
Werde mal öfters wohl, damit arbeiten! :)


Vielen Dank
VG
Alexandra
Seiten: 1 2