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

Excel - Makro erweitern / Dateien zusammenfügen.

Excel - Makro erweitern / Dateien zusammenfügen.
10.12.2008 14:43:00
Seluaner
Hallo allerseits
Ich habe folgenden Makro - Code aus diversen Tutorials und Lösungen welche ich dank Euch erhalten hatte zusammengestellt:

Sub DateiImport()
'September 2008
Dim varDatei, strText As String, arrTemp As Variant, intI As Integer
Dim intFF As Integer, wks As Worksheet, lngZeile As Long, intLine As Integer
Dim strSp1$, strSp2$, strSp3$, strSp4$, strSp5$
Dim zeile As Long 'Variable um Zeile mit "Generierungsprotokoll" auszulesen und dann zu lö _
schen
'leeres Tabellenblatt "Tabelle 2" wählen
Sheets("Tabelle2").Select
'Textdatei auswählen
varDatei = Application.GetOpenFilename(Filefilter:="Texte(*.txt),*.txt", Title:="Bitte  _
Datendatei öffnen")
If varDatei = False Then Exit Sub
'Suche nach "Generierungsprotokoll" und lösche alles bis und mit der Linie
'zeile = Columns("A:A").Find(What:="Generierungsprotokoll").Row
'Range(Cells(zeile + 1, 1), Cells(1, 1)).EntireRow.Delete
Set wks = ActiveSheet
lngZeile = 1
With wks
'Spaltentitel eintragen
.Cells(lngZeile, 1) = "Aufteiler"
.Cells(lngZeile, 2) = "Position"
.Cells(lngZeile, 3) = "Bestellposition für: Material"
.Cells(lngZeile, 4) = "Werk"
.Cells(lngZeile, 5) = "Sonstiges"
'Spalten formatieren
.Range(.Columns(1), .Columns(5)).VerticalAlignment = xlVAlignTop
.Range(.Columns(1), .Columns(4)).AutoFit
.Columns(5).ColumnWidth = 40
.Columns(5).WrapText = True
End With
intFF = FreeFile()
Open varDatei For Input As #intFF
Do Until EOF(intFF)
Line Input #intFF, strText
If Left(strText, 9) = "Aufteiler" Then 'Zeile 1 aufbereiten
arrTemp = Split(strText, ",")
strSp1 = Trim(arrTemp(0))
strSp2 = Trim(arrTemp(1))
strSp5 = ""
intLine = 1
ElseIf Left(strText, 8) = "Bestellp" Then 'Zeile 2 aufbereiten
arrTemp = Split(strText, ",")
strSp3 = Trim(arrTemp(0))
strSp4 = Left(Trim(arrTemp(1)), 10)
strSp5 = Trim(Mid(arrTemp(1), 12))
strSp5 = VBA.Replace(strSp5, "wurde nicht angele", "wurde nicht angelegt ", 1)
intLine = 2
Else 'Zeile 3 + 4 aufbereiten
strSp5 = strSp5 & strText
intLine = intLine + 1
End If
If intLine = 4 Then '4. Zeile des Datensatzes ist eingelesen
'Daten in Tabelle schreiben
lngZeile = lngZeile + 1
With wks
'führende Nullen bleiben erhalten
.Cells(lngZeile, 1) = "'" & VBA.Replace(strSp1, "Aufteiler ", "", 1)
.Cells(lngZeile, 2) = "'" & VBA.Replace(strSp2, "Position ", "", 1)
.Cells(lngZeile, 3) = "'" & VBA.Replace(strSp3, "Bestellposition für: Material: ", "",  _
_
1)
.Cells(lngZeile, 4) = "'" & VBA.Replace(strSp4, "Werk: ", "", 1)
.Cells(lngZeile, 5) = strSp5
'oder ohne führende Nullen
.Cells(lngZeile, 1) = VBA.Replace(strSp1, "Aufteiler ", "", 1)
.Cells(lngZeile, 2) = VBA.Replace(strSp2, "Position ", "", 1)
.Cells(lngZeile, 3) = VBA.Replace(strSp3, "Bestellposition für: Material: ", "", 1)
.Cells(lngZeile, 4) = VBA.Replace(strSp4, "Werk: ", "", 1)
.Cells(lngZeile, 5) = strSp5
End With
End If
Loop
Close #intFF
'Autofit / Zellenformatierung der Tabelle in Excel:
Rows("1:1").Select
Selection.Font.Bold = True
Columns("A:A").EntireColumn.AutoFit
Columns("B:B").EntireColumn.AutoFit
Columns("C:C").EntireColumn.AutoFit
Columns("D:D").EntireColumn.AutoFit
Columns("E:E").EntireColumn.AutoFit
Cells.Select
Selection.NumberFormat = "0_ ;[Red]-0 "
Range("A1").Select
'fertig aufbereitete Daten aus Tabellenblatt 2 (Aktive Arbeitsmappe) in neue Arbeitsmappe rü _
berkopieren
Cells.Select
Selection.Cut
Workbooks.Add
ActiveSheet.Paste
Windows("Daten_Import.xls").Activate
Sheets("Tabelle1").Select
End Sub


==========================================================================
Mittels diesem Code lese ich also eine vorher ausgewählte Text-Datei ein und bereite sie nach meinen Wünschen auf.
Nun soll der Code um folgende Funktion erweitert werden:
- Es soll zu Makrobeginn ein erstes Textfile ausgewählt werden.
- Es soll dann ein zweites Textfile ausgewählt werden können.
- nun sollen zuerst die beiden ausgewählten Textfile zu einem neuen Textfile zusammengefügt werden, so dass jeder Datensatz nur einmal vorkommt. (steht also in TextfileA z.B. die Zahl 198765 und im TextfileB auch nochmals die Zahl 198765 so soll diese Zahl im neuen erstellten File auch nur einmal stehen.
Erst wenn diese beiden Textfiles zu einem neuen Textfile ohne Doppelte Datensätze zusammengefügt wurden, soll mit dem aufbereiten des Textfiles (gemäss obigem Code) begonnen werden.
Wer kann mir meinen Code so anpassen, dass dieser dann meinen Wünschen gerecht wird ?
HERZLICHEN DANK IM VORAUS FÜR EURE HILFE !!!!

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel - Makro erweitern / Dateien zusammenfügen.
10.12.2008 15:18:00
Wenderhold
hi
kannst da mal ein beispiel für die beiden textfiles zur verfügung stellen ?
dann wird das plastischer !!!!
greeze
e
AW: Excel - Makro erweitern / Dateien zusammenfügen.
10.12.2008 15:40:00
Seluaner
Hi !
Ich habe versucht, mal ein TXT - File wie ich es verwende hochzuladen:
https://www.herber.de/bbs/user/57519.txt
Es sollen nun also zwei solche Dateien (aber der Zeile "Generierungsprotokoll" so zusammengefügt werden, dass in einer neuen Datei die Inhalte beider Dateien (ohne Doppelte Einträge) stehen.
Geht das ?
Erst dann soll die neuerstellte Datei ins Excel importier werden (gemäss bereits bestehendem und funktionierendem Code)
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige