Clever-Excel-Forum

Normale Version: Bestimmte Tabellen mit VBA in eine andere Mappe verschieben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo VBA-Freunde,

ich knoble wieder mal an einem Problem:
Ich habe verschiedene Arbeitsmappen, aus denen ich bestimmte Tabellen in eine andere Arbeitsmappe kopieren möchte. Alle haben folgenden Tabellenblattnamen
Supply Lot#01 bis Supply Lot#10
oder noch mehr, die Anzahl dieser Tabellen kann ich bestimmen oder
alle Tabellen zwischen der Tabelle "Purchasing Budget hedging" und der Tabelle "Summary" markieren. Zwischen diesen beiden Tabellen stehen die benötigten Tabellen immer.

Wie müsste der Code lauten, der mir die Tabellen markiert (gruppiert)?

Die Makroaufzeichnung bringt mir

Sheets(Array("Supply Lot#01", "Supply Lot#02", "Supply Lot#03", "Supply Lot#04")). _
Select
damit komme ich aber nicht weiter.

Vielen Dank für eure Anregungen schon im voraus.
Hallo Heinz,

kommst Du mit folgenden Beispielen weiter:

Code:
eine Variante
   Dim i As Long
   Dim arr
   arr = Sheets(Array("Supply Lot#01", "Supply Lot#02", "Supply Lot#03", "Supply Lot#04"))
   For i = 0 To UBound(arr) - 1
      'hier kpiervorgang
      Sheets(i).Copy
   Next i
  
'eine andere Variante (Ausschluss der nicht zu kopierenden Tabellen
   Dim i As Long
   For i = 0 To UBound(arr) - 1
      Select Case Sheets(i).Name
         Case "Purchasing ", "Summary"
        
         Case Else
         'hier kpiervorgang
         Sheets(i).Copy
      End Select
   Next i
Hi Heinz.

Das war zu schnell geschrieben, hier noch mal korrigiert

Code:
eine Variante
   Dim i As Long
   Dim arr
   arr = Sheets(Array("Supply Lot#01", "Supply Lot#02", "Supply Lot#03", "Supply Lot#04"))
   For i = 0 To UBound(arr) - 1
      'hier kpiervorgang
      Sheets(i).Copy
   Next i
  
'eine andere Variante (Ausschluss der nicht zu kopierenden Tabellen
   Dim i As Long
   For i = 1 To Sheets.Count
      Select Case Sheets(i).Name
         Case "Purchasing ", "Summary"
        
         Case Else
         'hier kpiervorgang
         Sheets(i).Copy
      End Select
   Next i
Hallo Atilla,

beide Code laufen bei mir auf einen Fehler auf-

Code:
Sub Test()
Dim i As Long
    For i = 0 To UBound(arr) - 1
       Select Case Sheets(i).Name
          Case "Purchasing ", "Summary"
          
          Case Else
          'hier kpiervorgang
          Sheets(i).Copy
       End Select
    Next i
End Sub
hier meldet mir VBA bei For i = 0 To UBound(arr) - 1
Fehler 13: Typen unverträglich

Code:
Sub Test2()
Dim i As Long
    Dim arr
    arr = Sheets(Array("Supply Lot#01", "Supply Lot#02", "Supply Lot#03", "Supply Lot#04"))
    For i = 0 To UBound(arr) - 1
       'hier kpiervorgang
       Sheets(i).Copy
    Next i
End Sub
und hier bei arr = ...
Laufzeitfehler 450, Falsche Anzahl von Argumenten oder ungültige Zuweisung einer Eigenschaft.

Code strukturiert dargestellt durch 3. Button von rechts im Beitragsformular: #
[Bild: smilie.php?smile_ID=1810]
Hallo Heinz,

sorry, mit Copy und passte sollte man umgehen können, mein Fehler.

Jetzt aber:

Code:
'eine Variante
   Dim i As Long
   Dim arr
   arr = Array("Supply Lot#01", "Supply Lot#02", "Supply Lot#03", "Supply Lot#04")
   For i = 0 To UBound(arr) - 1
      'hier kpiervorgang
      Sheets(i).Copy
   Next i
  
'eine andere Variante (Ausschluss der nicht zu kopierenden Tabellen
'   Dim i As Long
   For i = 1 To Sheets.Count
      Select Case Sheets(i).Name
         Case "Purchasing ", "Summary"
        
         Case Else
         'hier kpiervorgang
         Sheets(i).Copy
      End Select
   Next i
End Sub