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

Forumthread: Daten aus geschlossener Datei kopieren

Daten aus geschlossener Datei kopieren
13.12.2022 12:43:29
duAffentier
Hallo,
diesen Code habe ich gefunden.
Beim kopieren mit .copy werden die Zellen leider verlinkt.
Ich würde hier nur ein Kopieren der Werte wünschen.
Wie kann man dies hier anpassen, das nur die Werte der Quellezellen kopiert werden?

Sub Geschlossene_Arbeitsmappe()
Dim sPfad As String
Dim wbQuelle As Workbook
'ScreenUpdating und PopUps deaktivieren
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Dateipfad der Quelldatei
sPfad = "C:UserskaiweDesktopFebruary.xlsx"
'Prüfen, ob Datei existiert
If Dir(sPfad)  "" Then
'Arbeitsmappe öffnen
Set wbQuelle = Workbooks.Open(sPfad)
'Daten kopieren und einfügen
wbQuelle.Worksheets(1).Range("A2:E7").Copy ThisWorkbook.Worksheets(1).Range("A8")
'Arbeitsmappe schließen
wbQuelle.Close SaveChanges:=False
End If
'ScreenUpdating und PopUps aktivieren
Application.ScreenUpdating = True
Application.DisplayAlerts = True
'Bereitgestellt von VBATrainer: www.vbatrainer.de
End Sub
Quelle:
https://vbatrainer.de/geschlossene-arbeitsmappe/
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus geschlossener Datei kopieren
13.12.2022 12:46:25
Herbert_Grom
Hallo Affentier,
dann musst du nach dem copy einfach eine Zeile .Value = .Value einfügen.
Servus
AW: Daten aus geschlossener Datei kopieren
13.12.2022 12:52:40
Daniel
Hi
Trenne Kopieren und Einfügen in zwei Schritte.
dann kannst du beim Einfügen festlegen, was eingefügt werden soll:
Welche Möglichkeiten es gibt, siehst du im Kontextmenü "Inhalte Einfügen"

 wbQuelle.Worksheets(1).Range("A2:E7").Copy
ThisWorkbook.Worksheets(1).Range("A8").PasteSpecial xlpastevalues 'Werte einfügen
ThisWorkbook.Worksheets(1).Range("A8").PasteSpecial xlpasteFormats 'Formatierungen einfügen  
Excel merkt sich auch den kopierten Inhalt, sodass du für das Einfügen mehrerer Inhalte nicht nochmal kopieren musst.
Das von dir verwendete Copy. Destination entspricht einem xlpasteall
Gruß Daniel
Anzeige
AW: Daten aus geschlossener Datei kopieren
13.12.2022 13:38:49
duAffentier
Hi,
danke. Der 2. Tipp war gut. Ab und an kam beim Testen ein Fehler. Ich übernehme es nun so und baue es ein. Gerade eben gab es keine Fehlermeldung mehr.

Sub Geschlossene_Arbeitsmappe()
Dim sPfad As String
Dim wbQuelle As Workbook
'ScreenUpdating und PopUps deaktivieren
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Dateipfad der Quelldatei
sPfad = "Z:\Urlaubsplan.xlsx"
'Prüfen, ob Datei existiert
If Dir(sPfad)  "" Then
'Arbeitsmappe öffnen
Set wbQuelle = Workbooks.Open(sPfad)
'Daten kopieren und einfügen
wbQuelle.Worksheets(5).Range("A10:NJ25").Copy
ThisWorkbook.Worksheets(1).Range("A1").PasteSpecial xlPasteValues
'ThisWorkbook.Worksheets(2).Range("A1").PasteSpecial xlPasteFormats
'Arbeitsmappe schließen
wbQuelle.Close SaveChanges:=False
End If
'ScreenUpdating und PopUps aktivieren
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Anzeige
;

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
Anzeige

Infobox / Tutorial

Daten aus geschlossener Excel-Datei kopieren


Schritt-für-Schritt-Anleitung

Um Daten aus einer geschlossenen Excel-Datei zu kopieren, kannst Du den folgenden VBA-Code verwenden. Dieser öffnet die Quelldatei, kopiert die gewünschten Werte und schließt die Datei anschließend wieder. Achte darauf, den Dateipfad in deinem Code entsprechend anzupassen.

Sub Geschlossene_Arbeitsmappe()
    Dim sPfad As String
    Dim wbQuelle As Workbook

    'ScreenUpdating und PopUps deaktivieren
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    'Dateipfad der Quelldatei
    sPfad = "C:\Users\kaiwe\Desktop\February.xlsx"

    'Prüfen, ob Datei existiert
    If Dir(sPfad) <> "" Then
        'Arbeitsmappe öffnen
        Set wbQuelle = Workbooks.Open(sPfad)

        'Daten kopieren und einfügen
        wbQuelle.Worksheets(1).Range("A2:E7").Copy
        ThisWorkbook.Worksheets(1).Range("A8").PasteSpecial xlPasteValues

        'Arbeitsmappe schließen
        wbQuelle.Close SaveChanges:=False
    End If

    'ScreenUpdating und PopUps aktivieren
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

Um sicherzustellen, dass nur die Werte kopiert werden, kannst Du zusätzliche Zeilen hinzufügen, wie im folgenden Beispiel:

wbQuelle.Worksheets(1).Range("A2:E7").Copy
ThisWorkbook.Worksheets(1).Range("A8").PasteSpecial xlPasteValues

Häufige Fehler und Lösungen

Fehler 1: Die Quelldatei existiert nicht oder der Pfad ist falsch.
Lösung: Überprüfe den Dateipfad und stelle sicher, dass die Datei im angegebenen Verzeichnis vorhanden ist.

Fehler 2: Fehler beim Kopieren der Daten.
Lösung: Achte darauf, dass Du den richtigen Bereich angibst (z.B. Range("A2:E7")), und dass die Quelldatei geöffnet werden kann.


Alternative Methoden

Eine andere Möglichkeit, Daten aus einer geschlossenen Excel-Datei zu kopieren, besteht darin, die Methode PasteSpecial zu verwenden. Dies ermöglicht dir, spezifisch festzulegen, was kopiert werden soll. Hier ein Beispiel:

wbQuelle.Worksheets(1).Range("A2:E7").Copy
ThisWorkbook.Worksheets(1).Range("A8").PasteSpecial xlPasteValues 'Werte einfügen
ThisWorkbook.Worksheets(1).Range("A8").PasteSpecial xlPasteFormats 'Formatierungen einfügen  

Praktische Beispiele

Hier ist ein praktisches Beispiel, das die oben genannten Methoden kombiniert. Dieses Script öffnet eine Excel-Datei und kopiert die Daten in ein anderes Arbeitsblatt:

Sub Geschlossene_Arbeitsmappe()
    Dim sPfad As String
    Dim wbQuelle As Workbook

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    sPfad = "Z:\Urlaubsplan.xlsx"

    If Dir(sPfad) <> "" Then
        Set wbQuelle = Workbooks.Open(sPfad)

        'Daten kopieren
        wbQuelle.Worksheets(5).Range("A10:NJ25").Copy
        ThisWorkbook.Worksheets(1).Range("A1").PasteSpecial xlPasteValues

        wbQuelle.Close SaveChanges:=False
    End If

    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

Tipps für Profis

  • Nutze Application.ScreenUpdating = False, um das Flackern des Bildschirms zu vermeiden, während das Script läuft.
  • Verwende Application.DisplayAlerts = False, um unerwünschte Bestätigungsdialoge zu unterdrücken.
  • Teste Deine Scripts immer mit einer Kopie der Daten, um unerwünschte Änderungen zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass ich nur die Werte kopiere und keine Formeln?
Du kannst die Methode PasteSpecial mit xlPasteValues verwenden, um nur die Werte zu kopieren.

2. Was mache ich, wenn die geschlossene Datei passwortgeschützt ist?
In diesem Fall musst Du den Passwortschutz entfernen oder das Passwort im Code angeben, um die Datei zu öffnen.

3. Funktioniert dieser Code in allen Excel-Versionen?
Der bereitgestellte VBA-Code sollte in den meisten modernen Excel-Versionen (ab Excel 2010) funktionieren. Achte darauf, dass die VBA-Umgebung aktiviert 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