Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1420to1424
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

Temporäre Datei erstellen - Workbook_BeforeSave

Temporäre Datei erstellen - Workbook_BeforeSave
17.04.2015 09:11:48
Stefan
Hey Leute,
vielleicht könnt ihr mir weiterhelfen. Ich würde gern eine Temporäre-Datei erstellen lassen beim öffnen der Excel-Mappe. Beim klicken auf speichern soll die Datei automatisch in ein spezifischen ordner gespeichert werden. Bisher habe ich es so:
AUSZUG:

Private Sub Workbook_open()
If IsEmpty(format.Cells(2, 2)) Then
For i = 1 To 12
DateiName = Dir("C:\Users\User\Temp\test_" & i & ".xlsm")
If Dir("C:\Users\User\Temp\test_" & i & ".xlsm") = "" Then
ActiveWorkbook.SaveAs Filename:="C:\Users\User\Temp\test_" & i & ".xlsm"
tempfiles.Cells(tempfiles.Cells(Rows.Count, 1).End(xlUp).Row + 1, 1) = "C:\Users\ _
User\Temp\test_" & i & ".xlsm"
Exit For
End If
Next i
Else
ActiveWorkbook.SaveAs Filename:="C:\Users\User\Temp\" & ThisWorkbook.Name
tempfiles.Cells(tempfiles.Cells(Rows.Count, 1).End(xlUp).Row + 1, 1)            = "C:\Users\ _
_
_
User\Temp\" & ThisWorkbook.Name
End If
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
k = 1
For i = 1 To 12
If Dir("C:\Users\User\FinaleDatei\" & format.Cells(2, 2).Value & "_rev" _
& i & ".xlsm")  "" Then
k = i + 1
Exit For
End If
Next i
Application.ActiveWorkbook.SaveAs Filename:="("C:\Users\User\FinaleDatei\" _
& format.Cells(2, 2).Value & "_rev" & k & ".xlsm", FileFormat:=52, addtomru:=True
MsgBox "Your file was saved here: ("C:\Users\User\FinaleDatei\" &     format.Cells(2, 2). _
Value & "_rev" & k & ".xlsm"
End If
Problem ist: Beim dem Speicher der Temporären Datei wird automaitsch die Workbook_BeforeSave  _
Aktion ausgeführt...soll aber erst beim klicken auf speicher passieren.
vielleicht hat von euch jemand einen Lösungsansatz :)
Vielen Dank!

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

Betreff
Datum
Anwender
Anzeige
AW: Temp. Datei erstellen - Workbook_BeforeSave
17.04.2015 09:27:51
EtoPHG
Hallo Stefan,
Im Workbook_Open Ereignis:
Application.EnableEvents = False
If IsEmpty(format.Cells(2, 2)) Then
...dein Code
End If
Application.EnableEvents = True
schaltet die Ereignissteuerung temporär aus und verhindert damit, dass beim SaveAs das Workbook_BeforeSave Ereignis angestossen wird.
Gruess Hansueli

AW: Temporäre Datei erstellen - Workbook_BeforeSave
17.04.2015 09:30:17
Luschi
Hallo Stefan,
benutze statt 'SaveAs' diese Methode 'SaveCopyAs' (siehe Vba-Hilfe.
lt. Vba-Hilfe: Speichert eine Kopie der Arbeitsmappe in einer Datei, ändert aber nicht die geöffnete Arbeitsmappe im Speicher.
Und was in der Hilfe nicht drin steht:
das 'Workbook_BeforeSave'-Ereignis wird nicht ausgeführt
vorhandene Dateinen werden überschrieben! (aber das testest Du ja mit Dir(...)
Ansonsten:
Application.EnableEvents = False
ActiveWorkbook.SaveAs ...
MsgBox "..."
Application.EnableEvents = True
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Temporäre Datei erstellen - Workbook_BeforeSave
17.04.2015 10:31:00
fcs
Hallo Stefan,
die anderen Helfer haben ja schon darauf hingewiesen, dass du die Ereignis-Makros vorübergehend deaktivieren muss.
Im Before_Save-Makro muss du aber nach ein paar Sachen mehr anpassen.
Die Variable für die Verzeichnisse muss du nicht einbauen. Es machte aber für mich das Testen und Codeanpasung einfacher.
Gruß
Franz
Private Sub Workbook_open()
Dim DateiName As String, strTemp As String, i As Integer
strTemp = "C:\Users\User\Temp\"
Application.EnableEvents = False
If IsEmpty(format.Cells(2, 2)) Then
For i = 1 To 12
DateiName = Dir(strTemp & "test_" & i & ".xlsm")
If Dir(strTemp & "test_" & i & ".xlsm") = "" Then
ActiveWorkbook.SaveAs Filename:=strTemp & "test_" & i & ".xlsm"
tempfiles.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = _
strTemp & "test_" & i & ".xlsm"
Exit For
End If
Next i
Else
ActiveWorkbook.SaveAs Filename:=strTemp & ThisWorkbook.Name
tempfiles.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = _
strTemp & ThisWorkbook.Name
End If
Application.EnableEvents = True
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim strFinal As String, i As Integer, k As Integer
strFinal = "C:\Users\User\FinaleDatei\"
If format.Cells(2, 2) = "" Then 'Diese Prüfung muss nicht sein, aber empfehlenswert
MsgBox "Zelle B2 in Blatt """ & format.Name & """ ist noch leer! Datei nicht gespeichert!" _
Cancel = True
Exit Sub
End If
k = 1
For i = 1 To 12
If Dir(strFinal & format.Cells(2, 2).Value & "_rev" & i & ".xlsm")  "" Then
k = i + 1
'            Exit For  'Zeile muss weg sonst funktioniert es nur bis Rev1
End If
Next i
Application.EnableEvents = False
Application.ActiveWorkbook.SaveAs Filename:=strFinal _
& format.Cells(2, 2).Value & "_rev" & k & ".xlsm", _
FileFormat:=52, addtomru:=True
Application.EnableEvents = True
MsgBox "Your file was saved here: " _
& strFinal & format.Cells(2, 2).Value & "_rev" & k & ".xlsm"
Cancel = True
End Sub

Anzeige

34 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige