Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Arbeitsmappe ansprechen

Arbeitsmappe ansprechen
28.01.2014 19:49:19
gerhard
Hallo zusammen,
Bitte um VBA Hilfe,
In einer geöffneten Arbeitsmappe mit dem Namen Datenbank.xls
wird immer nur eine Messdatei mit variablen Namen xyz.xls dazu geladen.
Jetzt sollte auf diese Messdatei jeweils der Bereich von C2 bis D4 in die
Arbeitsmappe Datenbank.xls in die Spalte A und B an das Ende der bisherigen
Daten angefügt werden.
Vielen Dank für eure Hilfe
Gruß Gerhard

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Arbeitsmappe ansprechen
28.01.2014 23:05:06
Uduuh
Hallo,
teste mal:
Sub aaa()
Dim wkb As Workbook, wksDB As Workbook, rngZiel As Range
Set wksDB = Workbooks("Datenbank").Sheets(1)
With wksDB
Set rngZiel = .Cells(Rows.Count, 1).End(xlUp).Offset(1)
End With
For Each wkb In Workbooks
If Not wkb Is wksDB.Parent Then
wkb.Sheets(1).Range("C2:D4").Copy rngZiel
Exit For
End If
Next
End Sub
Gruß aus’m Pott
Udo

Anzeige
AW: Arbeitsmappe ansprechen
29.01.2014 08:02:21
Gerhard
Hallo,
Vielen Dank einmal für die Hilfe,
aber leider läuft das Makro nicht!
Es erscheint die Fehlermeldung:
Laufzeitfehler 9
Index außerhalb des gültigen Bereichs
Anmerkung: Ich habe das Makro auf einem Rechner mit Excel 2003 getestet!
Den Code in die Mappe Datenbank.xls übernommen und eine Messdatei geladen!
Gruß Gerhard

Anzeige
AW: Arbeitsmappe ansprechen
29.01.2014 08:15:52
Hajo_Zi
Hallo Gerhard,
vielleicht reicht, den Typ ergänzen?
Set wksDB = Workbooks("Datenbank.xls").Sheets(1)

AW: Arbeitsmappe ansprechen
29.01.2014 08:51:14
Gerhard
Hallo
Auch diese Änderung bringt eine Fehlermeldung:
Laufzeitfehler 13
Typen unverträglich
Gruß Gerhard

Anzeige
AW: Arbeitsmappe ansprechen
29.01.2014 17:11:14
Rudi
Hallo,
da ist ein Tippfehler.
Es muss wksDB As WorkSheet heißen.
Gruß
Rudi

AW: Arbeitsmappe ansprechen
29.01.2014 20:25:33
gerhard
Vielen Dank Rudi,
das war's
jetzt funktioniert das Makro super
Gruß Gerhard
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Arbeitsmappe ansprechen mit VBA


Schritt-für-Schritt-Anleitung

  1. Öffne die Arbeitsmappe: Stelle sicher, dass die Arbeitsmappe Datenbank.xls geöffnet ist.

  2. Öffne das VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  3. Erstelle ein neues Modul: Klicke auf Einfügen > Modul.

  4. Füge den folgenden Code ein:

    Sub aaa()
       Dim wkb As Workbook, wksDB As Worksheet, rngZiel As Range
       Set wksDB = Workbooks("Datenbank.xls").Sheets(1)
       With wksDB
           Set rngZiel = .Cells(Rows.Count, 1).End(xlUp).Offset(1)
       End With
       For Each wkb In Workbooks
           If Not wkb Is wksDB.Parent Then
               wkb.Sheets(1).Range("C2:D4").Copy rngZiel
               Exit For
           End If
       Next
    End Sub
  5. Führe das Makro aus: Schließe den VBA-Editor und führe das Makro aus, indem Du auf Entwicklertools > Makros > wähle aaa und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Laufzeitfehler 9: Index außerhalb des gültigen Bereichs

    • Ursache: Der Name der Arbeitsmappe könnte falsch sein. Stelle sicher, dass die Arbeitsmappe tatsächlich Datenbank.xls heißt.
    • Lösung: Überprüfe den Namen und ändere den Code in Set wksDB = Workbooks("Datenbank.xls").Sheets(1).
  • Laufzeitfehler 13: Typen unverträglich

    • Ursache: Möglicherweise hast Du wksDB als Workbook und nicht als Worksheet deklariert.
    • Lösung: Ändere Dim wksDB As Workbook in Dim wksDB As Worksheet.

Alternative Methoden

Eine alternative Methode zum Ansprechen einer anderen Arbeitsmappe ist die Verwendung von Workbooks.Open. Hier ist ein Beispiel:

Sub andereArbeitsmappeAnsprechen()
    Dim wkbDatenbank As Workbook
    Set wkbDatenbank = Workbooks.Open("Pfad\zu\Datenbank.xls")
    ' Führe hier deine gewünschten Operationen durch
    wkbDatenbank.Close SaveChanges:=True
End Sub

Praktische Beispiele

Wenn Du die Werte aus einer anderen Arbeitsmappe in Datenbank.xls übertragen möchtest, kannst Du den Bereich C2:D4 wie im Beispiel oben kopieren. Das Ziel ist dabei, die Daten in die Spalten A und B am Ende der bisherigen Daten anzufügen.


Tipps für Profis

  • Verwende Option Explicit: Setze immer Option Explicit am Anfang Deines Moduls, um die Deklaration aller Variablen zu erzwingen. Dies hilft, Tippfehler zu vermeiden.
  • Nutze Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um Deine Makros robuster zu machen. Zum Beispiel:

    On Error GoTo Fehlerbehandlung
    ' Dein Code hier
    Exit Sub
    Fehlerbehandlung:
       MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

FAQ: Häufige Fragen

1. Wie kann ich mit VBA eine andere Arbeitsmappe ansprechen?
Du kannst eine andere Arbeitsmappe einfach durch ihren Namen ansprechen, indem Du sie in den Workbooks-Sammlungen verwendest, wie im Beispiel oben gezeigt.

2. Was ist der Unterschied zwischen Workbook und Worksheet in VBA?
Workbook bezieht sich auf die gesamte Excel-Datei, während Worksheet sich nur auf ein einzelnes Arbeitsblatt innerhalb dieser Datei bezieht. Achte darauf, den richtigen Typ zu wählen, um Fehler zu vermeiden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige