Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1760to1764
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

Makro zum übernehmen von Zellen

Makro zum übernehmen von Zellen
04.06.2020 10:36:22
Zellen
Hallo miteinander,
Ich möchte ein Excel Datei erstellen die mir eine Übersicht über in einem Ordnerverzeichnis gespeicherte Dateien gibt. Nennen wir es einfach mal das "Masterdoc".
In diesem Masterdoc sollte wie Schaltfläche ein Makro aktiviert werden welches, alle in diesem Ordner befindlichen Dokumente automatisiert öffnet, mir ein paar wenige Daten (Zellen ausließt und ins Masterdoc kopiert. Danach sollten alle Dokumente in dem Ordner System natürlich wieder automatisiert geschlossen werden. Die Dokumente in dem Ordner System sind alle exakt gleich aufgebaut was das auslesen den endsprechenden Zellen relativ einfach machen sollte.
Mein bisheriger Ansatz sieht folgendermaßen aus:
Option Explicit

Sub Dateien_zusammenf?hren()
Dim Zielarbeitsmappe As Object
Dim Quellenarbeitsmappe As Object
Dim Pfad As String
Dim Datei As String
Dim x As Integer
Dim ws As Worksheet
Dim wb As Workbook
Application.ScreenUpdating = False  ' Bildschirm flackert nicht
Application.DisplayAlerts = False ' keine ausgabe von Fehlermeldungen
Set Zielarbeitsmappe = ActiveWorkbook
Pfad = "C:\Beispielpfad\"
Datei = Dir(CStr(Pfad & "*xl*")) ' Code sucht nur nach Excel Dateien
Do While Datei  "" 'Loop der sagt er soll solange Dateien suchen bis es keine mehr gibt
Set Quellenarbeitsmappe = Workbooks.Open(Pfad & Datei, False, True) 'Code öeffnet alle Files
Set wb = ThisWorkbook.Sheets(1)
Set ws = ActiveWorkbook.Sheets(3)
With ws
.Cells(2, 6) = wb.Cells(18, 2)    'Beispielwert Priorität
.Cells(2, 6) = wb.Cells(18, 2)    'Beispielwert Priorität
.Cells(2, 6) = wb.Cells(18, 2)    'Beispielwert Priorität
.Cells(2, 6) = wb.Cells(18, 2)    'Beispielwert Priorität
End With
Quellenarbeitsmappe.Sheets().Copy after:=Zielarbeitsmappe.Sheets(Zielarbeitsmappe.Sheets.Count)  _
_
_
' Zeile, damit der Code nur das erste sheet kopiert
Zielarbeitsmappe.Sheets(Zielarbeitsmappe.Sheets.Count).Name = Datei 'Zeile, damit die Datei  _
namen im Ordner gleich hei?en wie die integrierten Sheets
Quellenarbeitsmappe.Close 'Ausgewertete Datei im Zielordner schlie?en
Datei = Dir()
Loop 'das ganze wiederholen bis alle Dateien durch sind
Application.ScreenUpdating = True
Application.DisplayAlerts = True 'Flackern und Fehlermeldungen wieder aktiviert
MsgBox "Dateien wurden zusammengef?hrt"
Set Zielarbeitsmappe = Nothing
Set Quellenarbeitsmappe = Nothing ' Variablen wieder "aufr?umen"
End Sub

Das öffnen und schließen aller Datei klappt schon, nur eben das übernehmen nicht. (habe den Teil des Codes der mir als Fehler angezeigt wird und bei dem ich nicht verstehe wie ich es machen soll mit '!!!!!!!! markiert.
Oh wichtig wäre glaub noch, das es sich bei der Datei die auszulesen ist um das 3te. Sheet handelt mit dem Namen "Antrag". Im Masterdoc ist das Sheet in das die Infos gespeichert werden das erste Sheet.
Mit dem .Cells(x,x) Befehl erhoffe ich mir relativ flexibel hinterher bestimmen zu können welchen Teil der jeweiligen Datei ausgelesen werden soll.
Falls jemand eine Idee hat wie ich den letzten Step gehen könnte bin ich sehr dankbar.
Sollte ich noch was wichtiges vergessen haben reiche ich die Infos natürlich sofort nach ;-)
Beste Grüße
Bene

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

Betreff
Datum
Anwender
Anzeige
AW: Makro zum übernehmen von Zellen
04.06.2020 10:53:21
Zellen
Moin, Bene!
Wenn ich das richtig lese, sind die Anweisungen für lesen/schreiben verdreht
Set wb = ThisWorkbook.Sheets(1) 'Das ist das Ziel
Set ws = ActiveWorkbook.Sheets(3) 'Die gerade geöffnete Mappe ist aktiv, daher die Quelle
With ws
.Cells(2, 6) = wb.Cells(18, 2)    'kopieren von wb nach ws?
.Cells(2, 6) = wb.Cells(18, 2)
.Cells(2, 6) = wb.Cells(18, 2)
.Cells(2, 6) = wb.Cells(18, 2)
End With
'!!!!!!!!!!!!
Es muss heißen
With wb
.Cells(2, 6) = ws.Cells(18, 2)
.Cells(2, 6) = ws.Cells(18, 2)
.Cells(2, 6) = ws.Cells(18, 2)
.Cells(2, 6) = ws.Cells(18, 2)
End With
Dir ist aber schon klar, dass da jetzt 4x die gleiche Anweisung steht, oder?
Gruß, MCO
Anzeige
AW: Makro zum übernehmen von Zellen
04.06.2020 11:14:48
Zellen
Hey MCO,
Zunächst erstmal vielen Dank für deine Antwort! Also das dass jedes mal der gleiche Befehl ist, ist mir bewusst, hab hier in den Code jetzt mal die Zellen gepackt die ich tatsächlich brauche, das am ende zu adaptieren sollte ja aber nicht das große Problem werden.
Wir wollen ja die gerade geöffneten Workbooks, die dann ja immer das ActiveWorkbook sind im 3ten Sheet ansteuern und dort die Zeilen .Cells(18,2) .Cells(19.2) … usw auslesen und sie dann im Master doc im 1. Sheet in .Cells(2.6) .Cells(2.7)… usw ausgeben
und je nachdem wie viele Dokumente in dem Ordern liegen halt dann immer mehr und mehr anzeigen.
Wird es so klarer was ich erreichen will?
Beste Grüße
Bene
Anzeige
AW: Makro zum übernehmen von Zellen
04.06.2020 11:20:45
Zellen
Öh, ja dann wohl so?
For x = 2 To 4
wb.Cells(x, 6) = ws.Cells(18 - 2 + x, 2)
Next x
Gruß, MCO
AW: Makro zum übernehmen von Zellen
04.06.2020 11:35:02
Zellen
ich bin mir jetzt nicht ganz sicher ob ich dann die definition der Variablen wb und ws auch noch brauche?
und der Code gibt mir einen Fehler raus: 91- Objektvariable oder with Blockvariable nicht festgelegt.
kannst du mir mehr von dem endsprechenden Code zeigen , also quasi alles was zwischen meinen !!!!! stehen sollte?
Beste Grüße
Bene

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige