AW: Ja, aber unmöglich ohne Zieldatei-Öffnung,...
23.02.2011 10:49:09
Stefan
Hallo,
die Zieldatei kann im Hintergrund geöffnet und wieder geschlossen werden. Nur der Anwender sollte mit der Zieldatei nichts mehr zu tun haben.
Ich habe mal zwei Beispieldateien hochgeladen (Quell- und Zieldatei). Vielleicht hilft noch folgendes: Ich hatte vor einiger Zeit ein ähnlich
gelagertes Problem (Archiv IDX-Nr 1158172 vom 2010-05-21 13:52:17) für das mir hier wunderbar geholfen wurde mit folgendem Code:
Private Sub CommandButton1_Click()
Dim wksQuelle As Worksheet
Dim rngRow As Range, rngSelektion As Range
Dim wbSammler As Workbook, wksSammler As Worksheet, rngZelle As Range
Dim vKey As Variant, lZeile As Long
'Spalte mit eindeutgem Schlüssel = Spalte B
Const SpalteKey As Long = 2
'Dateiname der Sammeldatei - anpassen !
Const sNameSammler As String = "\\\\Malibu\Projekte\SAP\300_Test\2011\110_Verwaltung\ _
20_Auswertungen\Workflow_GSZ_2011.xlsm"
'Blattname oder Nr des Tabellenblatts in Sammeldatei - ggf. anpassen !
Const vBlattSammler = 1
On Error GoTo Fehler
'Quellblatt und Zell-Selektion Objekt-Variablen zuweisen
Set wksQuelle = ActiveSheet
Set rngSelektion = Selection
'1. Zeile des selektierten Bereichs prüfen
If rngSelektion.Row Sammeldatei") = vbNo Then GoTo Beenden
'Bildschirmaktualisierung und Ereignismakros deaktivieren
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
'Sammeldatei öffnen
Set wbSammler = Workbooks.Open(Filename:=sNameSammler, Ignorereadonlyrecommended:=True)
Set wksSammler = wbSammler.Worksheets(vBlattSammler)
'Keys der Selektion in Sammeldatei suchen und Zeilen kopieren
For Each rngRow In rngSelektion.Rows
vKey = wksQuelle.Cells(rngRow.Row, SpalteKey).Value
Set rngZelle = wksSammler.Columns(SpalteKey).Find(What:=vKey, LookIn:=xlValues, _
lookat:=xlWhole)
With wksSammler
If rngZelle Is Nothing Then
'Neuer Schlüssel
lZeile = .Cells(.Rows.Count, SpalteKey).End(xlUp).Row + 1
Else
'vorhandener Schlüssel
lZeile = rngZelle.Row
End If
End With
wksQuelle.Rows(rngRow.Row).Copy Destination:=wksSammler.Rows(lZeile)
Next
wbSammler.Close savechanges:=True
Beenden:
Fehler:
With Err
Select Case .Number
Case 0 'alles ok
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
Die Spalte mit dem eindeutigen Schlüssel wäre im aktuellen Fall Spalte A ( die eindeutigen Namen der Mitarbeiter).
Der Code bewirkt folgendes:
ich hatte mehrere Arbeitsmappen (Quelldateien), die ständig befüllt werden. Die jeweils neuen Daten werden durch markieren und dann klicken auf einen Button in eine andere Arbeitsmappe (Zieldatei), die sich im Hintergrund öffnet und nach dem hineinkopieren wieder schließt, hineinkopiert (angehängt). Die Dateien haben allesamt die gleiche Struktur.
Ich habe versucht diesen Code meinem aktuellen Problem anzupassen aber meine Kentnisse reichen bei weitem nicht aus.
Vielleicht gibt es ja auch eine andere Möglichkeit das Problem zu lösen.
Viele Grüße Stefan