Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1780to1784
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Inhalte aus zweitem Workbook

VBA Inhalte aus zweitem Workbook
24.09.2020 13:54:00
Clara
Hallo zusammen,
hat jemand eine Idee, warum mein unten stehender Code nicht funktioniert? Ziel ist es mittels VBA Inhalt (Prozedur 1) und Tabellenblätter (Prozedur 2) von einem Workbook (Mappe A) in ein anderes Workbook (Mappe B) zu bekommen.
Fehlermeldung:
Prozedur 1/2 - Laufzeitfehler '9': Index außerhalb des gültigen Bereichs (siehe fett markierte Zeile)
Option Explicit
Public wkbData As Workbook
Public Const strWkbData As String = "K:\10_Transferordner\Benutzer\MappeA.xlsm"
Sub TestRangeCopy()
Application.ScreenUpdating = False
Set wkbData = Workbooks.Open(strWkbData)
wkbData.Sheets("Tabelle2").UsedRange.Copy
wkbData.Close False
ThisWorkbook.Sheets("Tabelle2").Range("F8").PasteSpecial
Application.ScreenUpdating = True
End Sub

Sub TestSheetCopy()
Application.ScreenUpdating = False
Set wkbData = Workbooks.Open(strWkbData)
wkbData.Sheets("Tabelle2").Copy
ThisWorkbook.Sheets(Sheets.Count).PasteSpecial
wkbData.Close False
Application.ScreenUpdating = True
End Sub

Danke für jeden Tipp!

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Inhalte aus zweitem Workbook
24.09.2020 14:58:40
ralf_b
heißt die Tabelle wirklich so, oder beziehst du dich auf den Codenamen?
sonst mal die Anführungsstriche wegnehmen. wkbData.Sheets(Tabelle2)
AW: VBA Inhalte aus zweitem Workbook
24.09.2020 15:59:42
Clara
Beziehe mich auf den Codenamen. Hab die Anführungszeichen mal rausgenommen: Fehlermeldung: "Typen unverträglich" in derselben Zeile.
AW: VBA Inhalte aus zweitem Workbook
24.09.2020 17:24:53
ralf_b
war nur ne Idee, evtl. so
wkbData.Tabelle2
AW: VBA Inhalte aus zweitem Workbook
24.09.2020 17:46:31
Clara
Nein, hier wird "Sheets()" benötigt. Leider immer noch keine Lösung.
Danke für deine Ideen.
AW: VBA Inhalte aus zweitem Workbook
24.09.2020 20:59:34
Dieter
Hallo Clara,
der Fehler sagt recht eindeutig, dass es in der Arbeitsmappe, aus der du kopieren willst, kein Blatt gibt, welches den Namen "Tabelle2" hat ("Tabelle2" muss auf dem Blattregister stehen).
Wenn du das 2. Blatt der Arbeitsmappe kopieren willst, dann schreibst du
wkbData.Sheets(2).UsedRange.Copy
Die Blattexistenz könntest du mit einer Funktion prüfen, z.B. so
Sub TestRangeCopy()
Application.ScreenUpdating = False
Set wkbData = Workbooks.Open(strWkbData)
If Not BlattExistiert(wkbData, "Tabelle2") Then
MsgBox """Tabelle2"" existiert nicht"
Exit Sub
End If
wkbData.Sheets("Tabelle2").UsedRange.Copy
wkbData.Close False
ThisWorkbook.Sheets("Tabelle2").Range("F8").PasteSpecial
Application.ScreenUpdating = True
End Sub
Function BlattExistiert(Mappe As Workbook, _
Blattname As String) As Boolean
Dim sh As Object
For Each sh In Mappe.Sheets
If UCase$(sh.Name) = UCase$(Blattname) Then
BlattExistiert = True
Exit Function
End If
Next sh
End Function
Den Kopierbefehl der 2. Prozedur solltest du so schreiben:
  wkbData.Sheets("Tabelle2").Copy _
After:=ThisWorkbook.Sheets(Sheets.Count)
Viele Grüße
Dieter
Anzeige
AW: VBA Inhalte aus zweitem Workbook
25.09.2020 08:28:28
Clara
Guten Morgen Dieter,
so, aber auch nur so funktioniert's:
Sub TestRangeCopy()
Application.ScreenUpdating = False
Set wkbData = Workbooks.Open(strWkbData)
wkbData.Sheets(2).UsedRange.Copy ThisWorkbook.Sheets(1).Range("F8")
wkbData.Close False
Application.ScreenUpdating = True
End Sub

Sub TestSheetCopy()
Application.ScreenUpdating = False
Set wkbData = Workbooks.Open(strWkbData)
wkbData.Sheets(2).Copy After:=ThisWorkbook.Sheets(Sheets.Count)
wkbData.Close False
Application.ScreenUpdating = True
End Sub
Verstehe zwar nicht, warum ich den Namen oder Codenamen nicht verwenden kann, aber ok, dann versuche ich hiermit zu arbeiten. Ich hoffe das bleibt jetzt so.
Danke und einen schönen Tag
Anzeige
AW: VBA Inhalte aus zweitem Workbook
25.09.2020 14:30:40
Dieter
Hallo Clara,
leider war in meinem Code für "TestSheetCopy" noch ein Fehler.
Wenn ThisWorkbook z.B. 3 Blätter hat und wkbData 2 Blätter, dann wird das kopierte Blatt nicht am Ende eingefügt, sondern hinter Blatt 2.
Die Korrektur betrifft nur das Copy-Statement. Es muss lauten:

wkbData.Sheets(2).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)

Du fragst, warum du nicht mit dem Tabellennamen arbeiten kannst, der auf dem Blattregister steht. Selbstverständlich kannst du mit diesem Namen arbeiten. Du musst ihn nur exakt angeben.
Hängt vielleicht am Blattnamen noch ein Blank dran? Ggf. kannst du deine Arbeitsmappe (Daten anonymisiert und verändert) hier hochladen.
Mit dem Namen des Codemoduls der Tabelle kannst du auch arbeiten, aber nur bei Tabellen, die zu ThisWorkbook gehören.
Das Programm "TestRangeCopy" könnte z.B so aussehen

Sub TestRangeCopy()
Application.ScreenUpdating = False
Set wkbData = Workbooks.Open(strWkbData)
wkbData.Sheets(2).UsedRange.Copy
wkbData.Close False
Tabelle2.Range("F8").PasteSpecial
Application.ScreenUpdating = True
End Sub

Viele Grüße
Dieter
Anzeige

153 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige