HonniCilest
Erfahrenes Mitglied
Hallo Leute,
Ich habe ein kleines Problem mit den Speicher-Events in Word und Excel.
Ziel:
Word- und Excel-Dokumente, welche im Intranet gespeichert sind, dürfen dort nicht durch Speichern des Dokumentes überschrieben werden.
Problem:
Ein Schreibschutz ist hier nicht möglich und einige haben die Rechte zur Dokument-Bearbeitung, wodurch es durchs Speichern überschrieben werden würde.
Idee:
Speicher-Event abfangen und hier aufgrund des Pfades (im Intranet mit http am Anfang) ggf. ein Speichern unter erzwingen.
In Word sieht dies so aus:
Entsprechend parallel sieht dies in Excel aus:
Allerdings reagieren Excel und Word anders auf den Code, in Word funktioniert alles wie gewünscht. Bei Excel hingegen ruft er das Event lediglich ein 2. mal auf, wodurch auch das interne Speichern abgebrochen wird (ich wundere mich auch, warum er dann nicht in eine Endlosschleife läuft).
Hat jemand eine Idee wie ich das 2. Speichervent umgehen kann oder was ich falsch gemacht haben könnte?
Ich habe ein kleines Problem mit den Speicher-Events in Word und Excel.
Ziel:
Word- und Excel-Dokumente, welche im Intranet gespeichert sind, dürfen dort nicht durch Speichern des Dokumentes überschrieben werden.
Problem:
Ein Schreibschutz ist hier nicht möglich und einige haben die Rechte zur Dokument-Bearbeitung, wodurch es durchs Speichern überschrieben werden würde.
Idee:
Speicher-Event abfangen und hier aufgrund des Pfades (im Intranet mit http am Anfang) ggf. ein Speichern unter erzwingen.
In Word sieht dies so aus:
Code:
'Achtung dieses Event muss im Gegensatz zu Excel registriert werden
Private Sub App_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
If Left(ThisDocument.Path, 4) = "http" Then
MsgBox "Dokument darf nur lokal abgespeichert werden!"
ChangeFileOpenDirectory ("C:\Documents and Settings\" & Environ("UserName") & "\Desktop")
With Application.FileDialog(msoFileDialogSaveAs)
.InitialFileName = "xxx.doc"
.AllowMultiSelect = False
.Show
If .SelectedItems.Count <> 0 Then
ThisDocument.SaveAs FileName:=.SelectedItems(1), FileFormat:=wdFormatDocument
End If
End With
Cancel = True
End If
End Sub
Entsprechend parallel sieht dies in Excel aus:
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Left(ThisWorkbook.Path, 4) = "http" Then
MsgBox "Dokument darf nur lokal abgespeichert werden!"
ChDir "C:\Documents and Settings\" & Environ("UserName") & "\Desktop"
With Application.FileDialog(msoFileDialogSaveAs)
.InitialFileName = "xxx.xls"
.AllowMultiSelect = False
.Show
If .SelectedItems.Count <> 0 Then
ThisWorkbook.SaveAs Filename:= .SelectedItems(1), FileFormat:= xlNormal
End If
End With
Cancel = True
End If
End Sub
Allerdings reagieren Excel und Word anders auf den Code, in Word funktioniert alles wie gewünscht. Bei Excel hingegen ruft er das Event lediglich ein 2. mal auf, wodurch auch das interne Speichern abgebrochen wird (ich wundere mich auch, warum er dann nicht in eine Endlosschleife läuft).
Hat jemand eine Idee wie ich das 2. Speichervent umgehen kann oder was ich falsch gemacht haben könnte?
Zuletzt bearbeitet: