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

Tabelle Splitten

Tabelle Splitten
12.09.2015 20:57:11
Dominik
Liebe Community!
Folgende Ausgangslage:
Ich möchte Daten nach jeweils 100 Datensätzen splitten.
Optimal wäre, wenn es die Datensätze jeweils zu 100 Einträgen direkt als *.txt speichert. Da ein Datenvolumen von ungefähr 200'000 Einträgen vorhanden ist, müsste dies in einer Art Stapelverarbeitung geschehen.
Die Dateinamen sollten jeweils fortlaufend nummeriert sein.
Beispieldaten sind in folgender Datei ersichtlich.
Die daten werden genau in dieser Form bereitgestellt.
https://www.herber.de/bbs/user/100148.xlsx
Vielen Dank für die Unterstützung!!
Beste Grüsse
Dom

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle Splitten
12.09.2015 21:20:22
Sepp
Hallo Dom,
so?
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub SaveAsText()
Dim objWB As Workbook
Dim lngRow As Long, lngLast As Long, lngI As Long
Dim lngStep As Long
Dim strPath As String, strFileName As String

On Error GoTo ErrExit

Static CalculationMode As Long

With Application
  .ScreenUpdating = False
  .EnableEvents = False
  CalculationMode = .Calculation
  .Calculation = xlManual
  .DisplayAlerts = False
End With

strPath = "E:\Forum\test2"
If Right(strPath, 1) <> "\" Then strPath = strPath & "\"

Set objWB = Application.Workbooks.Add(xlWBATWorksheet)

With ThisWorkbook.Sheets("Tabelle1")
  lngLast = .Cells(.Rows.Count, 1).End(xlUp).Row
  lngRow = 1
  Do While lngRow <= lngLast
    lngI = lngI + 1
    strFileName = strPath & "Dateiname(" & CStr(lngI) & ").txt"
    .Range(.Cells(lngRow, 1), .Cells(lngRow + 99, 1)).Copy objWB.Sheets(1).Range("A1")
    objWB.SaveAs Filename:=strFileName, FileFormat:=xlTextMSDOS
    lngRow = lngRow + 100
  Loop
  objWB.Close False
End With

ErrExit:

With Err
  If .Number <> 0 Then
    MsgBox "Fehler in Prozedur:" & vbTab & "'SaveAsText'" & vbLf & String(60, "_") & _
      vbLf & vbLf & IIf(Erl, "Fehler in Zeile:" & vbTab & Erl & vbLf & vbLf, "") & _
      "Fehlernummer:" & vbTab & .Number & vbLf & vbLf & "Beschreibung:" & vbTab & _
      .Description & vbLf, vbExclamation + vbMsgBoxSetForeground, _
      "VBA - Fehler in Prozedur - SaveAsText"
    .Clear
  End If
End With

On Error GoTo 0

With Application
  .ScreenUpdating = True
  .EnableEvents = True
  .Calculation = CalculationMode
  .DisplayAlerts = True
  .StatusBar = False
End With

Set objWB = Nothing
End Sub


Gruß Sepp

Anzeige
AW: Tabelle Splitten
12.09.2015 21:52:30
Dominik
Hallo Sepp
Vielen Dank für Deine rasche Rückmeldung.
Habe es eben getestet.
Momentan wird eine neue Mappe erstellt, darin befinden sich 100 Einträge - das sieht schon mal gut aus.
Ich bräuchte jedoch ALLE Einträge - einfach in 100er Blöcken getrennt (je in einer *.txt Datei)
Beim Ausführen des Scripts kommt der Fehler 1004; "Fehler in Prozedur "SaveAsText" // Die Methode SaveAs für das Objekt "_workbook" ist fehlgeschlagen.
Habe den Code in die betroffene Arbeitsmappe kopiert (Alt+F11) - gespeichert und mit F5 ausgeführt.
Mache ich etwas falsche?
Beste Grüsse
Dom

Anzeige
AW: Tabelle Splitten
12.09.2015 21:58:56
Dominik
- Update -
Ich glaube es lag am Dateipfad - die .txt-Files wurden richtig erstellt.
SUPER! Vielen Dank!
Gäbe es die Möglichkeit, dass anstelle von "Dateiname" der Name das xlsm Files + Aufsteigende Nummer übernommen wird?
Grosses Merci!
Gruss
Dom

AW: Tabelle Splitten
12.09.2015 22:11:43
Sepp
Hallo Dom,
ändere diese Zeile:
strFileName = strPath & Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") - 1) & "(" & CStr(lngI) & ").txt"

Gruß Sepp

Anzeige
AW: Tabelle Splitten
12.09.2015 22:44:43
Dominik
Grandios - funktioniert exakt wie gewünscht.
Tausend Dank - hast mir eine genze Menge Arbeit erspart!

Hallo Sepp. Was müsste man ändern,
13.09.2015 10:19:31
WalterK
damit die Ausgabe nicht als .txt- sondern als .xlsx-Datei gespeichert wird.
Besten dank und Servus, Walter

AW: Hallo Sepp. Was müsste man ändern,
13.09.2015 10:23:14
Sepp
Hallo Walter,
die Dateiendung natürlich auf .xlsx ändern und das FileFormat auf xlOpenXMLWorkbook, bzw. 51
Gruß Sepp

Danke, passt! Schönen Sonntag noch. Servus, Walter
13.09.2015 10:29:50
WalterK

AW: Hallo Sepp. Was müsste man ändern,
13.09.2015 16:45:42
Daniel
Hi
besser wäre es, die Dateiendung gar nicht mit anzugeben.
das ist nicht notwendig, weil VBA diese automatisch entsprechend dem gewählten Dateityp vergibt.
sollte man eine falsche Dateiendung im Dateinamen verwenden, dann hängt VBA beim Speichern trotzdem die richtige Endung und man bekommt dann so Dateinamen wie:
"Dein Datei.txt.xlsx"
weil ja mittlerweile Punkte im Dateinamen erlaubt sind.
Gruss Daniel

Anzeige
ich verwende aber keine falsche Endung! o.T.
13.09.2015 16:53:01
Sepp
Gruß Sepp

AW: das hab ich ja auch nicht geschrieben .
13.09.2015 17:22:59
Daniel
x

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige