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

Zusammenführung von 2 Makros - Datei speichern!

Zusammenführung von 2 Makros - Datei speichern!
01.06.2017 13:09:35
2
Hallo,
ich möchte gerne 2 noch separate Makros zusammenführen und diese nacheinander laufen lassen. Könnt ihr mir hier behilflich sein.
1. Makro: Tabellenblatt wird nach einem Kriterium in einzelne Tabellenblätter gesplittet
2. Makro: Einzelne Tabellenblätter werden dann an einem Ort definierten Ort gespeichert Hier soll es jedoch dann so sein, dass die im ersten Makro erstellten Tabellenblätter nicht in der Datei als neue Tabellenblätter bleiben, sondern nach dem Speichern an dem definierten Ort wieder gelöscht werden.
Über eure Info wäre ich euch sehr dankbar.
Die beiden Makros sehen wie folgt aus:
1.
Option Explicit
Sub KritToSheet()
Dim objShSource As Worksheet, objSh As Worksheet
Dim rng As Range, rngCopy As Range
Dim varTemp As Variant
Dim strFind As String, strFirst As String
Dim lngLast As Long, lngAct As Long
Dim rngCol As Range, intCol As Integer
On Error Resume Next
Set rngCol = Application.InputBox("Markieren Sie eine Zelle in der" & vbLf & _
"gewünschten Spalte! (Kriterium)", "Tabelle aufteilen", ActiveCell.Address, Type:=8)
If rngCol Is Nothing Then Exit Sub
intCol = rngCol(1).Column
On Error GoTo ErrExit
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
.Calculation = xlCalculationManual
.Cursor = xlWait
End With
rngCol.Parent.Copy After:=Sheets(Sheets.Count)
Set objShSource = Sheets(Sheets.Count)
With objShSource
lngLast = .Cells(Rows.Count, intCol).End(xlUp).Row
lngAct = lngLast
Do While lngAct > 1
strFind = .Cells(2, intCol)
Set rngCol = .Range(.Cells(2, intCol), .Cells(lngAct, intCol))
Set rng = rngCol.Find(what:=strFind, lookat:=xlWhole)
If Not rng Is Nothing Then
strFirst = rng.Address
Do
If rngCopy Is Nothing Then
Set rngCopy = .Rows(rng.Row)
Else
Set rngCopy = Union(rngCopy, .Rows(rng.Row))
End If
Set rng = rngCol.FindNext(rng)
Loop While Not rng Is Nothing And strFirst  rng.Address
End If
If Not rngCopy Is Nothing Then
Set objSh = Worksheets.Add(After:=Sheets(Sheets.Count))
On Error Resume Next
objSh.Name = strFind
If Err.Number  0 Then
objSh.Name = strFind & Format(Now, " hhmmss")
Err.Clear
End If
On Error GoTo ErrExit
rngCopy.Copy
objSh.Cells(2, 1).PasteSpecial xlValues
objSh.Cells(2, 1).PasteSpecial xlFormats
Application.CutCopyMode = False
objShSource.Rows(1).Copy objSh.Rows(1)
rngCopy.Delete
Set rngCopy = Nothing
Set objSh = Nothing
End If
lngAct = .Cells(Rows.Count, intCol).End(xlUp).Row
Loop
.Delete
End With
ErrExit:
Set objShSource = Nothing
Set rngCol = Nothing
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
.Calculation = xlCalculationAutomatic
.Cursor = xlDefault
End With
End Sub
2.
Sub alle_Tab_als_Datei()
Dim neuname As String
Dim pfad As String
Dim i As Integer
For i = 2 To ActiveWorkbook.Sheets.Count
neuname = Sheets("Upload").Range("A11") & " " & Sheets(i).Name
pfad = "C:\Users\marcel.siebert\Desktop\"
Sheets(i).Copy
ActiveWorkbook.SaveAs pfad & neuname
ActiveWorkbook.Close
Next
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zusammenführung von 2 Makros - Datei speichern!
01.06.2017 14:44:37
2
Hallo Marcel
kurz und schmerzlos, einfach so wie unten!
Man kann beide Codes ineinander schreiben, aber warum diesen unnötigen Aufwand machen? Ich habe auf die Art 5-6 Makros zusammengefasst. Das hat einen grossen Vorteil. Jedes Makro das gut funktioniert ist ein existierendes Makro. Schachtelt man mehrere ineinander und muss dann Fehler suchen wird man verrückt. So sieht man welches laeuft, und laesst sie nacheinander ablaufen. Das können auch 10 Codes sein. Du musst sie nur in der richtigen Reihenfolge mit Call aufrufen.
mfg Piet
Sub Gemeinsame_Makros()
Call KritToSheet
Call alle_Tab_als_Datei
End Sub

Anzeige
Zusammenführung von 2 Makros - Datei speichern!
01.06.2017 14:47:20
2
Vielen Dank.
Aber wie bekomme ich es dann hin, dass die Tabellenblätter, welche durch das erste Makro erzeugt wurden wieder gelöscht werden?
Vielen Dank.
AW: Zusammenführung von 2 Makros - Datei speichern!
01.06.2017 15:37:13
2
Hallo Marcel
anbei drei Codes zum Löschen, such dir aus welcher für dich am besten passt.
Wenn deine Frage damit beantwortet ist den Thread bitte schlieesen, Kontroll Haeckchen nicht setzen!
Es gibt viele Varianten zum Löschen, hier drei Codes als Beispiel. Den passenden Code in "Gemeinsame Makros" mit einfügen.
Wenn dir die Blatt Namen die gelöscht werden müssen bekannt sind geht es am einfachsten mit dem 1. Code.
Den kannst du auf beliebig viele Blaetter erweitern. Nur den richtigen Blatt-Namen und .Delete angeben, Fertig.
Der 2. Code arbeitet über eine For-Next Schleife und prüft alle Blaetter der Datei auf ihren Blatt-Namen. Alle Blatter die -NICHT- gelöscht werden sollen werden auf "ok" setzen. Die anderen werden gelöscht! Hier must du mit İf Then selbst -alle Tabellen- angeben die du erhalten willst. Vergiss bitte keine!! Excel fragt da nicht weiter nach und löscht jedes Blatt ohne "ok"!
Der 3 Code ist auch eine For-Next Schleife mit einem Array. Hier must du die Namen ins Array schreiben und mit Zahl angeben wieviele Tabellen im Array stehen! Die Zahl muss bitte korrekt sein! Jetzt Zahl=3.
Meine Antwort ist vielleicht etwas lang, aber so hast du die Chance das selbst ellegant zu lösen.
mfg Piet

'Zu löschende Blatter sind bekannt !!
Sub Löschen_bekannt()
'Lösch-Warnung abschalten
Application.DisplayAlerts = False
'Alle Blaetter mit bekanntem Namen löschen !!
'Bitte die richtigen Tabellen Namen angeben!!
Worksheets("Neues Blatt1").Delete
Worksheets("Neues Blatt2").Delete
'**  Selbst beliebig erweitern !!
'Lösch-Warnung wieder einschalten
Application.DisplayAlerts = True
End Sub
'Zu löschende Blatt Namen sind -unbekannt- !!
Sub Löschendes_Blatt_unbekannt()
'Lösch-Warnung abschalten
Application.DisplayAlerts = False
'Schleife für ganzes Workbook durchsuchen
For j = Worksheets.Count To 1 Step -1
Blatt = Empty  'immer löschen
'Alle Blaetter die -nicht gelöscht- werden sollen Namentlich angeben !!
'die Okay Variable Blatt wird bei diesen Namen auf "ok" gesetzt !!
If Worksheets(j).Name = "Tabelle1" Then Blatt = "ok"
If Worksheets(j).Name = "Tabelle2" Then Blatt = "ok"
'*** Beliebig erweitern für die ganze Datei, alleTabellen
'nur Blaetter -ohne- "ok" werden gelöscht
If Blatt = Empty Then Worksheets(j).Delete
Next j
'Lösch-Warnung wieder einschalten
Application.DisplayAlerts = True
End Sub
'Zu löschende Blatt Namen sind -unbekannt- !!
Sub Löschendes_Blatt_mitArray()
'Lösch-Warnung abschalten
Application.DisplayAlerts = False
Zahl = 3   'Anzahl Blaetter im Array
For j = Worksheets.Count To 1 Step -1
Blatt = Empty  'immer löschen
'2. Schleife über Tabellen Namen in Array
For i = 1 To Zahl
'Alle Blaetter die -nicht gelöscht- werden sollen im Array angeben !!
'die Okay Variable Blatt wird bei diesen Namen auf "ok" gesetzt !!
Sht = Application.Choose(i, "Tabelle1", "Tabelle2", "Tabelle3")
If Worksheets(j).Name = Sht Then Blatt = "ok": Exit For
Next i
'nur Blaetter -ohne- "ok" werden gelöscht
If Blatt = Empty Then Worksheets(j).Delete
Next j
'Lösch-Warnung wieder einschalten
Application.DisplayAlerts = True
End Sub

Anzeige
Zusammenführung von 2 Makros - Datei speichern!
01.06.2017 19:42:21
2
lasse den Fragesteller entscheiden ob offen.
Es ist Heute nicht mehr üblich eine Rückmeldung zu geben und so ist der Beitrag über 6 Tage offen.

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige