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

Mappe flexible

Forumthread: Mappe flexible

Mappe flexible
24.07.2025 00:29:04
Thomas
Hallo zusammen,

ich habe per Makro Aufzeichnung diesen Code erstellt:
Sub test

Range("G303:G3588").Select
Selection.Copy
Windows("Vorlage.xlsx").Activate
Range("A2").Select
ActiveSheet.Paste
Windows("Hallo_GO6-Special_23122025.csv").Activate
Range("K303:K3587").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Vorlage.xlsx").Activate
Range("P2").Select
ActiveSheet.Paste
Windows("Hallo_GO6-Special_23122025.csv").Activate
Range("T303:T3671").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Vorlage.xlsx").Activate
Range("R2").Select
ActiveSheet.Paste
Range("W8").Select

End Sub

Wir machen täglich eine Datei auf und dann werden spalten kopiert und in Vorlage eingefügt.
Die Datei heute heißt: Hallo_GO6-Special_23122025.csv
morgen heißt die Datei: Hallo_GO6-Special_24122025.csv

kann man die Datei flexible halten wie Hallo_GO6-Special_*.csv

Danke euch :-)
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Mappe flexible
24.07.2025 12:24:57
Aran
Hallo Thomas

Ein paar Infos mehr wären hilfreich.
z.B.
Die Dateien 'Vorlage.xlsx' und 'Hallo_GO6-Special_wieauchimmer.csv'
Ist sichergestellt, dass die beide beim Ausführen des Makros geöffnet sind? Oder müssen die erst geöffnet werden.
Der Name der Hallo-Datei. Wie setzt sich der zusammen? Ist das Ende ein Datum?

Beim Ansprechen einer Datei funktionieren Platzhalter meines Wissens nicht, lasse mich aber gern belehren.

Prinzipiell fallen mir 2 Möglichkeiten ein.
Entweder, wenn das Ende des Dateinamens einer bestimmten Logik folgt, kann man den ja vermutlich erstellen.
Oder alternativ, wenn auch unschön:
Wenn die Datei geöffnet ist und über ein bestimmtes eindeutiges Merkmal verfügt (z.B. Name des Worksheet, fester Wert in einer bestimmten Zelle, ...), dann könnte man per vba alle geöffneten Dateien nach diesem Merkmal durchsuchen und die Datei damit identifizieren. Dazu muss sie aber eben geöffnet sein.

Gruß

Aran
Anzeige
AW: Mappe flexible
24.07.2025 12:25:46
daniel
Hi

hier mal die einfache Variante auf deinem Programmiernieveau
dieser Code darf nur gestartet werden, wenn
- die Vorlagendatei geöffnet ist und dort das Zieltabellenblatt aktiviert ist
- die CSV-Datei, aus der kopiert werden soll, die Aktive Mappe ist.
Der Code speichert die beim Start aktive Mappe in einer Variablen, die dann verwendet werden kann.
du musst hier selber darauf achten, dass die richtige Mappe bei Makrostart aktiv ist.
Sub test2()

Dim wbCSV As Workbook

Set wbCSV = ActiveWorkbook

Range("G303:G3588").Copy
Workbooks("Vorlage.xlsx").Activate
Range("A2").Pastepastespecial xlPasteAll

wbCSV.Activate
Range("K303:K3587").Copy
Workbooks("Vorlage.xlsx").Activate
Range("P2").PasteSpecial xlPasteAll

wbCSV.Activate
Range("T303:T3671").Copy
Workbooks("Vorlage.xlsx").Activate
Range("R2").PasteSpecial xlPasteAll


End Sub




etwas professioneller wäre dann dieses, hier wird zuerst geprüft, ob eine passende CSV- und die Vorlagendatei geöffnet sind.
hierbei ist es egal, welche Mappe gerade aktiv ist, es kann auch die Mappe sein, die das Makro enthält (was immer vorteilhaft ist, weil man sich dann einen Button erstellen kann um das Makro zu starten.

Sub test()

Dim wbCSV As Workbook
Dim wbVorlage As Workbook

'--- Prüfen, ob eine passende CSV-Datei geöffnet ist, das Datum im Dateinamen ist egal
For Each wbCSV In Application.Workbooks
If wbCSV.Name Like "Hallo_Go6_Special*.csv" Then Exit For
Next
If wbCSV Is Nothing Then
MsgBox "Bitte aktuelle CSV-Datei ""Hallo_Go6_Special"" öffnen!", vbCritical
Exit Sub
End If

'--- Prüfen, ob die Vorlage geöffnet ist
For Each wbVorlage In Application.Workbooks
If wbVorlage.Name Like "Vorlage.xlsx" Then Exit For
Next
If wbVorlage Is Nothing Then
MsgBox "Bitte Vorlage öffnen!", vbCritical
Exit Sub
End If

'--- Kopiervorgang von CSV-Datei nach Vorlage durchführen
wbCSV.Sheets(1).Range("G303:G3588").Copy Destination:=Workbooks("Vorlage.xlsx").Sheets("???").Range("A2")
wbCSV.Sheets(1).Range("K303:K3587").Copy Destination:=Workbooks("Vorlage.xlsx").Sheets("???").Range("P2")
wbCSV.Sheets(1).Range("T303:T3671").Copy Destination:=Workbooks("Vorlage.xlsx").Sheets("???").Range("R2")
End Sub


anstelle der "???" müsstest du noch den Namen des Blattes in der Vorlagendatei einfügen, in den die Werte einkopiert werden sollen
Gruß Daniel
Anzeige
AW: Mappe flexible
24.07.2025 12:45:49
GerdL
Moin Thomas!
Sub test4()


Dim Quellblatt As Worksheet, Zielblatt As Worksheet, Wbk As Workbook


For Each Wbk In Application.Workbooks
If Wbk.Name Like "Hallo_GO6-Special_*" Then
Set Quellblatt = Wbk.Sheets(1)
Exit For
End If
Next

If Quellblatt Is Nothing Then Exit Sub

Set Zielblatt = Workbooks("Vorlage.xlsx").Sheets(1)

Quellblatt.Range("G303:G3588").Copy Destination:=Zielblatt.Range("A2")
Quellblatt.Range("K303:K3587").Copy Destination:=Zielblatt.Range("P2")
Quellblatt.Range("T303:T3671").Copy Destination:=Zielblatt.Range("R2")
Application.Goto Zielblatt.Range("W8")

Set Zielblatt = Nothing: Set Quellblatt = Nothing


End Sub

Gruß Gerd
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18