04.07.2018, 11:58
(Dieser Beitrag wurde zuletzt bearbeitet: 04.07.2018, 14:49 von WillWissen.
Bearbeitungsgrund: Codetags
)
Hallo zusammen,
mein Ziel ist es ein Makro zu schreiben mit dem ich durch starten im Mastersheet Dateien auswählen kann von denen im Zweiten Reiter die Daten aus A7:H22 kopiert und im Mastersheet untereinander eingefügt werden.
Ich habe mir folgenden Code aus dem Internet zusammenkopiert.
Das Makro läuft soweit ohne Fehlermeldung durch und ich kann Anfangs auch die Dateien auswählen alelrdings wird nichts in mein Mastersheet kopiert.
Vielen Dank für eure Hilfe und entschuldigt bitte falls es sich im banale Fehler handelt hatte erst letzte Woche meinen VBA einführungskurs :29:
mein Ziel ist es ein Makro zu schreiben mit dem ich durch starten im Mastersheet Dateien auswählen kann von denen im Zweiten Reiter die Daten aus A7:H22 kopiert und im Mastersheet untereinander eingefügt werden.
Ich habe mir folgenden Code aus dem Internet zusammenkopiert.
Code:
Sub Workbook_Open()
' BILDSCHIRMAKTUALISIERUNG (ANZEIGE) AUS!
Application.ScreenUpdating = False
' DIM DER PROJEKTE ALS ARBEITSMAPPEN
Dim wbPro As Workbook
' DIM DES ZIELS ALS ARBEITSMAPPE
Dim wbZiel As Workbook
' DIM DES ZIELS ALS ARBEITSBLATT
Dim wSZiel As Worksheet
' DIM DER ANZAHL DER IN DEN PROJEKTEN ENTHALTENEN BLÄTTER
Dim shcount As Integer
' DIM i FÜR DIE SCHLEIFE DURCH DIE ARBEITSBLÄTTER; JEDES i = EIN BLATT
Dim i As Integer
' DIESE ARBEITSMAPPE ALS ZIEL FESTLEGEN
Set wbZiel = ThisWorkbook
Set wSZiel = wbZiel.Worksheets(1)
' DIMs FÜR DIE DATEIAUSWAHL
Dim filenames, f
Dim x As Integer
Dim myMsg As String
' DATEIDIALOG IM PFAD DIESER MAPPE ÖFFNEN
ChDir ThisWorkbook.Path
' filenames = DIE NAMEN DER AUSGEÄHLTEN PROJEKTE
filenames = Application.GetOpenFilename(FileFilter:="Excel VBA files (*.xls*), *.xls*", _
FilterIndex:=1, _
Title:="Bitte wähle die Projekte aus!", _
MultiSelect:=True)
' WENN filenames NAMEN ENTHÄLT (>0) DANN IST X DIE ANZAHL
If IsArray(filenames) Then
x = UBound(filenames) - LBound(filenames) + 1
myMsg = "Du hast " & x & " Projekte ausgewählt."
'Display full path and name of the files
MsgBox myMsg
Else
MsgBox "Du hast keine Projekte ausgewählt!"
Exit Sub
End If
'######################################
'# BEGINN DES LOOPS durch die Dateien #
'######################################
' f IST DER DATEINAME, ALSO NACHFOLGENDER CODE WIRD FÜR JEDE DATEI DURCHLAUFEN
For Each f In filenames
' "wbPro" IST NUN DIE DATEI MIT DEM NAMEN AUS "f"; DIESE WIRD GEÖFFNET
Set wbPro = Workbooks.Open(Filename:=f)
' ZÄHLUNG DER VORHANDENEN ARBEITSBLÄTTER IN "wbPro"
shcount = wbPro.Worksheets.Count
'######################################
'# BEGINN DES LOOPS durch die Sheets #
'######################################
' JEDES i IST EIN WORKSHEET IN DER ZUR ZEIT GEÖFFNETEN DATEI "f", GENANNT wbPro
' IN DIESEM FALL LOOPT DAS SCRIPT NIHCT DURCH ALLE SHEETS, Sondern nimmt das zweite Sheet
For i = 2 To i = 2
With wbPro.Worksheets(i)
' NEUE ERMITTLUNG DER LETZTEN GEFÜLLTEN ZEILE IM ZIELARBEITSBLATT; HIER IN SPALTE 1 (A)
Dim LR_Ziel As Integer
LR_Ziel = wSZiel.Cells(Rows.Count, 1).End(xlUp).Row
' AKTIVIERUNG DES ZIELS, UM ZELLEN MARKIEREN ZU KÖNNEN
wSZiel.Activate
' MARKIERUNG DER ZELLEN VON SPALTE 1 BIS 8 (A-H), 1 ZEILEN UNTERHALB DER LETZTEN GEFÜLLTEN ZEILE IN C
wSZiel.Range(Cells(LR_Ziel + 1, 1), Cells(LR_Ziel + 1, 8)).Select
' JETZT WIRD DIE LETZTE BESCHRIEBENE ZELLE IM AKTUELLEN BLATT ERMITTELT (LR), HIER IN SPALTE 1
Dim LR As Integer
LR = wbPro.Worksheets(i).Cells(Rows.Count, 1).End(xlUp).Row
'######################################
'# BEGINN DES LOOPS durch das BLATT i #
'######################################
' FÜR JEDES J VON ZEILE 7 (erste Zeile der Daten) BIS LR (letzte beschriebene Zeile)
Dim j As Integer
For j = 7 To LR - 1
' INNERHALB DIESES LOOPS DURCH DIE ZEILEN MUSS LR_Ziel IMMER WIEDER NEU ERMITTELT WERDEN, UM JEDEN EINTRAG UNTER DEN VORHERIGEN ZU SCHREIBEN.
' HIER SCHON IN DER ERMITTLUNG MIT + 1, SODASS LR_Ziel NUN DIE ERSTE LEERE ZEILE IM ZIEL IST
LR_Ziel = wSZiel.Cells(Rows.Count, 1).End(xlUp).Row + 1
' NUN WERDEN INS ZIEL DIE WERTE AUS DER AKTUELLEN ZEILE j WEGGESCHRIEBEN.
wSZiel.Cells(LR_Ziel, 1).Value = wbPro.Cells(j, 1).Value
wSZiel.Cells(LR_Ziel, 2).Value = wbPro.Cells(j, 2).Value
wSZiel.Cells(LR_Ziel, 3).Value = wbPro.Cells(j, 3).Value
wSZiel.Cells(LR_Ziel, 4).Value = wbPro.Cells(j, 4).Value
wSZiel.Cells(LR_Ziel, 5).Value = wbPro.Cells(j, 5).Value
wSZiel.Cells(LR_Ziel, 6).Value = wbPro.Cells(j, 6).Value
wSZiel.Cells(LR_Ziel, 7).Value = wbPro.Cells(j, 7).Value
wSZiel.Cells(LR_Ziel, 8).Value = wbPro.Cells(j, 8).Value
'######################################
'# NÄCHSTE ZEILE IM AKTUELLEN BLATT #
'######################################
Next j
End With
'#########################################
'# NÄCHSTES BLATT IN DER AKTUELLEN DATEI #
'#########################################
Next i
' DATEI FERTIG WEGGESCHRIEBEN!!!!!!!!!
' AKTUELLE DATEI SCHLIESSEN, OHNE SIE ZU SPEICHERN!
wbPro.Close False
'######################################
'# NÄCHSTE DATEI #
'######################################
Next f
' ALLE ZEILEN ALLER BLÄTTER ALLER DATEIEN INS ZIEL GESCHRIEBEN!
' BILDSCHIRMAKTUALISIERUNG (ANZEIGE) WIEDER AN!
Application.ScreenUpdating = True
End Sub
Das Makro läuft soweit ohne Fehlermeldung durch und ich kann Anfangs auch die Dateien auswählen alelrdings wird nichts in mein Mastersheet kopiert.
Vielen Dank für eure Hilfe und entschuldigt bitte falls es sich im banale Fehler handelt hatte erst letzte Woche meinen VBA einführungskurs :29: