Anzeige
Archiv - Navigation
1480to1484
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

Sicherung einer Mappe

Sicherung einer Mappe
14.03.2016 10:38:47
chris58
Hello !
Ich will fragen, da ich einen Code für eine Sicherung einer Mappe gefunden habe, warum dieser nicht geht, bzw. folgenden Fehler aufweist:
Der Code sichert das Blatt, schliesst die Originaldatei ohne eventuelle Änderungen zu speichern und läßt die Kopie (gespeichertes Blatt) offen.
Wo liegt der Fehler
Danke
alex

Private Sub CommandButton2_Click()
ActiveSheet.Unprotect
Dim Passwort As String
Passwort = InputBox("Darfst Du das überhaupt?", "Passwort-Abfrage", "Passwort hier eingeben")
If Passwort  "PASSWORT" Then Exit Sub
MsgBox "Jetzt darfst Du weitermachen" '
Dim strVerzeichnis As String
Dim strDateiname As String
strVerzeichnis = "C:\Temp\"
strDateiname = Application.GetSaveAsFilename(InitialFileName:=strVerzeichnis & _
Range("F1") & " " & Range("F2") & " " & Format(Range("H2"), " MMMM YYYY") & ".xls", _
FileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls")
Dim sh As Shape
For Each sh In ActiveSheet.Shapes
sh.Delete
Next
Select Case strDateiname
Case False
Exit Sub
Case Else
ThisWorkbook.SaveAs Filename:=strDateiname
End Select
ActiveSheet.Protect
End Sub

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sicherung einer Mappe
14.03.2016 10:46:37
ChrisL
Hi Alex
Was soll der Code korrekterweise machen resp. wie würde der Soll-Zustand aussehen?
cu
Chris

AW: Sicherung einer Mappe
14.03.2016 11:04:36
chris58
Hallo !
Der Code soll folgendes können:
Das Abrufen des Code mittels CommandButton (Sicherung) soll nur über ein Passwort möglich sein.
Der Blattschutz der Originaldatei soll aufgehoben werden.
Er soll die ganze Mappe sichern unter.......
Witers sollen bestimmte Zellen angesprochen werden, unten dem die Mappe gespeichert werden soll.
die Buttons sollen nach Speicherung in der Sicherungsdatei nicht mehr vorhanden sein.
Das geht bis hierher.
Doch dann:
Die Sicherungskopie soll geschlossen werden, die zu sichernde Mappe soll offen bleiben.
Der Blattschutz für die Originaldatei soll wieder aktiv werden....geht auch
Gruß
chris

Anzeige
AW: Sicherung einer Mappe
14.03.2016 13:47:58
ChrisL
Hi Chris
Probier mal...
Private Sub CommandButton2_Click()
Dim WB1 As Workbook, WB2 As Workbook
Dim Passwort As String
Dim strVerzeichnis As String, strDateiname As String
Dim strPfadName As String
Dim strTemp As String
Dim ws As Worksheet, sh As Shape
Dim myFSO As Object
Passwort = InputBox("Darfst Du das überhaupt?", "Passwort-Abfrage", "Passwort hier eingeben")
If Passwort  "PASSWORT" Then Exit Sub
Set WB1 = ThisWorkbook
MsgBox "Jetzt darfst Du weitermachen" '
strVerzeichnis = "C:\Temp\"
strDateiname = Range("F1") & " " & Range("F2") & " " & Format(Range("H2"), " MMMM YYYY") & ". _
xls"
strPfadName = Application.GetSaveAsFilename(InitialFileName:=strVerzeichnis & strDateiname, _
FileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls")
Select Case strDateiname
Case False
Exit Sub
Case Else
Application.ScreenUpdating = False
Set myFSO = CreateObject("Scripting.FileSystemObject")
strTemp = WB1.Path & "\temp.xlsm"
myFSO.copyfile WB1.Path & "\" & WB1.Name, strTemp, True
Set WB2 = Workbooks.Open(strTemp)
WB2.Unprotect
For Each ws In WB2.Worksheets
For Each sh In ws.Shapes
sh.Delete
Next sh
Next ws
On Error GoTo errorhandler
Application.DisplayAlerts = False
WB2.SaveAs Filename:=strPfadName, FileFormat:=xlOpenXMLWorkbook
Workbooks(strDateiname).Close
Kill strTemp
End Select
errorhandler:
Application.DisplayAlerts = True
End Sub
cu
Chris

Anzeige
AW: Sicherung einer Mappe
14.03.2016 14:12:46
chris58
Hallo !
Leider, geht nicht
In der Zeile
strDateiname = Range("F1") & " " & Range("F2") & " " & Format(Range("H2"), " MMMM YYYY") & ". _
xls"
Fehler beim Kompilieren: Syntaxfehler
gruß
chris

AW: Sicherung einer Mappe
14.03.2016 14:15:35
ChrisL
Hi
so...
strDateiname = Range("F1") & " " & Range("F2") & " " & Format(Range("H2"), " MMMM YYYY") & ".xls"
cu
Chris

AW: Sicherung einer Mappe
14.03.2016 14:21:29
chris58
Leider kommt nun dieser Fehler:
Komilieren: Variable nicht definiert bei:
WB2.SaveAs Filename:=strPfadName, FileFormat:=xlOpenXMLWorkbook

AW: Sicherung einer Mappe
14.03.2016 14:34:46
ChrisL
dann lass das Fileformat mal weg...

Anzeige
AW: Sicherung einer Mappe
14.03.2016 15:10:03
chris58
Hallo !
Es geht zwar, jedoch wird das ganze nicht in den Ordner den ich auswähle gespeichert, sondern in den Ordner wo der speicherungsordner drinnen ist und das ganze unter temp.xls.
Ich seh, ich habe falsch Excel 2007 angegeben..............vertippt.....richtig 2003 - kanns an dem liegen ?
chris
Private Sub CommandButton2_Click()
ActiveSheet.Unprotect
Sheets("stufe1").Select
ActiveSheet.Unprotect
Sheets("stufe2").Select
Dim WB1 As Workbook, WB2 As Workbook
Dim Passwort As String
Dim strVerzeichnis As String, strDateiname As String
Dim strPfadName As String
Dim strTemp As String
Dim ws As Worksheet, sh As Shape
Dim myFSO As Object
Passwort = InputBox("Darfst Du das überhaupt?", "Passwort-Abfrage", "Passwort hier eingeben")
If Passwort  "test2000" Then Exit Sub
Set WB1 = ThisWorkbook
MsgBox "Jetzt darfst Du weitermachen" '
strVerzeichnis = "C:\Users\"
strDateiname = Range("F1") & " " & Range("F2") & " " & Format(Range("H2"), " MMMM YYYY") & ". _
xls"
strPfadName = Application.GetSaveAsFilename(InitialFileName:=strVerzeichnis & strDateiname, _
FileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls")
Select Case strDateiname
Case False
Exit Sub
Case Else
Application.ScreenUpdating = False
Set myFSO = CreateObject("Scripting.FileSystemObject")
strTemp = WB1.Path & "\temp.xls"
myFSO.copyfile WB1.Path & "\" & WB1.Name, strTemp, True
On Error GoTo errorhandler
Application.DisplayAlerts = False
WB2.ThisWorkbook.SaveAs Filename:=strDateiname
Workbooks(strDateiname).Close
Kill strTemp
End Select
ActiveSheet.Protect
Sheets("stufe1").Select
ActiveSheet.Protect
Sheets("stufe2").Select
errorhandler:
Application.DisplayAlerts = True
MsgBox "Datei gespeichert !" '
End Sub

Anzeige
AW: Sicherung einer Mappe
14.03.2016 15:48:30
ChrisL
Hi Chris
Nimm mal zu Testzwecken die Anweisung "On Error GoTo errorhandler" raus. Folgende Anweisung ist falsch:
WB2.ThisWorkbook.SaveAs Filename:=strDateiname
richtig = WB2.SaveAs Filename:=strDateiname
Die Idee war, zuerst eine temporäre Kopie der Originaldatei zu erstellen, dann die Kopie zu öffnen und diese mittels Speichern-Unter zu speichern. Anschliessend wird die Temp-Datei mittels Kill gelöscht.
Die Temp-Datei müsste sich somit selber vernichten.
Unprotect läuft nur auf der Temp-Datei (wenn du den Code so lässt wie er war), die Original-Datei bleibt unverändert. Deine Protect Anweisung ist somit überflüssig (und wenn, dann bitte ohne Select "Sheets("stufe1").Protect").
cu
Chris

Anzeige
Code überarbeitet
14.03.2016 15:57:55
Rudi
Hallo,
Private Sub CommandButton1_Click()
Dim WB1 As Workbook, WB2 As Workbook
Dim Passwort As String
Dim strVerzeichnis As String, strDateiname As String
Dim strPfadName As String
Dim strTemp As String
Dim ws As Worksheet, sh As Shape
Dim myFSO As Object
Passwort = InputBox("Darfst Du das überhaupt?", "Passwort-Abfrage", "Passwort hier eingeben")
If Passwort  "PASSWORT" Then Exit Sub
Set WB1 = ThisWorkbook
MsgBox "Jetzt darfst Du weitermachen" '
strVerzeichnis = "C:\Temp\"
ChDir strVerzeichnis
strDateiname = Range("F1") & " " & Range("F2") & " " & Format(Range("H2"), "MMMM YYYY")
strPfadName = Application.GetSaveAsFilename(InitialFileName:=strDateiname, _
FileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls")
Select Case strPfadName
Case False
Exit Sub
Case Else
Application.ScreenUpdating = False
Set myFSO = CreateObject("Scripting.FileSystemObject")
strTemp = WB1.Path & "\temp.xlsm"
myFSO.copyfile WB1.FullName, strTemp, True
Set WB2 = Workbooks.Open(strTemp)
For Each ws In WB2.Worksheets
With ws
.Unprotect
.DrawingObjects.Delete
End With
Next ws
On Error GoTo errorhandler
Application.DisplayAlerts = False
With WB2
Select Case Val(Application.Version)
Case Is 
Gruß
Rudi

Anzeige
AW: Code überarbeitet
14.03.2016 16:33:47
chris58
Hallo !
Wenn ich den Code so übernehme, dann speichert er die Mappe als temp.xlsm im vorhergehenden Ordner....auch wenn die Endung angleiche an xls., dann speichert er diese nicht in den Ordner, sondern im vorgehenden Ordner unter temp.xls ab.
Egal.....ich lass das......kenn mich schon gar nicht mehr aus, was ich dann nehmen soll und was nicht.
Danke jedenfalls für Eure Hilfe und vor allem (vergeudete) Zeit......
lg
chris

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige