vba in anderer Datei suchen und bestimmten Bereich kopieren
#1
Hallo zusammen,

ich möchte mich hier als Neuling im Forum vorstellen und hoffe etwas Hilfe bei einem Problem zu bekommen. Vorweg gesagt, ich bin VBA-Anfänger und als Grundgerüst nutze ich meist den Makrorekorder.

Ich habe eine automatisch generierte excel-Datei aus der ich bestimmte Werte herauskopieren möchte - soweit so einfach:

Code:
Option Explicit
   Dim Stamm As String
   Dim source As String

Sub daten_kopieren_montag()
   Stamm = ActiveWorkbook.Name
   source = "mappe1.xlsx"
   Workbooks.Open Filename:="Systempfad" & source
   Workbooks(source).Sheets("Tabelle1").Range("AM123:AM124").Copy          
   Workbooks(Stamm).Sheets("T1").Range("S4:S5").PasteSpecial xlPasteValues
   Workbooks(source).Sheets("Tabelle1").Range("AM135:AM136").Copy          
   Workbooks(Stamm).Sheets("T1").Range("S9:S10").PasteSpecial xlPasteValues
   Workbooks(source).Sheets("Tabelle1").Range("AM111:AM112").Copy          
   Workbooks(Stamm).Sheets("T1").Range("S14:S15").PasteSpecial xlPasteValues
   Workbooks(source).Sheets("Tabelle1").Range("AM117:AM118").Copy        
   Workbooks(Stamm).Sheets("T1").Range("S19:S20").PasteSpecial xlPasteValues
   Workbooks(source).Sheets("Tabelle1").Range("AM141").Copy              
   Workbooks(Stamm).Sheets("T1").Range("S30").PasteSpecial xlPasteValues
   Application.CutCopyMode = False
   Workbooks(source).Close
End Sub

Da sich die Quelldatei immer mal systemseitig verändern kann, kopiert dieser code dann meist nicht mehr die Daten, welche ich benötige. In der hochgeladenen Beispieldatei habe ich das mal vereinfacht dargestellt. (der o.a. code passt nicht zur Beispieldatei) ;)


.xlsx   Mappe1.xlsx (Größe: 13,99 KB / Downloads: 7)

Ich müsste nun excel nach den Namen suchen lassen und dann den jeweils letzten Datensatz in meine Diagrammdatei kopieren. Das Suchen funktioniert eigentlich auch schon ganz gut, jedoch habe ich Schwierigkeiten, die gewünschten Zellen zu kopieren.

Ich hoffe ich habe mein Problem einigermaßen gut beschrieben und hoffe auf gute Anregungen.

Grüße,
Christian
Top
#2
Hallo,

wenn es darum geht, für einen gegebenen Namen die letzen Werte des letzten Tages im Monat zu finden und zu kopieren, ist das relativ problemlos möglich.

Etwas näher am Code: Suche den Namen "Dirk Muster" (oder einen Namen aus einer Liste) und dann die letzten WErte der Zeilen "gesucht und gefunden".

Also spezifiziere die Anfrage so, dass man sie in einen Code umsetzen kann.

mfg
Top
#3
Hallo,

danke für deine rasche Antwort. Also du meinst ich müsste meine Suchanfrage "verschachteln" - das ginge mit findnext oder? Da reicht mein bisheriges Wissen aber leider nicht für aus.  :s

Hier mal ein code-schnibsel, welchen ich mir zusammen gereimt habe:

Code:
Option Explicit
  Dim Stamm As String
  Dim source As String
  Dim C As Range

Sub daten_kopieren_montag()
  Stamm = ActiveWorkbook.Name
  source = "mappe1.xlsx"
  Suchbegriff = "Dirk Muster"
  Suchbegriff1 = "gesucht"
  Suchbegriff2 = "gefunden"
  Workbooks.Open Filename:="Systempfad" & source    
  Set C = Rows("1:100").Find( _             
  What:=Suchbegriff, _
  LookIn:=xlValues, _
  LookAt:=xlPart)
  If C Is Nothing Then
  MsgBox "Nicht gefunden"
Else

  'hier komme ich nicht weiter...wie markiere bzw kopiere ich die gewünschten Zellen?
End Sub

Zum einen bin ich mir noch nicht mal sicher ob ich mit der einen Suchanfrage wirklich in der Quelldatei suche, weil ich beim schrittweisem Testen nur die Rückmeldung "Nicht gefunden" bekommen habe und zum anderem ist mir auch noch nicht ganz klar, wie ich (wenn dann auch die verschachtelte Suche laufen würde) die letzten bzw vorletzten Zellen kopieren kann.

Ich hoffe ihr könnt mir dazu noch mal etwas Hilfestellung geben - Vielen Dank schon mal!!

Grüße,
Top
#4
Hallo

ıch habe mir auch mal ein paar Gedanken gemacht und insgesamt drei Makros geschrieben.

Ein Problem ist das der normale Suchlauf mit Find() bei verbundenen Zellen nicht funktioniert!!  Deshalb habe ich noch eine Version über For Next geschrieben, damit klappt es offenbar.  Es ist sehr umstaendlich sich den Suchwert jedesmal in den Code hineinzuschreiben.  Da liegt man sich besser eine Tabelle mit Namen an, und liest im Programm diese Namen in einer Schleife aus. 

Im Augenblick speichere ich in der Suchliste.  Wenn du den :Code verstehst kannst du ihn beliebig umaendern.  Das grösste Problem scheint mir an die Daten der Zelle "AK123:Ak124" zu kommen. Schau dir meine Lösung an, die ist simpel aber effektiv.  Ich kann in angegebene Zellen speichern, oder mit Zeilen Offset, indem man die Zeile um den Wert "xx" nach unten verschiebt.

Einfach mal anschauen ob was passt.  Mein Code ist sehr einfach geschrieben.  Sonst einfach rückfragen.

mfg Gast  123


Angehängte Dateien
.xlsm   Mappe1 Vba in anderer Datei suchen.xlsm (Größe: 39,18 KB / Downloads: 7)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste