Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1792to1796
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datei im gleichen Ordner speichern

Datei im gleichen Ordner speichern
27.11.2020 13:01:42
Ulrich
Hallo,
ich habe ein kleines Problem.
Ich habe eine Vorlage-Datei, mit der ich Protokolldateien erzeuge.
Wenn ich die Vorlage Datei öffne wird ja automatische eine XLS Datei mit 1 als Namensendung generiert.
Ziel:
Über ein Makro möchte ich diese Datei mit einem Namen bestehend aus Zelle H1 und Zelle L1 im gleichen Ordner speichern in der auch die Vorlagedatei ist. Danach soll die Vorlagedatei wieder geöffnet werden.
Das Speichern unter dem gewünschten Namen funktioniert schon, nur nicht in dem Ordner in der die Vorlagedatei ist.
Auch ist das Öffnen der Vorlagedatei nach dem Speichern noch nicht integriert.
Kann mir hierbei jemand helfen?
Hier die Datei (müsste dann als Vorlagedatei abgespeichert werden)
https://www.herber.de/bbs/user/141881.xlsx
Viele Grüße Ulli

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei im gleichen Ordner speichern
27.11.2020 13:54:33
Tino
Hallo,
wenn du eine Vorlage öffnest, hat diese keinen Bezug zum Speicherort.
Es wird der in Excel hinterlegte Standardordner verwendet.
Du müsstest beim Speichern der Vorlage, den Ordner irgendwohin schreiben um darauf zurückzugreifen.
Gruß Tino
hier mal eine Variante
27.11.2020 15:05:48
Tino
Hallo,
hier mal eine Variante.
Wenn die Vorlage selbst gespeichert wird,
wird der Pfad als benutzerdefinierte Dokumenteigenschaft gespeichert.
Bevor du die Vorlage speicherst, diesen Code hinterlegen.
Code in DieseArbeitsmappe
Option Explicit
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Dim CP As Object
If ThisWorkbook.FullName Like "*.xlt?" Or ThisWorkbook.FullName Like "*.xlt" Then
For Each CP In ThisWorkbook.CustomDocumentProperties
If CP.Name = "FullPath" Then CP.Delete: Exit For
Next
ThisWorkbook.CustomDocumentProperties.Add Name:="FullPath", _
LinkToContent:=False, _
Type:=msoPropertyTypeString, _
Value:=ThisWorkbook.FullName
Application.EnableEvents = False
ThisWorkbook.Save
Application.EnableEvents = True
End If
End Sub
Code in Tabelle1
Option Explicit
Private Sub CommandButton1_Click()
Call SaveSpezial
End Sub
Code in ein Modul
Option Explicit
Sub SaveSpezial()
Dim CP As Object, sPath$, sName$, sSaveFullName$
For Each CP In ThisWorkbook.CustomDocumentProperties
If CP.Name = "FullPath" Then Exit For
Next
If CP Is Nothing Then
MsgBox "kein Pfad aus Vorlage!", vbExclamation
Exit Sub
End If
sPath = Left$(CP, InStrRev(CP, "\"))
sName = Right$(CP, Len(CP) - InStrRev(CP, "\"))
With Tabelle1
sSaveFullName = sPath & .Range("H1").Value & .Range("L1").Value & ".xlsx"
End With
If Dir(sSaveFullName, vbNormal)  "" Then
If MsgBox("Datei mit den Namen bereits vorhanden!" & vbCr & _
"Soll diese ersetzt werden?" & vbCr & _
sSaveFullName, vbYesNo + vbQuestion) = vbNo Then
Exit Sub
End If
End If
Application.DisplayAlerts = False
Application.EnableEvents = False
ThisWorkbook.SaveAs Filename:=sSaveFullName, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Application.DisplayAlerts = True
Application.EnableEvents = True
Workbooks.Open sPath & sName
ThisWorkbook.Close False
End Sub

Anzeige
AW: hier mal eine Variante
27.11.2020 15:41:54
Ulrich
Hallo Timo,
vielen Danke für deinen Vorschlag.
Ich denke ich kann es auch ohne Vorlagedatei machen.
Ich habe das Makro jetzt so umfunktioniert, das die Datei unter dem gewünschten Namen gespeichert wird und die Ausgangsdatei wieder geöffnet wird.
Jetzt sind beide Dateien geöffnet. Die gespeicherte Datei könnte aber durchaus direkt geschlossen werden.
Ist es möglich dass das Makro die Abgespeicherte Datei schließt und nur die wieder geöffnete Ausgangsdatei geöffnet geöffnet bleibt?
Gruß Ulli
AW: hier mal eine Variante
27.11.2020 17:12:26
Tino
Hallo,
hier ein Code wenn du nicht aus einer Vorlage arbeiten willst.
Den Code in "DieseArbeitsmappe" brauchst du dann nicht mehr, kannst Du löschen!
Sub SaveSpezial()
Dim sPath$, sName$, sSaveFullName$
With ThisWorkbook
sPath = Left$(.FullName, InStrRev(.FullName, "\"))
sName = Right$(.FullName, Len(.FullName) - InStrRev(.FullName, "\"))
End With
With Tabelle1
sSaveFullName = sPath & .Range("H1").Value & .Range("L1").Value & ".xlsx"
End With
If Dir(sSaveFullName, vbNormal)  "" Then
If MsgBox("Datei mit den Namen bereits vorhanden!" & vbCr & _
"Soll diese ersetzt werden?" & vbCr & _
sSaveFullName, vbYesNo + vbQuestion) = vbNo Then
Exit Sub
End If
End If
Application.DisplayAlerts = False
Application.EnableEvents = False
ThisWorkbook.SaveAs Filename:=sSaveFullName, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Application.DisplayAlerts = True
Application.EnableEvents = True
Workbooks.Open sPath & sName
ThisWorkbook.Close False
End Sub
Gruß Tino
Anzeige
AW: hier mal eine Variante
27.11.2020 15:51:48
Ulrich
Bei deinem Code kommt folgender Fehler
Userbild
Gruß Ulli
AW: hier mal eine Variante
27.11.2020 16:42:03
Tino
Hallo,
du müsstest die Datei zuerst als Vorlage speichern.
Durch Workbook_AfterSave wird nach dem speichern der Pfad
zu dieser in der CustomDocumentPropertie FullPath gespeichert.
Evtl. spielt die Groß/Kleinschreibweise noch einen Streich!
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Dim CP As Object
If LCase(ThisWorkbook.FullName) Like "*.xlt?" Or LCase(ThisWorkbook.FullName) Like "*.xlt" Then
For Each CP In ThisWorkbook.CustomDocumentProperties
If CP.Name = "FullPath" Then CP.Delete: Exit For
Next
ThisWorkbook.CustomDocumentProperties.Add Name:="FullPath", _
LinkToContent:=False, _
Type:=msoPropertyTypeString, _
Value:=ThisWorkbook.FullName
Application.EnableEvents = False
ThisWorkbook.Save
Application.EnableEvents = True
End If
End Sub
Gruß Tino
Anzeige
AW: Datei im gleichen Ordner speichern
27.11.2020 17:04:48
Ulrich
Ich habe eine Lösung gefunden
Dim WB As Workbook
For Each WB In Workbooks
If WB.Name ThisWorkbook.Name And _
WB.Name "Protokoll.xlsm" Then
WB.Close SaveChanges:=True
End If
Next WB
ThisWorkbook.Close SaveChanges:=True

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige