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

Forumthread: VBA, neue Datei erstellen Inhalt kopiere

VBA, neue Datei erstellen Inhalt kopiere
03.03.2020 10:09:10
Gehard
Guten Morgen zusammen,
meine VBA-Kenntnisse sind sehr beschränkt und ich komme alleine einfach nicht weiter.
Simpel gesagt, möchte ich ein Makro erstellen, dass aus der Datei in der ich bin eine neue Excel-Datei erstellt und Inhalte der aktuellen Datei in die neue kopiert. Es geht hier nur darum, die nötigsten Informationen aus der Ausgangsdatei in dem richtigen Format und an der richtigen Stelle in der neuen Datei darzustellen.
Weder die Datei, aus der die Daten kopiert werden, noch die Datei in die die Daten kopiert werden, werden gespeichert.
Die Datei (Exceldatei) in der das Makro ausgeführt wird, wird aus einer anderen Software erstellt und der Name variiert (Der Name setzt sich wie folgt zusammen: "export"JJJJMMTThhmmss").
Also wenn ich diese eine Datei aus der Software am 02.03.2020 um 09:53:31 erstellen würde, wäre der Dateiname "export20200302095331".
Mein Problem sind vor allen die Dateinamen. Da ich dem Makro angeben muss aus welcher Datei Informationen geholt und in welcher Datei Informationen kopiert werden sollen.
Um zu sehen ob das Makro, dass macht was es soll, wäre es toll, wenn es z.B. den Inhalt der Zelle A1 aus der Ursprungsdatei auch gleich in die Zelle A1 der Zieldatei kopieren würde.
Ich hoffe ich habe das alles nicht zu kompliziert geschrieben und würde über Hilfe bei meinem Problem freuen.
Vielen Dank.
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA, neue Datei erstellen Inhalt kopiere
03.03.2020 10:23:59
Werner
Hallo,
der Name der Datei in dem das Makro ist, ist egal. Du kannst diese Datei über ThisWorkbook ansprechen.
Public Sub aaa()
Dim wbNeu As Workbook, wsNeu As Worksheet
Application.ScreenUpdating = False
Set wbNeu = Workbooks.Add
Set wsNeu = wbNeu.Worksheets("Tabelle1")
With ThisWorkbook.Worksheets("Tabelle1")
.Range("A1").Copy wsNeu.Range("A1")
End With
Set wbNeu = Nothing: Set wsNeu = Nothing
End Sub
Gruß Werner
Anzeige
AW: VBA, neue Datei erstellen Inhalt kopiere
03.03.2020 11:00:07
Gehard
Hallo Werner,
vielen Dank.
Ich habe noch folgendes Problem. In der Ursprungsdatei heißt die Tabelle1 nicht Tabelle1 sondern genau wie die Datei ("export"JJJJMMTThhmmss").
Wenn ich folgende passage aus deinem Makro ändere:
With ThisWorkbook.Worksheets("Tabelle1")
und aus Tabelle1 den entsprechenden Dateinamen mache funktioniert es.
Jetzt müsste ich nur noch wissen wie ich dem Makro sage, der Tabellennamen der aktuellen Tabelle ist gleich dem variierenden Dateinamen.
Danke nochmals.
Anzeige
AW: VBA, neue Datei erstellen Inhalt kopiere
03.03.2020 11:15:00
Werner
Hallo,
so:
Public Sub aaa()
Dim wbNeu As Workbook, wsNeu As Worksheet
Dim strBlatt As String
Application.ScreenUpdating = False
strBlatt = Replace(ThisWorkbook.Name, ".xlsm", "")
Set wbNeu = Workbooks.Add
Set wsNeu = wbNeu.Worksheets("Tabelle1")
With ThisWorkbook.Worksheets(strBlatt)
.Range("A1").Copy wsNeu.Range("A1")
End With
Set wbNeu = Nothing: Set wsNeu = Nothing
End Sub
Gruß Werner
Anzeige
AW: VBA, neue Datei erstellen Inhalt kopiere
04.03.2020 11:24:14
Gehard
Hallo Werner,
vielen Dank.
Funktioniert so wie es soll und ich habe wieder etwas dazu gelernt.
Gerne u. Danke für die Rückmeldung. o.w.T.
04.03.2020 13:43:57
Werner
;

Forumthreads zu verwandten Themen

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

Inhalte aus einer Excel-Datei in eine neue Datei kopieren mit VBA


Schritt-für-Schritt-Anleitung

Um eine neue Excel-Datei zu erstellen und Inhalte aus der aktuellen Datei zu kopieren, kannst du das folgende VBA-Makro verwenden. Dieses Skript erstellt eine neue Arbeitsmappe und kopiert den Inhalt der Zelle A1 der aktuellen Datei in die neue Datei.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Gehe zu Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    Public Sub aaa()
       Dim wbNeu As Workbook, wsNeu As Worksheet
       Dim strBlatt As String
       Application.ScreenUpdating = False
    
       ' Aktuellen Blattnamen ermitteln
       strBlatt = Replace(ThisWorkbook.Name, ".xlsm", "")
    
       ' Neue Arbeitsmappe erstellen
       Set wbNeu = Workbooks.Add
       Set wsNeu = wbNeu.Worksheets("Tabelle1")
    
       ' Inhalte kopieren
       With ThisWorkbook.Worksheets(strBlatt)
           .Range("A1").Copy wsNeu.Range("A1")
       End With
    
       Set wbNeu = Nothing
       Set wsNeu = Nothing
    End Sub
  4. Schließe den VBA-Editor und führe das Makro aus, indem du ALT + F8 drückst und das Makro auswählst.


Häufige Fehler und Lösungen

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

    • Lösung: Überprüfe den Namen deines Arbeitsblatts. Stelle sicher, dass das Arbeitsblatt existiert und die Bezeichnung korrekt ist.
  • Fehler: Inhalte werden nicht kopiert.

    • Lösung: Stelle sicher, dass die Quellzelle (z.B. A1) nicht leer ist und das Makro in der richtigen Datei ausgeführt wird.

Alternative Methoden

Eine Alternative zur Verwendung von VBA ist die Nutzung von Excel-Funktionen. Du kannst die Daten manuell kopieren oder die Funktion =A1 in die Zielzelle eingeben, um den Wert zu übernehmen. Dies ist jedoch nur für statische Daten geeignet.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du das Makro anpassen kannst, um mehrere Zellen zu kopieren:

Public Sub copyMultipleCells()
    Dim wbNeu As Workbook, wsNeu As Worksheet
    Dim strBlatt As String
    Application.ScreenUpdating = False

    strBlatt = Replace(ThisWorkbook.Name, ".xlsm", "")
    Set wbNeu = Workbooks.Add
    Set wsNeu = wbNeu.Worksheets("Tabelle1")

    With ThisWorkbook.Worksheets(strBlatt)
        .Range("A1:B10").Copy wsNeu.Range("A1")
    End With

    Set wbNeu = Nothing
    Set wsNeu = Nothing
End Sub

Tipps für Profis

  • Dateinamen dynamisch generieren: Du kannst den Namen der neuen Datei basierend auf dem aktuellen Datum und Uhrzeit erstellen. Dies hilft, Duplikate zu vermeiden.

    Dim dateiName As String
    dateiName = "export_" & Format(Now, "YYYYMMDD_HHMMSS") & ".xlsx"
    wbNeu.SaveAs Filename:=dateiName
  • Automatisierte Speicherung: Wenn du die neue Datei speichern möchtest, kannst du die SaveAs-Methode verwenden, um einen spezifischen Speicherort und Dateinamen festzulegen.


FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um mehr Zellen zu kopieren?
Du kannst die .Range-Methode im Makro anpassen, um mehrere Zellen oder Bereiche zu kopieren. Zum Beispiel: .Range("A1:B2").

2. Welche Excel-Version wird benötigt?
Das gezeigte VBA-Skript funktioniert in den meisten modernen Excel-Versionen, einschließlich Excel 2013, 2016, 2019 und Microsoft 365.

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