Werte aus verschiedenen Dateien automatisch "sammeln"
Hi zusammen....
man stelle sich eine exceldatei vor. In Spalte A befindet sich ein Dateiname (mit oder ohne Pfad völlig egal)
und zwar einer in zeile 1 einer in zeile 11 einer in zeile 21 etc.. also immer mit 10 zeilen abstand...
Das ganze 8 mal... dann habe ich diese 8 Dateien...
Darin befindet sich jeweils ein Tabellenblatt mit dem Namen Budget Comparison
auf diesem sheet befinden sich im Bereich A1:CZ10 die Daten die ich nun in der Übersichtsdatei brauche...
Also was ich Suche ist ein Makro, mit dem ich die Einzelfiles öffnen kann, dort diesen Bereich kopiere und jeweils im Übersichtsblatt in den bereich B1:DA10, B11:DA20 etc kopieren.
Geht da was? Habe hier nen Makro gefunden und auch mal versucht das umzuschreiben aber irgendwie hab ichs nicht auf die Reihe bekommen. Anbei trotzdem auch mal das Makro.
Vielen Dank für eure Hilfe.
Viele Grüße Philipp
Option Explicit
Sub daten_holen()
Dim rngC As Range, rngBer As Range
Dim strFile As String, strPfad As String
Set rngBer = Range("A8:A" & Cells(Rows.Count, 1).End(xlUp).Row)
Application.ScreenUpdating = False
For Each rngC In rngBer
strPfad = "C:\" & Range("A" & rngC.Row).Value & " -Finale.xls"
strFile = Range("A" & rngC.Row).Value & " -Finale.xls"
Workbooks.Open Filename:=strPfad
Range("C11:C20").Copy
Windows("Übersicht.xls").Activate
Range("CG" & rngC.Row).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Range("A" & rngC.Row).Select
Workbooks(strFile).Close
Next
Application.ScreenUpdating = True
End Sub
Antwort schreiben
Antwort 1 von nighty vom 25.09.2020, 18:29 Options
hi Philipp :-)
prima daumen,ungefaehr so ?
gruss nighty
Option Explicit
Sub DateienLesen()
On Error GoTo fehler
Call EventsOff
Dim DateiName As String, Ansage As String
Dim zaehler As Long
For zaehler = 1 To 80 Step 10
Workbooks.Open Filename:=Worksheets(1).Cells(zaehler, 1)
Workbooks(2).Worksheets("Budget Comparison").Range("A1:CZ10").Copy _
Workbooks(1).Worksheets(1).Cells(zaehler, 2)
Workbooks(2).Close SaveChanges:=True
Next zaehler
Call EventsOn
End
fehler:
If Err = 1004 Then
Ansage = MsgBox("Die angaben in Zelle A" & zaehler & " stimmen nicht")
Else
Err.Raise 1004
End If
End Sub
Public Sub EventsOff()
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub
Public Sub EventsOn()
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub
Antwort 2 von wundi23 vom 28.09.2020, 14:03 Options
Hi Nighty,
erstmal sorry für die etwas verspätete Antwort! funktioniert alles super!
noch eine frage. könnte ich das ganze nicht auch mit pastespecial einfügen sodass ich nur die werte bekomme und keine verknüpfungen?
Viele grüße
Philipp
Antwort 3 von nighty vom 28.09.2020, 15:56 Options
hi Philipp :-)
dann waere das eine variante
gruss nighty
diese zeile ersetzen
Workbooks(1).Worksheets(1).Cells(zaehler, 2)
durch folgende zeile
ThisWorkbook.Worksheets(1).Cells(zaehler + 10, 2).PasteSpecial Paste:=xlValues, Operation:=xlNone
Antwort 4 von nighty vom 28.09.2020, 15:58 Options
hi Philipp :-)
ups korrigiert
gruss nighty
ThisWorkbook.Worksheets(1).Cells(zaehler, 2).PasteSpecial Paste:=xlValues, Operation:=xlNone
Antwort 5 von nighty vom 28.09.2020, 16:01 Options
hi Philipp :-)
oder workbook auch mit indexangabe
gruss nighty
Workbooks(1).Worksheets(1).Cells(zaehler, 2).PasteSpecial Paste:=xlValues, Operation:=xlNone
Antwort 6 von wundi23 vom 29.09.2020, 11:18 Options
Hi Nighty,
bist spitze :)
aber ich hab noch nicht genug *lacht*
wie bekomm ich noch die Formate? weil mit Paste:=xlFormats klappt es leider nicht ;)
Danke schonmal =)
Antwort 7 von nighty vom 02.10.2020, 12:40 OptionsLösung
hi Philipp :-)
du bist schon auf dem richtigen wege,sollte es mit deinem vorschlag nicht gehen,was ich nicht glaube,dann nehme doch mal ein makro auf dann siehst du deine syntax eventuell genauer
gruss nighty