Sub Stueli_Standard() 'Formartiert TXT-File vom SAP und speichert Stückliste als xlsx in dem Pfad, wo das txt-File ist, ab! Dim oFileDialog As FileDialog Dim strStartPath As String strStartPath = "G:\DATENAUSTAUSCH_HELIX-ACAD\Stückliste" ' \\SERVER-SO-29\clientdaten\kob\AutoCAD\kob.schnabel\DATENAUSTAUSCH_HELIX-ACAD\Stückliste Set oFileDialog = Application.FileDialog(msoFileDialogOpen) With oFileDialog .Title = "Hola, que tal?? Welche Textdatei soll geöffnet werden?" .InitialFileName = strStartPath & "\*.txt" .AllowMultiSelect = False If .Show = True Then path = oFileDialog.SelectedItems(1) End If Workbooks.Open Filename:=path End With 'Hier werden die Spaltenbreiten erstellt Workbooks.OpenText Filename:=path, Origin:= _ xlMSDOS, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1) _ , Array(1, 1), Array(4, 1), Array(5, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array(16, _ 1), Array(58, 1), Array(72, 1), Array(88, 1), Array(90, 1)), TrailingMinusNumbers:= _ True 'Ab hier werden die Spalten sortiert und gelöscht Columns("B:B").Select Columns("B:B").Cut Destination:=Columns("A:A") Columns("K:K").Select Selection.Cut Destination:=Columns("B:B") Columns("D:D").Select Columns("D:D").Cut Destination:=Columns("C:C") Columns("H:H").Select Selection.Cut Destination:=Columns("D:D") Columns("A:D").Select Columns("A:D").EntireColumn.AutoFit Columns("I:I").Select Columns("I:I").Cut Destination:=Columns("E:E") Columns("F:F").Select Selection.Cut Destination:=Columns("H:H") Columns("L:L").Select Selection.Delete Shift:=xlToLeft Columns("G:H").Select Selection.ClearContents 'Hier wird die Kopfzeile erstellt - entweder auf deutsch oder englisch - ist abhängig davon was unten im "ACTIVE-SHEET Namen" steht (D oder E) Dim Dateiname 'Erstellt Variable "Dateiname" Dateiname = ActiveSheet.Name 'Dateiname ist der Name vom aktiven Blatt (Reiter unten) If Right(Dateiname, 1) = "D" Then 'Beginn der Schleife -Ist der erste Buchstabe von Rechts ein "D" Cells(1, 1) = "POS" 'dann mache die Überschriften auf deutsch Cells(1, 2) = "Stck." Cells(1, 3) = "Ident-Nr." Cells(1, 4) = "Benennung" Cells(1, 5) = "Sachnummer" ElseIf Right(Dateiname, 1) = "E" Then 'Beginn der Schleife -Ist der erste Buchstabe von Rechts ein "E" Cells(1, 1) = "POS" 'dann mache die Überschriften auf englisch Cells(1, 2) = "AMT." Cells(1, 3) = "ID-NO." Cells(1, 4) = "DESIGNATION" Cells(1, 5) = "ARTICLE CODE" 'Dann von diesem Dateinamen ab der 2. Stelle wort als Dateinamen verwenden End If 'Hier wird geprüft, ob in einer Zelle in der Spalte A (1) eine 0 (Null) steht, wenn ja, dann wird diese Zeile gelöscht Dim i As Long Application.ScreenUpdating = False For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1 If Cells(i, 1) = "0" Then Rows(i).Delete Next i Application.ScreenUpdating = True 'Hier wird der Text in Zeile 1 formatiert (Fett, zenriert) Range("A1:E1").Select 'markiert Zeile 1 Spalte A bis E Selection.Font.Bold = True 'macht den Text Fett Selection.HorizontalAlignment = xlCenter 'zentriert den Text Columns("G:H").Select 'markiert die Spalten G und H Selection.ClearContents 'löscht die zuvor markierten Spalten Columns("A:E").Select 'markiert Zeile 1 Spalte A bis E Columns("A:E").EntireColumn.AutoFit 'passt Spaltenbreite an Text an 'Ab hier wird Stpckliste markiert, Rahmen/Tabelle gezeichnet und Druckbereich zugewiesen Selection.CurrentRegion.Select 'markiert alle Spalten-Zeilen, worin Text enthalten ist um Tabelle drum rum zu zeichen Selection.Borders(xlInsideVertical).LineStyle = xlContinuous 'zeichnet in markierten Spalten die senkrechten linien Selection.Borders(xlInsideHorizontal).LineStyle = xlContinuous 'zeichnet in markierten Spalten die waagrerechten linien Selection.Borders(xlEdgeLeft).LineStyle = xlContinuous Selection.Borders(xlEdgeTop).LineStyle = xlContinuous Selection.Borders(xlEdgeBottom).LineStyle = xlContinuous Selection.Borders(xlEdgeRight).LineStyle = xlContinuous ActiveSheet.PageSetup.PrintArea = Selection.CurrentRegion.Address 'weist Druckbereich zu 'Ab hier Seiteneinrichtung (Kopf und Fußzeile) With ActiveSheet.PageSetup .CenterHeader = "&F" 'Fügt in Kopfzeile Mitte "Dateipfad ein" .CenterFooter = "&P - &N" 'Fügt in Fußzeile Mitte "Seite von Seiten" ein .CenterHorizontally = True End With 'Erstellt Variablen "Dateiname" aus dem aktiven Blattregister Dateiname = ActiveSheet.Name 'Dateiname ist der Name vom aktiven Blatt (Register unten) If Left(Dateiname, 2) = "00" Then 'Beginn der Schleife -Sind im Dateiname am Anfang (von lins) 2 0 (Nullen) Dateiname = Mid(Dateiname, 3) 'Dann von diesem Dateinamen ab der 3. Stelle Wort als Dateinamen verwenden ElseIf Left(Dateiname, 1) = "0" Then 'Ist im Dateiname am Anfang 1 0 (Null) Dateiname = Mid(Dateiname, 2) 'Dann von diesem Dateinamen ab der 2. Stelle wort als Dateinamen verwenden End If 'Ende der Schleife ActiveSheet.Name = Dateiname ActiveWorkbook.SaveAs Filename:="G:\DATENAUSTAUSCH_HELIX-ACAD\Stückliste\" & Dateiname & ".xlsx", _ FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 'Hier wird geprüft, ob die Wörter Zubehör und Dichtelement-Satz in einer Zeile vorkommen. 'Wenn ja, werden diese Zeile und alle darunter markiert und gelöscht ActiveCell.SpecialCells(xlLastCell).Select ActiveWindow.SmallScroll Up:=30 Antwort = MsgBox("Markiervorgang starten", vbYesNo) i = 1 If Antwort = vbYes Then Do Until Cells(i, 1) = "" If UCase(Cells(i, 3)) Like "*DICHTELEMENT*" Or UCase(Cells(i, 4)) Like "*ZUBEH*" Then Do Until Cells(i, 1) = "" Rows(i).Delete Loop Exit Sub End If i = i + 1 Loop Else MsgBox "Markiervorgang abgebrochen!" End If End Sub