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

Speichern mit VBA, wenn Datei vorhanden nichts machen

Forumthread: Speichern mit VBA, wenn Datei vorhanden nichts machen

Speichern mit VBA, wenn Datei vorhanden nichts machen
12.11.2025 20:23:44
Timo
Hallo zusammen,

aktuell habe ich mir eine Datei erstellt und ein VBA so gut es funktioniert um eine zweite Datei zu öffnen.
* Dabei wird von der ersten Datei zwei Zellen kopiert und der Inhalt in eine Bestimmte Zelle in der Zweiten Datei eingefügt. Funktioniert.
* Ebenso wird die Zweite Datei unter dem Namen abgespeichert laut Vorgabe.

Mein Problem ist, wenn die Datei schon besteht mit dem Namen darf die Datei nicht überschrieben werden und gespeichert.

Also kurz und knapp, Wenn Dateinamen vorhanden nichts machen.
Bekomme es einfach nicht hin, alleine dieser Code den ich Anhänge habe ich schon eine Ewigkeit gebraucht :-) Profi halt hehehehehe.
Eventuell gibt es eine elegante Lösung dafür.

Sub ZweiteDateiOeffnenUndSpeichern()

Dim quellPfad As String
Dim zielName As String
Dim quellMappe As Workbook
Dim zielMappe As Workbook

' Pfad zur zweiten Datei anpassen
quellPfad = "C:\Users\TimoW\Desktop\Test Datei Excel\Test Datei Excel Bericht.xlsx"

' Zelle anpassen, aus der der Name gelesen werden soll (z.B. A1)
zielName = ThisWorkbook.Sheets("Drucken").Range("J3").Value

Range("J3").Select
Application.CutCopyMode = False
Selection.Copy

' Zweite Datei öffnen
Set quellMappe = Workbooks.Open(quellPfad)

Windows("Test Datei Excel Bericht.xlsx").Activate
Range("C5").Select
ActiveSheet.Paste


Windows("Drucken Chargenblätter 27.08.2025-Linie 8 - 002192 - Rev. 12 - -.xlsm").Activate
Range("J5").Select
Application.CutCopyMode = False
Selection.Copy

Windows("Test Datei Excel Bericht.xlsx").Activate
Range("H5").Select
ActiveSheet.Paste


' Sicherstellen, dass ein gültiger Name vorhanden ist
If zielName = "" Then
MsgBox "Bitte geben Sie einen gültigen Namen in Zelle J3 ein.", vbCritical
quellMappe.Close SaveChanges:=False
Exit Sub
End If


' Aktive Arbeitsmappe speichern
' Speichern Sie die aktuelle Arbeitsmappe unter dem neuen Namen
' Achten Sie darauf, dass Sie den Speicherort selbst festlegen!
ActiveWorkbook.SaveAs Filename:="C:\Users\TimoW\Desktop\Test Datei Excel\" & zielName & ".xlsx", FileFormat:=xlOpenXMLWorkbook


' Wenn Sie die Quelldatei nicht schließen wollen, können Sie diesen Befehl auskommentieren oder löschen
quellMappe.Close SaveChanges:=False

End Sub




Gruß Timo
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speichern mit VBA, wenn Datei vorhanden nichts machen
13.11.2025 02:23:40
Onur
Dim DatNam    

.....
End If


' Aktive Arbeitsmappe speichern
' Speichern Sie die aktuelle Arbeitsmappe unter dem neuen Namen
' Achten Sie darauf, dass Sie den Speicherort selbst festlegen!
DatNam:="C:\Users\TimoW\Desktop\Test Datei Excel\" & zielName & ".xlsx"
On Error Goto ExistiertNicht
Workbooks.Open Filename:= DatNam
Workbooks(DatNam).Close
Exit Sub

ExistiertNicht:
ActiveWorkbook.SaveAs Filename:=DatNam ', FileFormat:=xlOpenXMLWorkbook
End Sub


Anzeige
AW: Speichern mit VBA, wenn Datei vorhanden nichts machen
15.11.2025 01:06:57
Timo
Hallo Zusammen,

konnte mein Problem selber lösen und hänge mal den Code mit an.
Damit ist alles abgedeckt.

Trotzdem danke an alle die mir geholfen haben.


Sub DatenKopierenUndSpeichern()


Dim quellDatei As Workbook
Dim zielDatei As Workbook
Dim quellZelle As Range
Dim zielZelle As Range
Dim quellWert As String
Dim ordnerPfad As String
Dim zielDateiName As String

' Pfad zum Ordner und der zweiten Datei festlegen
ordnerPfad = ThisWorkbook.Path & "\"
Set quellDatei = ThisWorkbook
Set zielDatei = Workbooks.Open(ordnerPfad & "ZweiteDatei.xlsx") ' Passen Sie den Namen an

' Zelle mit dem zu kopierenden Wert festlegen
Set quellZelle = quellDatei.Sheets("Tabelle1").Range("A1") ' Passen Sie Blatt und Zelle an
quellWert = quellZelle.Value

' Zelle, in die der Wert eingefügt werden soll, festlegen
Set zielZelle = zielDatei.Sheets("Tabelle1").Range("B2") ' Passen Sie Blatt und Zelle an
zielZelle.Value = quellWert

' Dateinamen für die neue Datei festlegen
zielDateiName = ordnerPfad & quellWert & ".xlsx"

' Prüfen, ob die Datei bereits existiert
If Dir(zielDateiName) > "" Then
' Wenn ja, schließe sie ohne zu speichern
zielDatei.Close SaveChanges:=False
Else
' Wenn nein, speichere sie unter dem neuen Namen
zielDatei.SaveAs Filename:=zielDateiName
End If

' Rückmeldung für den Benutzer
MsgBox "Der Inhalt wurde erfolgreich in die zweite Datei kopiert und gespeichert/geschlossen."

End Sub
Anzeige
AW: Danke für die Rückmeldung oWt
17.11.2025 11:07:20
Piet
...
AW: Speichern mit VBA, wenn Datei vorhanden nichts machen
13.11.2025 08:28:48
Timo
Hallo Onur,

danke schonmal für deine Unterstützung.

nach dem einfügen des Codes bekomme ich eine Fehlermeldung, Fehler beim Kompilieren: Syntaxfehler

folgendes ist rot Markiert : DatNam:="C:\Users\TimoW\Desktop\Test Datei Excel\" & zielName & ".xlsx"

Hänge mal den aktuellen code wie ich ihn jetzt stehen habe mit an.

Sub ZweiteDateiOeffnenUndSpeichern()

Dim quellPfad As String
Dim zielName As String
Dim quellMappe As Workbook
Dim zielMappe As Workbook
Dim zielPfad As String
Dim zielDateiName As String
Dim existiert As Boolean
Dim DatNam

' Pfad zur zweiten Datei anpassen
quellPfad = "C:\Users\TimoW\Desktop\Test Datei Excel\Test Datei Excel Bericht.xlsx"

' Zelle anpassen, aus der der Name gelesen werden soll (z.B. A1)
zielName = ThisWorkbook.Sheets("Drucken").Range("J3").Value

Range("J3").Select
Application.CutCopyMode = False
Selection.Copy

' Zweite Datei öffnen
Set quellMappe = Workbooks.Open(quellPfad)

Windows("Test Datei Excel Bericht.xlsx").Activate
Range("C5").Select
ActiveSheet.Paste


Windows("test neu Drucken Chargenblätter 27.08.2025-Linie 8 - 002192 - Rev. 12 - -.xlsm").Activate
Range("J5").Select
Application.CutCopyMode = False
Selection.Copy

Windows("Test Datei Excel Bericht.xlsx").Activate
Range("H5").Select
ActiveSheet.Paste


Windows("test neu Drucken Chargenblätter 27.08.2025-Linie 8 - 002192 - Rev. 12 - -.xlsm").Activate
Range("O7").Select
Application.CutCopyMode = False
Selection.Copy

Windows("Test Datei Excel Bericht.xlsx").Activate
Range("j4").Select
ActiveSheet.Paste


' Sicherstellen, dass ein gültiger Name vorhanden ist
If zielName = "" Then
MsgBox "Bitte geben Sie einen gültigen Namen in Zelle J3 ein.", vbCritical
quellMappe.Close SaveChanges:=False
Exit Sub
End If



zielPfad = "C:\Users\TimoW\Desktop\Test Datei Excel\"
zielDateiName = Range("J3").Value ' Beispiel: Der Name kommt aus Zelle A1

' Prüfen, ob die Datei existiert
existiert = Dir(zielPfad & zielDateiName & ".xlsx") > ""

If existiert Then
MsgBox "Die Datei '" & zielDateiName & ".xlsx' existiert bereits. Bitte wählen Sie einen anderen Namen."
Else


End If



' Aktive Arbeitsmappe speichern
' Speichern Sie die aktuelle Arbeitsmappe unter dem neuen Namen
' Achten Sie darauf, dass Sie den Speicherort selbst festlegen!
DatNam:="C:\Users\TimoW\Desktop\Test Datei Excel\" & zielName & ".xlsx"
On Error GoTo ExistiertNicht
Workbooks.Open Filename:=DatNam
Workbooks(DatNam).Close
Exit Sub

ExistiertNicht:
ActiveWorkbook.SaveAs Filename:=DatNam ', FileFormat:=xlOpenXMLWorkbook
End Sub


eventuell habe ich beim einfügen und kopieren einen Fehler eingebaut.

Muss jetzt erstmal ins Bett, hatte Nachtschicht.

schönen Tag, bis Später.
Gruß Timo
Anzeige
AW: Speichern mit VBA, wenn Datei vorhanden nichts machen
13.11.2025 10:05:21
Ulf
Hi,
kein benanntes Argument:
DatNam="C:\Users\TimoW\Desktop\Test Datei Excel\" & zielName & ".xlsx"

hth
Ulf
AW: Speichern mit VBA, wenn Datei vorhanden nichts machen
13.11.2025 10:07:33
Onur
Bitte zum Testen mal die Datei posten.
AW: Speichern mit VBA, wenn Datei vorhanden nichts machen
13.11.2025 16:44:39
Timo
Hallo Onur,

hier die zwei Dateien als Bsp.

Blattschutz ist ohne Passwort angelegt, Berichtanlegen ist unter Modul 5 angelegt bei "Drucken Chargenblätter"


Beispieldatei Drucken (liegt auf Desktop) https://www.herber.de/bbs/user/179623.xlsm

Beispieldatei zum Anlegen (liegt in einem Ordner auf dem Desktop: "Test Datei Excel") https://www.herber.de/bbs/user/179624.xlsx

Danke für deine Hilfe und Mühe.

Gruß Timo
Anzeige
AW: Speichern mit VBA, wenn Datei vorhanden nichts machen
13.11.2025 11:15:08
Piet
Hallo Timo

nach meiner Ansicht lässt sich dein Code stark vereinfachen wenn du auf Copy verzichtest!
Man braucht die Workbooks nicht mit Activate ansteuern. Das geht komplett ohne.
Probier den Code bitte mal in eine Kopie Datei aus, ich konnte ihn nicht testen!

mfg Piet

Sub ZweiteDateiOeffnenUndSpeichern()

Dim quellPfad As String
Dim zielName As String
Dim quellMappe As Workbook
Dim zielMappe As Workbook
Dim zielDateiName As String
Dim quellDateiName As String
Dim DatNam As String

Dim Bericht As Worksheet
Set Bericht = Workbooks("Test Datei Excel Bericht.xlsx").Sheets(1)

' Pfad zur zweiten Datei anpassen
quellPfad = "C:\Users\TimoW\Desktop\Test Datei Excel\"
quellDateiName = "Test Datei Excel Bericht.xlsx"

' Zelle anpassen, aus der der Name gelesen werden soll (z.B. A1)
zielName = ThisWorkbook.Sheets("Drucken").Range("J3").Value
Bericht.Range("C5").Value = zielName

' Zweite Datei öffnen
Set quellMappe = Workbooks.Open(quellPfad)

With Windows("test neu Drucken Chargenblätter 27.08.2025-Linie 8 - 002192 - Rev. 12 - -.xlsm")
Bericht.Range("H5").Value = .Range("J5")
Bericht.Range("J4").Value = .Range("O7")
End With

' Sicherstellen, dass ein gültiger Name vorhanden ist
If zielName = "" Then
MsgBox "Bitte geben Sie einen gültigen Namen in Zelle J3 ein.", vbCritical
quellMappe.Close SaveChanges:=False
Exit Sub
End If

' Prüfen, ob die Datei existiert
If Dir(quellPfad & zielDatei & ".xlsx") > "" Then
zielName = InputBox("Die Datei '" & zielDateiName & ".xlsx' existiert bereits." _
& vbLf & "Bitte wählen Sie einen anderen Namen.")
If zielName = "" Then Exit Sub
End If

' Aktive Arbeitsmappe speichern
' Speichern Sie die aktuelle Arbeitsmappe unter dem neuen Namen
' Achten Sie darauf, dass Sie den Speicherort selbst festlegen!
DatNam = quellPfad & zielName & ".xlsx"
On Error GoTo ExistiertNicht
Workbooks.Open Filename:=DatNam
Workbooks(DatNam).Close
Exit Sub

ExistiertNicht:
ActiveWorkbook.SaveAs Filename:=DatNam ', FileFormat:=xlOpenXMLWorkbook
End Sub
Anzeige
AW: Speichern mit VBA, wenn Datei vorhanden nichts machen
13.11.2025 16:54:10
Timo
Hallo Piet,

bei deinem Code bekomme ich eine Fehlermeldung siehe unten.

Sub ZweiteDateiOeffnenUndSpeichern()

Dim quellPfad As String
Dim zielName As String
Dim quellMappe As Workbook
Dim zielMappe As Workbook
Dim zielDateiName As String
Dim quellDateiName As String
Dim DatNam As String

Dim Bericht As Worksheet
Set Bericht = Workbooks("Test Datei Excel Bericht.xlsx").Sheets(1)


Set Bericht = Workbooks("Test Datei Excel Bericht.xlsx").Sheets(1)
dieser Teil ist gelb hinterlegt mit der Meldung: Index außerhalb des Gültigen Bereich.

Gruß Timo, danke schonmal.
Anzeige
AW: Speichern mit VBA, wenn Datei vorhanden nichts machen
13.11.2025 19:52:04
Timo
Hallo nochmal,

eventuell könnte ich das ganze nochmal vereinfachen wenn beide Dateien in einem Ordner liegen und eine Verknüpfung der "Drucken Datei" auf den Desktop
legen.
* Das heißt, der Speicherort etc. ist immer dort wo die Datei liegt inkl. die Zweite Datei die geöffnet, beschrieben und gespeichert wird, somit müsste beim ändern des Speicherorts der Pfad nicht angepasst werden im Code.

Ich muss mal schauen wie das bewerkstelligt bekomme.

Gruß Timo

Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige