Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
916to920
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
916to920
916to920
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Dateien splitten beim speichern ?

Dateien splitten beim speichern ?
23.10.2007 11:34:59
andre
Frage an die Experten, ich habe alle Spalten in Spalte A zusammengefasst und möchte das jeweils 3000 Zeilen in einer Datei gespeichert werden so das ich am Ende Datei1.txt u. Datei2.txt usw. erhalte
und was noch wichtig ist beim speichern muss in jeder der Dateien am Anfang und am Ende eine Zeile eingefügt werden mit Text z.B. "Dateianfang" und "Dateiende"
hier ist der Code zum speichern den ich bisher verwendet habe da er auch die Anführungszeichen löscht, wie könnte ich ihn abändern ?
Gruß Andre

Sub speichern()
Dim Bereich          As Object
Dim ZZeile            As Object
Dim Zelle              As Object
Dim strTemp         As String
Const Dateiname      As String = "Datei"
Const Extension        As String = ".txt"
Const Trennzeichen  As String = ";"
Const Kapselzeichen As String = ""
Set Bereich = ActiveSheet.UsedRange
Open myPath & Dateiname & Extension For Output As #1
For Each ZZeile In Bereich.Rows
For Each Zelle In ZZeile.Cells
If InStr(1, Zelle.Text, Trennzeichen) > 0 Then
strTemp = strTemp & Kapselzeichen & CStr(Zelle.Text) & _
Kapselzeichen & Trennzeichen
Else
strTemp = strTemp & CStr(Zelle.Text) & Trennzeichen
End If
Next
strTemp = Left(strTemp, Len(strTemp) - 1)
Print #1, strTemp
strTemp = ""
Next
Close #1
'Cells.Select
'Selection.Delete Shift:=xlUp
'Range("A1").Select
'Application.Quit
'ThisWorkbook.Close SaveChanges:=False
End Sub


8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien splitten beim speichern ?
23.10.2007 12:12:11
IngGi
Hallo Andre,
versuch's mal so:

Sub speichern()
Dim Bereich          As Object
Dim ZZeile            As Object
Dim Zelle              As Object
Dim strTemp         As String
Dim intNumber       As Integer
Const Dateiname      As String = "Datei"
Const Extension        As String = ".txt"
Const Trennzeichen  As String = ";"
Const Kapselzeichen As String = ""
Set Bereich = ActiveSheet.UsedRange
Open mypath & Dateiname & "1" & Extension For Output As #1
For Each ZZeile In Bereich.Rows
intNumber = intNumber + 1
For Each Zelle In ZZeile.Cells
If InStr(1, Zelle.Text, Trennzeichen) > 0 Then
strTemp = strTemp & Kapselzeichen & CStr(Zelle.Text) & _
Kapselzeichen & Trennzeichen
Else
strTemp = strTemp & CStr(Zelle.Text) & Trennzeichen
End If
Next
strTemp = Left(strTemp, Len(strTemp) - 1)
Print #1, strTemp
strTemp = ""
If intNumber / 3000 = Int(intNumber / 3000) Then
Close #1
Open mypath & Dateiname & intNumber / 3000 + 1 & Extension For Output As #1
End If
Next
Close #1
'Cells.Select
'Selection.Delete Shift:=xlUp
'Range("A1").Select
'Application.Quit
'ThisWorkbook.Close SaveChanges:=False
End Sub

Gruß Ingolf

Anzeige
AW: Dateien splitten beim speichern ?
23.10.2007 12:27:05
Tino
Hallo,
ich habe diese Lösung im Angebot.

Sub speichern()
Dim Bereich          As Object
Dim ZZeile            As Object
Dim Zelle              As Object
Dim strTemp         As String
Dim a As Byte
Const Dateiname      As String = "Datei"
Const Extension        As String = ".txt"
Const Trennzeichen  As String = ";"
Const Kapselzeichen As String = ""
Set Bereich = ActiveSheet.UsedRange
For Each ZZeile In Bereich.Rows
For Each Zelle In ZZeile.Cells
If InStr(1, Zelle.Text, Trennzeichen) > 0 Then
strTemp = strTemp & Kapselzeichen & CStr(Zelle.Text) & _
Kapselzeichen & Trennzeichen
Else
strTemp = strTemp & CStr(Zelle.Text) & Trennzeichen
End If
Next
Next
strTemp = "Dateianfang" & vbCrLf & Replace(strTemp, ";", vbCrLf) & "Dateiende"
For a = 1 To 2
Open ActiveWorkbook.Path & "\" & Dateiname & a & Extension For Output As #1
Print #1, strTemp
Close #1
Next a
End Sub


Gruss Tino

Das Forum lebt von Rückmeldungen!


Anzeige
AW: Dateien splitten beim speichern ?
23.10.2007 16:31:00
andre
Vielen Dank für die Tipps !!! einen kleinen Hänger habe ich noch, bei Tinos Lösung werden die Zeilen am Anfang und am Ende korrekt eingefügt, dafür wurden die Dateien nicht richtig gesplittet ich hatte noch 10000 Zeilen pro Datei und es dauerte extrem lang, bei Ingolfs Lösung klappte das splitten sehr gut dafür fehlten die Zeilen am Anfang und am Ender der Datei.
Wie bekomme ich das noch zusammen ?
Gruß
Andre

AW: Dateien splitten beim speichern ?
23.10.2007 16:56:24
Tino
Hallo,
versuche es mal hiermit, hat bei mir mit 20000 Einträgen 2 Sekunden gebraucht

Sub speichern()
Dim Bereich          As Object
Dim ZZeile            As Object
Dim Zelle              As Object
Dim strTemp         As String
Dim a As Byte
Const Dateiname      As String = "Datei"
Const Extension        As String = ".txt"
Application.ScreenUpdating = False
Set Bereich = ActiveSheet.UsedRange
For Each ZZeile In Bereich.Rows
For Each Zelle In ZZeile.Cells
strTemp = strTemp & CStr(Zelle.Text) & vbCrLf
Next
Next
strTemp = Replace(strTemp, ";", "")
strTemp = "Dateianfang" & vbCrLf & strTemp & "Dateiende"
For a = 1 To 2
Open ActiveWorkbook.Path & "\" & Dateiname & a & Extension For Output As #1
Print #1, strTemp
Close #1
Next a
Application.ScreenUpdating = True
End Sub


Gruss Tino

Das Forum lebt von Rückmeldungen!


Anzeige
AW: Dateien splitten beim speichern ?
23.10.2007 17:22:00
andre
Hallo Tino,
habe es eben probiert aber noch das selbe Problem, er speichert wieder 2 identische Dateien mit vollem gleichem Inhalt und splittet sie nicht auf. Das es bei mir länger dauert kann auch am Text liegen die Zeilen sind sehr lang.
Gruß
André

AW: Dateien splitten beim speichern ?
23.10.2007 17:08:00
IngGi
Hallo Andre,
mein Fehler, das hatte ich überlesen. Hier die Korrektur:

Sub speichern()
Dim Bereich          As Object
Dim ZZeile            As Object
Dim Zelle              As Object
Dim strTemp         As String
Dim intNumber       As Integer
Const Dateiname      As String = "Datei"
Const Extension        As String = ".txt"
Const Trennzeichen  As String = ";"
Const Kapselzeichen As String = ""
Set Bereich = ActiveSheet.UsedRange
Open mypath & Dateiname & "1" & Extension For Output As #1
Print #1, "Dateianfang"
For Each ZZeile In Bereich.Rows
intNumber = intNumber + 1
For Each Zelle In ZZeile.Cells
If InStr(1, Zelle.Text, Trennzeichen) > 0 Then
strTemp = strTemp & Kapselzeichen & CStr(Zelle.Text) & _
Kapselzeichen & Trennzeichen
Else
strTemp = strTemp & CStr(Zelle.Text) & Trennzeichen
End If
Next
strTemp = Left(strTemp, Len(strTemp) - 1)
Print #1, strTemp
strTemp = ""
If intNumber / 3000 = Int(intNumber / 3000) Then
Print #1, "Dateiende"
Close #1
Open mypath & Dateiname & intNumber / 3000 + 1 & Extension For Output As #1
Print #1, "Dateiende"
End If
Next
Print #1, "Dateiende"
Close #1
'Cells.Select
'Selection.Delete Shift:=xlUp
'Range("A1").Select
'Application.Quit
'ThisWorkbook.Close SaveChanges:=False
End Sub

Gruß Ingolf

Anzeige
AW:fehler eingeschlichen?
23.10.2007 17:19:00
Tino
Hallo,
sorry mein fehler!

Sub speichern()
Dim Bereich          As Object
Dim ZZeile            As Object
Dim Zelle              As Object
Dim strTemp         As String
Dim a As Byte
Dim z As Date
z = Time
Const Dateiname      As String = "Datei"
Const Extension        As String = ".txt"
ActiveSheet.UsedRange.Select
Application.ScreenUpdating = False
Set Bereich = ActiveSheet.UsedRange
For Each ZZeile In Bereich.Rows
For Each Zelle In ZZeile.Cells
If Zelle > "" Then strTemp = strTemp & CStr(Zelle.Text) & vbCrLf
Next
Next
strTemp = Replace(strTemp, ";", "")
strTemp = "Dateianfang" & vbCrLf & strTemp & "Dateiende"
For a = 1 To 2
Open ActiveWorkbook.Path & "\" & Dateiname & a & Extension For Output As #1
Print #1, strTemp
Close #1
Next a
MsgBox Format(Time - z, "hh:mm:ss")
Application.ScreenUpdating = True
End Sub


Gruss
Tino

Anzeige
AW: AW:fehler eingeschlichen?
23.10.2007 17:27:40
andre
Es hat geklappt !!! Endlich, Danke vielmals für eure Hilfe sonst säße ich nächste Woche noch davor :-)
läuft perfekt jetzt.
Gruß
André

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige