Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - Zellen in andere Datei kopieren

VBA - Zellen in andere Datei kopieren
05.12.2019 19:03:32
Oli
Guten Abend liebe VBA-Freunde,
ich habe ein kleines Problem mit einer Excel-Datei.
Und zwar wie folgt:
Ich möchte das der VBA-Code prüft ob die Zellen in der Spalte D leer sind, wenn dies nicht der Fall ist, soll er diese Daten kopieren und über eine OpenFileDialog-Anfrage in eine weitere Excel-Datei kopieren. Ich muss leider mit Variablen arbeiten, da die Zieldatei unterschiedlich sein kann. Das Tabellenblatt dagegen hat immer den selben Namen.
Als Fehler kommt derzeit in der Zeile Windows(Datei.Name).Activate immer das ein Objekt fehlt. Wenn ich jedoch den Test zum Datei.Name mache mit einer Msg.Box bekomme ich immer den richtigen Namen ausgegeben.
Anbei mal der Code dazu, den ich derzeit zusammengebastelt habe.
Ich würde mich freuen wenn mir jemand helfen kann :)

Sub OeffneDatei()
Dim varDatei As Variant
Dim Datei
Dim str, strPfad, str2 As String
Dim i As Integer
strPfad = ThisWorkbook.Name
varDatei = Application.GetOpenFilename()
If varDatei = False Then
MsgBox "Der Benutzer hat abgebrochen.", vbInformation
Else
Set Datei = GetObject(varDatei)
Workbooks.Open varDatei
Windows(Datei.Name).Activate
Sheets("Projektliste").Select
Sheets("Projektliste").Unprotect
Windows(strPfad).Activate
For i = 1 To 50
If Not Sheets("Übertrag").Cells(i, 4) = "" Then
Sheets("Übertrag").Cells(i, 4).Copy
Windows(Datei.Name).Activate
Sheets("Projektliste").Cells(i + 5, 1).PasteSpecial xlPasteValues
Windows(strPfad).Activate
End If
Next i
End If
Windows(Datei.Name).Activate
Sheets("Projektliste").Protect
Workbooks(Datei.Name).Close savechanges = yes
End Sub


		
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Zellen in andere Datei kopieren
05.12.2019 19:22:23
Rudi
Hallo,
versuch das mal so:
Sub OeffneDatei()
Dim varDatei As Variant
Dim Datei As Workbook
Dim str, strPfad, str2 As String
Dim i As Integer
strPfad = ThisWorkbook.Name
varDatei = Application.GetOpenFilename()
If varDatei = False Then
MsgBox "Der Benutzer hat abgebrochen.", vbInformation
Else
Set Datei = Workbooks.Open(varDatei)
With Datei.Sheets("Projektliste")
.Unprotect
For i = 1 To 50
If Not ThisWorkbook.Sheets("Übertrag").Cells(i, 4) = "" Then
ThisWorkbook.Sheets("Übertrag").Cells(i, 4).Copy
.Cells(i + 5, 1).PasteSpecial xlPasteValues
End If
Next i
.Protect
End With
End If
Datei.Close True
End Sub

Gruß
Rudi
Anzeige
AW: VBA - Zellen in andere Datei kopieren
05.12.2019 19:52:54
Oli
Hallo Rudi,
Super genial, das funktioniert auf anhieb. Vielen Vielen Dank. Da merkt man glatt das man noch in einigen Dingen blutiger Anfänger ist :D
;

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

Zellen in eine andere Excel-Datei kopieren mit VBA


Schritt-für-Schritt-Anleitung

Um mit VBA Daten aus einer Excel-Datei in eine andere zu kopieren, kannst du folgenden Schritten folgen:

  1. Öffne den Visual Basic Editor:

    • Drücke ALT + F11, um den Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke im Projektfenster mit der rechten Maustaste auf „VBAProject (DeineDatei)“ und wähle „Modul einfügen“.
  3. Füge den VBA-Code ein:

    • Kopiere den folgenden VBA-Code in das Modul:
Sub OeffneDatei()
    Dim varDatei As Variant
    Dim Datei As Workbook
    Dim strPfad As String
    Dim i As Integer
    strPfad = ThisWorkbook.Name
    varDatei = Application.GetOpenFilename()

    If varDatei = False Then
        MsgBox "Der Benutzer hat abgebrochen.", vbInformation
    Else
        Set Datei = Workbooks.Open(varDatei)
        With Datei.Sheets("Projektliste")
            .Unprotect
            For i = 1 To 50
                If Not ThisWorkbook.Sheets("Übertrag").Cells(i, 4) = "" Then
                    ThisWorkbook.Sheets("Übertrag").Cells(i, 4).Copy
                    .Cells(i + 5, 1).PasteSpecial xlPasteValues
                End If
            Next i
            .Protect
        End With
    End If
    Datei.Close True
End Sub
  1. Führe das Makro aus:

    • Du kannst das Makro ausführen, indem du im Editor auf „Run“ oder F5 drückst.
  2. Teste das Makro:

    • Wähle eine Excel-Datei aus, um die Daten zu übertragen.

Häufige Fehler und Lösungen

  • Fehler: "Objekt fehlt":

    • Dieser Fehler kann auftreten, wenn der Code versucht, auf ein nicht vorhandenes Objekt zuzugreifen. Stelle sicher, dass das richtige Tabellenblatt in der Zieldatei vorhanden ist.
  • Fehler: "Der Benutzer hat abgebrochen.":

    • Wenn du den Dateiauswahl-Dialog abbrichst, wird diese Nachricht angezeigt. Überprüfe, ob du eine Datei ausgewählt hast.
  • Lösung für das Kopieren von Daten:

    • Stelle sicher, dass du die richtige Syntax für das Kopieren von Zellen verwendest. Im Beispiel oben wird PasteSpecial verwendet, um nur die Werte zu übertragen.

Alternative Methoden

  • Excel-Funktionen:

    • Du kannst auch Excel-Funktionen verwenden, um Daten zu übertragen, z.B. durch Verknüpfungen oder die Funktion KOPIEREN und EINFÜGEN.
  • Power Query:

    • Wenn du regelmäßig Daten aus verschiedenen Dateien importieren möchtest, ist Power Query eine leistungsstarke Alternative, um Daten zu aggregieren und zu transformieren.

Praktische Beispiele

  • Datenübertragung zwischen zwei Mappen:

    • Verwende das oben genannte Makro, um Daten von einem Tabellenblatt in der „Übertrag“-Mappe zu einem bestimmten Tabellenblatt in einer anderen Datei zu kopieren.
  • Kopieren von Werten aus mehreren Zellen:

    • Der Code kann leicht angepasst werden, um auch andere Spalten oder Zeilen zu kopieren, indem du die Indizes in der Schleife änderst.

Tipps für Profis

  • Fehlerüberprüfung einbauen:

    • Füge Fehlerbehandlungsroutinen hinzu, um sicherzustellen, dass dein Makro auch bei unerwarteten Problemen korrekt reagiert.
  • Makros optimieren:

    • Reduziere die Anzahl der Bildschirmaktualisierungen während des Kopierens, um die Ausführungsgeschwindigkeit zu erhöhen:
Application.ScreenUpdating = False
' Dein Code hier
Application.ScreenUpdating = True
  • Benutzerdefinierte Dialoge:
    • Du kannst eigene Dialoge erstellen, um die Benutzererfahrung zu verbessern, während Daten in andere Dateien übertragen werden.

FAQ: Häufige Fragen

1. Frage
Kann ich mehrere Tabellenblätter gleichzeitig kopieren?
Ja, du kannst die Schleife erweitern, um durch alle benötigten Tabellenblätter zu iterieren und die Daten zu kopieren.

2. Frage
Was mache ich, wenn die Zieldatei nicht geöffnet werden kann?
Überprüfe den Pfad und die Berechtigungen der Datei. Stelle sicher, dass die Datei nicht schreibgeschützt 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