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

Daten aus geschlossener Arbeitsmappe kopieren

Forumthread: Daten aus geschlossener Arbeitsmappe kopieren

Daten aus geschlossener Arbeitsmappe kopieren
13.10.2003 12:28:42
Sarah
Hi,
ich habe das Problem, dass ich aus einer Arbeitsmappe Daten aus einer geschlossenen Arbeitsmappe herauskopieren will. Ich habe folgendes Makro geschrieben:


Private Sub CommandButton1_Click()
Workbooks.Open FileName:="C:\WINNT\...\Mappe2.xls"
Workbooks("Mappe2").Activate
Worksheets("Tabelle1").Select
Range("B3").Select
Selection.Copy
ActiveWindow.Close
Range("B9").Select
ActiveSheet.Paste
End Sub

Wenn ich dieses Makro ausführen will bekomme ich jedoch folgende Fehlermeldung:"Die Select-Methode des Range-Objektes ist Fehlerhaft".
Kann mir irgendwer sagen, wie ich das beheben kann oder kenn einen besseren Weg?

Danke schon mal
Sarah
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus geschlossener Arbeitsmappe kopieren
13.10.2003 12:32:52
Hajo_Zi
Hallo Sarah

für eine einzelene Zelle

Option Explicit
' von Alf Herber Forum
' https://www.herber.de/forum/archiv/52to56/t52834.htm#52840
Sub TestGetValue()
Dim p As String
Dim f As String
Dim s As String
Dim r As String
p = "D:\Eigene Dateien\Hajo\"
f = "Adresse.xls"
s = "Adresse"
r = "B4"
MsgBox GetValue(p, f, s, r)
Worksheets("Tabelle1").Range("A1") = GetValue(p, f, s, r)
End Sub


Private Function GetValue(path, file, sheet, ref)
'   Retrieves a value from a closed workbook
Dim arg As String
'   Make sure the file exists
If Right(path, 1) <> "\" Then path = path & "\"
If Dir(path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If
'   Create the argument
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Range("A1").Address(, , xlR1C1)
'   Execute an XLM macro
GetValue = ExecuteExcel4Macro(arg)
End Function



Falls Code vorhanden wurde dieser getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Das Forum lebt auch von den Rückmeldungen.

http://home.media-n.de/ziplies/

Anzeige
AW: ?????
13.10.2003 12:36:46
Hajo_Zi
Hallo Sarah

mein Ansatz war völlig falsch ich habe mich darauf verlassen das der Betreff stimmt. Dem war aber nicht so.


Falls Code vorhanden wurde dieser getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Das Forum lebt auch von den Rückmeldungen.

http://home.media-n.de/ziplies/

Anzeige
AW: ?????
13.10.2003 12:40:34
Sarah
Danke, ich werde es damit mal versuchen.
Was wolltest du mir mit "der Betreff stimmt nicht" eigentlich sagen?
AW: ?????
13.10.2003 12:42:32
Hajo_Zi
Hallo Sarah

Deine Datei wird in Deinem Code geöffnet und damit ist Sie nicht mehr geschlossen.

Auf Select, Activate usw. kann zu 99% in VBA verzichtet werden.


Falls Code vorhanden wurde dieser getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Das Forum lebt auch von den Rückmeldungen.

http://home.media-n.de/ziplies/

Anzeige
AW: ?????
13.10.2003 12:51:58
Sarah
Kannst du mir vielleicht trotzdem erklären, wie ich den Kopiervogang beenden kann?
AW: ?????
13.10.2003 12:57:45
Hajo_Zi
Hallo Sarah


Private Sub CommandButton1_Click()
Workbooks.Open Filename:="C:\WINNT\...\Mappe2.xls"
Workbooks("Mappe2").Worksheets("Tabelle1").Range("B3").Copy _
Destination:=ThisWorkbook.ActiveSheet.Range("B9")
ActiveWindow.Close
End Sub


Falls Code vorhanden wurde dieser getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Das Forum lebt auch von den Rückmeldungen.

http://home.media-n.de/ziplies/

Anzeige
AW: ?????
13.10.2003 13:17:46
Sarah
Danke!!!
Es hat geklappt! Zwei Wochen Verzweifelung haben ein Ende, jetzt komme ich auch weiter!

MfG
Sarah
AW: Daten aus geschlossener Arbeitsmappe kopieren
13.10.2003 12:34:15
Andi_H
Hi Sarah,

setzte mal bei den Eigenschaften des Buttons TakeFocusOnClick auf false.

Gruß

ANdi
AW: Daten aus geschlossener Arbeitsmappe kopieren
13.10.2003 12:50:53
Sarah
Danke für den Tipp, aber leider bringt er mich nicht weiter, er gibt immernoch die gleiche Fehlermeldung raus.
Anzeige
AW: Daten aus geschlossener Arbeitsmappe kopieren
13.10.2003 12:40:23
Sabine
Wie heißt dein Worksheet wirklich "Tabellel" oder "Tabelle 1"
AW: Daten aus geschlossener Arbeitsmappe kopieren
13.10.2003 12:48:46
Sarah
Es heißt "Tabelle1" das soll eine eins sein (Standartbezeichnung bei Excel halt)
AW: Daten aus geschlossener Arbeitsmappe kopieren
13.10.2003 12:51:27
WernerB.
Hallo Sarah,

teste doch mal dieses Makro in Verbindung mit der dazugehörigen Funktion. Die Quell-Datei muss dazu nicht geöffnet werden; d.h., die ganze Dateiöffnungsprozedur entfällt.
Der Wert (aber keine Formatierung) aus der Quelldatei, Blatt "Tabelle1", Zelle B3, wird ausgelesen und in die Zieldatei, aktives Blatt, Zelle B9, eingetragen.

Function xl4Value(strParam As String) As Variant
xl4Value = ExecuteExcel4Macro(strParam)
End Function


Sub AktualBasismittel()
Dim strSource As String
strSource = "'C:\WINNT\...\Mappe2.xls]Tabelle1'!R3C2"
Range("B9").Value = xl4Value(strSource)
End Sub

Viel Erfolg wünscht
WernerB.

P.S.: Das Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter (siehe Forums-FAQ).
Anzeige
AW: Daten aus geschlossener Arbeitsmappe kopieren
13.10.2003 13:04:42
Sarah
Danke,
ich habe es mal ausprobiert. Jetzt bekomme ich die Fehlermeldung, dass er den ungültigen Pfad "ExecuteExcel4Macro(strParam)"
enthält und da ich diesen Teil sowieso nicht ganz verstanden habe, werde ich diesen Fehler wohl auch nicht ohne Hilfe los. ;-)
AW: Daten aus geschlossener Arbeitsmappe kopieren
13.10.2003 13:47:51
WernerB.
Hallo Sarah,

uuups - ich habe gerade festgestellt, dass mir wohl eine eckige Klammer vor dem Dateinamen verlorengegangen ist.
Außerdem musst Du natürlich die drei Punkte in der Zeile

strSource = "'C:\WINNT\...\[Mappe2.xls]Tabelle1'!R3C2"

schon durch den/die richtigen Ordner des korrekten Pfades Deiner Quelldatei ersetzen.

Funktion und Makro gehören in ein normales Standard-Modul.
Das Makro geht in die Funktion und holt sich da den Wert aus der geschlossenen Datei (mit einer dateiübergreifenden Verknüpfung vergleichbar).
Das "R3C2" am Ende bedeutet Row (Zeile) 3, Column (Spalte) 2; dies entspricht der Zelladresse "B3".
Hier noch mal Funktion und korrigiertes Makro:

Function xl4Value(strParam As String) As Variant
xl4Value = ExecuteExcel4Macro(strParam)
End Function


Sub Sarah()
Dim strSource As String
strSource = "'C:\WINNT\...\[Mappe2.xls]Tabelle1'!R3C2"
Range("B9").Value = xl4Value(strSource)
End Sub

Gruß WernerB.
Anzeige
AW: Daten aus geschlossener Arbeitsmappe kopieren
13.10.2003 13:57:13
Sarah
Danke!
Die eckige Klammer war es! (das mit dem Pfad war mir auch klar!)
Danke jetzt kann ich endlich weitermachen!

Nochmal Tausend Dank
MfG
Sarah
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Daten aus geschlossener Arbeitsmappe kopieren


Schritt-für-Schritt-Anleitung

Um Daten aus einer geschlossenen Arbeitsmappe zu kopieren, kannst Du ein VBA-Makro verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und erstelle ein neues Arbeitsblatt.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu: Rechtsklick auf VBAProject (DeineDatei.xls) > Einfügen > Modul.

  4. Kopiere und füge den folgenden VBA-Code ein:

    Function xl4Value(strParam As String) As Variant
       xl4Value = ExecuteExcel4Macro(strParam)
    End Function
    
    Sub DatenAusGeschlossenerDateiKopieren()
       Dim strSource As String
       strSource = "'C:\Pfad\Zu\Deiner\Datei\[Mappe2.xls]Tabelle1'!R3C2"
       Range("B9").Value = xl4Value(strSource)
    End Sub
  5. Ersetze den Pfad in strSource durch den tatsächlichen Pfad Deiner geschlossenen Excel-Datei.

  6. Schließe den VBA-Editor und kehre zu Excel zurück.

  7. Führe das Makro aus: Drücke ALT + F8, wähle DatenAusGeschlossenerDateiKopieren und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehlermeldung: Ungültiger Pfad

    • Stelle sicher, dass der Pfad zur Datei korrekt ist und die eckige Klammer ([) vor dem Dateinamen nicht vergessen wurde.
  • Fehlermeldung: ExecuteExcel4Macro funktioniert nicht

    • Überprüfe, ob die Excel-Datei tatsächlich geschlossen ist und dass Du den richtigen Zellbezug (z.B. R3C2 für B3) verwendest.
  • Fehlermeldung: Der Bereich kann nicht ausgewählt werden

    • Vermeide die Verwendung von Select und Activate, um die Performance zu verbessern und Fehler zu vermeiden.

Alternative Methoden

Wenn Du keine VBA verwenden möchtest, kannst Du auch die Funktion INDIREKT nutzen, um Daten aus einer geschlossenen Datei zu importieren. Beachte jedoch, dass dies nur funktioniert, wenn die Datei geöffnet ist.

Ein Beispiel:

=INDIREKT("'C:\Pfad\Zu\Deiner\Datei\[Mappe2.xls]Tabelle1'!B3")

Für die Verwendung dieser Methode musst Du sicherstellen, dass die Datei geöffnet ist.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du Daten aus einer geschlossenen Arbeitsmappe auslesen kannst:

  1. Einzelne Zelle auslesen:

    Range("A1").Value = xl4Value("'C:\Pfad\Zur\Datei\[Mappe2.xls]Tabelle1'!R1C1")
  2. Mehrere Zellen in eine andere Arbeitsmappe kopieren:

    Sub KopiereDaten()
       Dim strSource As String
       strSource = "'C:\Pfad\Zur\Datei\[Mappe2.xls]Tabelle1'!R1C1:R10C10"
       Range("A1").Resize(10, 10).Value = xl4Value(strSource)
    End Sub

Tipps für Profis

  • Halte Deine VBA-Codes sauber und vermeide unnötige Select und Activate Befehle.
  • Verwende Option Explicit am Anfang Deiner Module, um sicherzustellen, dass alle Variablen deklariert sind.
  • Stelle sicher, dass Du stets die richtigen Pfade und Zellreferenzen verwendest, um Fehler zu vermeiden.

FAQ: Häufige Fragen

1. Kann ich Daten aus geschlossenen Excel-Dateien ohne VBA auslesen? Ja, jedoch ist dies nur mit eingeschränkten Möglichkeiten und erfordert, dass die Datei geöffnet ist. Die INDIREKT-Funktion kann dabei helfen, aber nur wenn die Datei aktiv ist.

2. Welche Excel-Versionen unterstützen diese Methoden? Die beschriebenen VBA-Methoden funktionieren in den meisten modernen Versionen von Excel, insbesondere in Excel 2010 und später. Achte darauf, dass die Funktion ExecuteExcel4Macro auch in diesen Versionen verfügbar ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige