AW: Daten an best. Stelle in anderer Datei einfügen
25.02.2016 16:54:43
fcs
Hallo Stina,
schau mal, ob du mit dem folgenden Makro klar kommst.
Das Makro musst du in der Datei mit den Monatsdaten in einem allgemeinen Modul einbauen oder in deiner persönlichen Makroarbeitsmappe.
Die Vorlage-Datei sollte geschlossen sein. Das Verzeichnis der Datei musst du im Code anpasen.
Gruß
Franz
Sub Transfer_Monatsdaten()
Dim wks_Q As Worksheet
Dim wkb_Z As Workbook
Dim wks_Z As Worksheet
Dim rngZiel As Range
Dim colA As New Collection, colItem
Dim Zeile As Long, Zeile_Z As Long
On Error GoTo Fehler
With Application
.ScreenUpdating = False
End With
'Quelltabelle setzen
Set wks_Q = ActiveWorkbook.Worksheets("Tabelle1")
'Vorlage schreibgeschützt Öffnen - Verzeichnis der Vorlage anpassen!!!!
Set wkb_Z = Application.Workbooks.Open("D:\Test\Vorlage.xlsx", ReadOnly:=True)
Set wks_Z = wkb_Z.Worksheets(1)
'Begriffe in Spalte A der Quelle sammeln ohne doppelte
With wks_Q
For Zeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(Zeile, 1).Text "" Then
colA.Add Item:=.Cells(Zeile, 1).Text, Key:=.Cells(Zeile, 1).Text
End If
Next
End With
'gefundene Begriffe abarbeiten
For Each colItem In colA
'Zeile mit Begriff in Zieltabelel (Vorlage) ermitteln
With wks_Z
Set rngZiel = .Range("A:A").Find(what:=colItem, LookIn:=xlValues, lookat:=xlWhole)
End With
If Not rngZiel Is Nothing Then
Zeile_Z = rngZiel.Row
With wks_Q
'Zeilen mit Begriff in Quelle suchen und nach Ziel kopieren
For Zeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(Zeile, 1).Text = colItem Then
.Range(.Cells(Zeile, 1), .Cells(Zeile, 22)).Copy wks_Z.Cells(Zeile_Z, 1)
Zeile_Z = Zeile_Z + 1
End If
Next
End With
Else
MsgBox "Eintrag """ & colItem & """ in Zieltabelle nicht gefunden!"
End If
Next
Fehler:
With Err
Select Case .Number
Case 0
Case 457
'Eintrag für Collection mehrfach
Resume Next
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
With Application
.ScreenUpdating = True
End With
End Sub