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

Worksheets aus Workbook übertragen

Worksheets aus Workbook übertragen
28.04.2021 15:52:02
Dome
Hallo Zusammen,
gibt es eine Möglichkeit den Code umzuschreiben, dass ich eine Arbeitsmappe auswähle und die Arbeitsblätter in meine aktive Arbeitsmappe kopiert werden ?
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "Bitte Report auswählen"
.InitialFileName = "C:\Users\Hallo:)\Downloads"
.Filters.Add "Arbeitsmappen", "*.xls*", 1
If .Show = -1 Then
strDatei = .SelectedItems(1)
End If
End With
If strDatei "" Then
Worksheet ?
End If
Vielen Dank im Voraus !!

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheets aus Workbook übertragen
28.04.2021 16:19:39
EtoPHG
Hallo Dome,
VBA gut, wirklich?
Du präsentierst null, zero, nada, keinen Code zu Deiner Aufgabenstellung (Blätter aus anderen Arbeitsmappen in die aktive Mappe zu kopieren)!
Was also soll man da umschreiben?
Zeichne einen solchen Code mit dem Makrorekorder für eine Datei auf, generalisiere ihn, so dass er auf eine zu öffnende Mappe aus dem FileDialogFilePicker refernziert, iteriere über die Sheets-Collection, schliesse die kopierte Mappe und lass den Benutzer die nächste auswählen.
Gruess Hansueli
AW: Worksheets aus Workbook übertragen
28.04.2021 17:17:34
Yal
Hallo Dome,
Hansueli hat sich ein bisschen "irritiert" ausgedrückt, es ist nicht unbedingt die Formulierung, die man übernehmen sollte. Ich denke, was er zum Ausdruck bringen wollte, ist, dass ein Hilfsuchende von seinen Versuche und Motivation, sein eigenes Problem zu lösen, zeugen und mehr als einen "Da. Problem. Hilfe."-Bestellung ablegen sollte.
Nicht desto trotz. Du hast nach Hilfe gefragt.
Dein Problem wäre tatsächlich mit einem einfachen Einsatz des Makro Recorder schon nah zur Lösung. So habe ich es auch gemacht, nicht nur weil ich nach dem Programmierer-Credo lebe: "mach nicht selber, was der Computer besser kann", sondern weil es nichts einfacheres und sicheres gibt.
Schwierig wäre dann nur noch der Recorder-Schnippseln in das bereit vorhandenen Code einzufügen. Aber für ein "VBA gut" nicht die Rede Wert.
Dann hättest Du schon nach ein paar Minuten folgende Ergebnis:

Sub Worksheets_uebertragen()
Dim twb As Workbook 'ThisWorkbook
Dim qwb As Workbook 'Quell-Workbook
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "Bitte Report auswählen"
.InitialFileName = "C:\Users\Hallo:)\Downloads"
.Filters.Add "Arbeitsmappen", "*.xls*", 1
If .Show = -1 Then strdatei = .SelectedItems(1)
End With
If strdatei  "" Then
Set twb = ThisWorkbook
Set wb = Workbooks.Open(strdatei)
wb.Worksheets.Copy after:=twb.Worksheets(twb.Worksheets.Count)
wb.Close SaveChange:=False
End If
End Sub
Es ist nicht getestet, aber falls Fehler vorhanden wäre, wären sie schnell zu erkennen und zu korrigieren.
VG
Yal
Anzeige
AW: Worksheets aus Workbook übertragen
29.04.2021 08:03:53
Dome
Vielen Dank Yal.
AW: Worksheets aus Workbook übertragen
29.04.2021 09:18:46
Dome
Hallo Yal,
in Zeile: wb.Worksheets.copy after:=twb.Worksheets(twb.Worksheets.Count) bekomme ich einen Fehler.
Ich hab es auch mit dem Macro-Recorder versucht. Leider komm ich nicht auf die Lösung.

Kannst du mir bitte nochmal helfen ?
Vielen Dank !
AW: Worksheets aus Workbook übertragen
29.04.2021 17:18:24
Yal
Hallo Dome,
hmm... hätte ich mir denken sollen: die Funktion "Copy" erwartet einen Worksheet-Name oder einen Array of Worksheet-Namen, nicht eine Ausflistung. Das kann man aus dem Code, den der Recorder ausspuckt, herausnehmen. Insbesondere die Unterscheid zwischen einen Worksheet und mehrere Worksheet übertragen.
Dann muss man jede Worksheet aus dem Worksheets in einen Array packen:

Sub Worksheets_uebertragen()
Dim twb As Workbook 'ThisWorkbook
Dim qwb As Workbook 'Quell-Workbook
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "Bitte Report auswählen"
.InitialFileName = "C:\Users\Hallo:)\Downloads"
.Filters.Add "Arbeitsmappen", "*.xls*", 1
If .Show = -1 Then strdatei = .SelectedItems(1)
End With
If strdatei  "" Then
Set twb = ThisWorkbook
Set wb = Workbooks.Open(strdatei)
wb.Worksheets(SheetsInArray(wb)).Copy after:=twb.Worksheets(twb.Worksheets.Count)
wb.Close SaveChange:=False
End If
End Sub
Private Function SheetsInArray(wb As Workbook)
Dim A(), i
ReDim A(1 To wb.Worksheets.Count)
For i = 1 To wb.Worksheets.Count
A(i) = wb.Worksheets(i).Name
Next
SheetsInArray = A
End Function
Eine Alternative ohne Array wäre:

Sub Worksheets_uebertragen()
Dim twb As Workbook 'ThisWorkbook
Dim qwb As Workbook 'Quell-Workbook
Dim W
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "Bitte Report auswählen"
.InitialFileName = "C:\Users\Hallo:)\Downloads"
.Filters.Add "Arbeitsmappen", "*.xls*", 1
If .Show = -1 Then strdatei = .SelectedItems(1)
End With
If strdatei  "" Then
Set twb = ThisWorkbook
Set wb = Workbooks.Open(strdatei)
Application.ScreenUpdating = False
For Each W In wb.Worksheets
wb.Worksheets(W.Name).Copy after:=twb.Worksheets(twb.Worksheets.Count)
Next
Application.ScreenUpdating = False
wb.Close SaveChange:=False
End If
End Sub
VG
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige