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

via Makro neue Mappe inklusive Speichern

via Makro neue Mappe inklusive Speichern
01.07.2020 13:29:07
Tim
Hallo zusammen,
ich habe ein Makro welches mir Daten aus einer Mappe in einer neue Mappe übernimmt, das funktioniert perfekt. Die neue Herausforderung besteht darin, aus der Ursprungsmappe, mehrere einzelne Mappen zu erstellen und jede einzelne unter einen neuen Dateinamen zu speichern.
Als Ausgangspunkt dient die erste Spalte in der Ursprungsmappe. Diese hat verschiedene Nummern, die mehrfach vorkommen, sobald alle Informationen zu den mehrfach vorkommenden Nummern in die neue Mappe übernommen wurde, soll die Datei selbständig gespeichert werden, wer kann mir dabei helfen?
Sub Import()
Dim WbQ As Workbook, WbZ As Workbook, WsQ As Worksheet, wksQ As Worksheet
Dim WsZ As Worksheet
Dim i As Long, letzte As Long, ImportListe As Long
Dim a As Variant, Fehler As Boolean
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Bitte einzulesende Datei wählen..."
.AllowMultiSelect = False
If .Show  -1 Then
MsgBox "Vorgang abgebrochen!", vbInformation
Exit Sub
Else: Pfad = .SelectedItems(1)
End If
End With
Set WbQ = Workbooks.Open(Pfad)
Set WsQ = WbQ.Worksheets(1)
Set WbZ = Workbooks.Add(template:=xlWBATWorksheet)
Set WsZ = WbZ.Worksheets(1)
Set wksQ = GetObject("O:\Test\Test.xlsx").Worksheets("0815")
letzte = WsQ.Cells(WsQ.Rows.Count, 2).End(xlUp).Row
ImportListe = WsZ.Cells(WsZ.Rows.Count, 1).End(xlUp).Row
For i = 2 To letzte
a = Application.Match(WsQ.Cells(i, 2), wksQ.Columns(1), 0)
If Not IsNumeric(a) Then
Fehler = True
WsQ.Cells(i, 1).Value = WsQ.Cells(i, 1).Value & " nicht gefunden"
WsQ.Cells(i, 1).Interior.ColorIndex = 3
Else
WsZ.Cells(ImportListe + 1, 1) = WsQ.Cells(i, 1)
WsZ.Cells(ImportListe + 1, 2) = wksQ.Cells(a, 2).Value 'Artikelnummer
WsZ.Cells(ImportListe + 1, 3) = "1" 'Menge
ImportListe = ImportListe + 1
End If
Next
With WsZ
.Cells(1, 1) = "Test1"
.Cells(1, 2) = "Test2"
.Cells(1, 3) = "Test3"
End With
If Fehler = True Then MsgBox "Fehlermeldung", 48, "   Hinweis für " & Application.UserName
Set WbQ = Nothing: Set WbZ = Nothing: Set WsQ = Nothing
Set WsZ = Nothing: Set tQ = Nothing: Set wksQ = Nothing
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: via Makro neue Mappe inklusive Speichern
01.07.2020 17:28:52
ralf_b
wenn du den Code geschrieben hast, dann ist der Rest ein Klacks für dich.
Wahrscheinlich hat deshalb auch noch kein Anderer geantwortet.
AW: via Makro neue Mappe inklusive Speichern
01.07.2020 19:19:17
Tim
Hallo Ralf, den Code habe ich nicht selbst geschrieben, der ist Dank des Forums entstanden.
AW: via Makro neue Mappe inklusive Speichern
01.07.2020 22:03:09
ralf_b
Witziger Weise habe ich grade eine sehr sehr ähnliche Aufgabe in einem anderen Forum gelöst.
Du bist nicht zufällig auch anderswo mit deiner Fragestellung unterwegs?
Oder gründet diese Fragestellung in einer Aufgabe eines Informatiklehrers an seine Schüler?
Hand aufs Herz, was geht hier ab?
AW: via Makro neue Mappe inklusive Speichern
02.07.2020 06:02:22
Tim
Ich habe vorher Google befragt um einen oder zum Code zu bekommen aber nein, meine Frage habe ich nur hier gestellt da ich bisher keine Lösung gefunden habe.
Anzeige
AW: via Makro neue Mappe inklusive Speichern
02.07.2020 10:50:28
Tim
Ich habe jetzt etwas gefunden was in die Richtung geht, jedoch kopiert der Code alles. Ich benötige in der neuen Datei nur einzelne Spalten, statt den kompletten Bereich. Hilft euch das um mir zu helfen?
Sub Test()
Dim MyDic As Object, rng As Range, Zelle As Range, ws As Worksheet, wb As Workbook
Dim pfad2 As String
pfad2 = "M:\"
Application.ScreenUpdating = False
Set MyDic = CreateObject("Scripting.Dictionary")
Set ws = ActiveSheet
With ws
Set rng = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
For Each Zelle In rng.Offset(1, 0)
If MyDic(Zelle.Value) = "" And Not IsEmpty(Zelle) Then
MyDic(Zelle.Value) = 1
rng.AutoFilter field:=1, Criteria1:=Zelle
Set wb = Workbooks.Add
.UsedRange.SpecialCells(xlCellTypeVisible).Copy wb.Sheets(1).Cells(1, 1)
wb.SaveAs Filename:=pfad2 & Zelle & "_" & Date & "_" & Format(Time, "hh-mm-ss")  _
& "_" & VBA.Environ("Username") & ".xlsx", FileFormat:=51
wb.Close False
rng.AutoFilter
End If
Next
End With
Application.ScreenUpdating = True
End Sub

Anzeige
AW: via Makro neue Mappe inklusive Speichern
02.07.2020 16:43:12
ralf_b
deine Informationen sind etwas lückenhaft. Hier ist Niemand als Hellseher oder Zauberer unterwegs.
Man benötigt deine Datenstruktur und wie es später aussehen soll. Speziell welche Spalten kopiert werden sollen. Im deinem Beispiel ist dafür die Zeile
.UsedRange.SpecialCells(xlCellTypeVisible).Copy wb.Sheets(1).Cells(1, 1)
zuständig.
wenn du hier nur die bestimmten Spalten haben willst. dann könnte das in etwa so aussehen.
Union(.Range(.Columns(1), .Columns(3), .Columns(8))).SpecialCells(xlCellTypeVisible).Copy wb.Sheets(1).Cells(1, 1)
Hier sollen die Spalten 1,3,8 des aktiven Blattes und davon nur die sichtbaren Zellen kopiert werden. das ist ungetestet.
Anzeige
AW: via Makro neue Mappe inklusive Speichern
02.07.2020 18:31:42
Tim
Ich habe vorher Google befragt um einen oder zum Code zu bekommen aber nein, meine Frage habe ich nur hier gestellt da ich bisher keine Lösung gefunden habe.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige