ich habe wieder ein Problem (oder 2) mit meiner Datei.
1) Die Datei wird automatisch mit eingeschalteten Blattschutz geöffnet.
Dieses würde ich aber selbst gern manuell einstellen. Auch wenn ich die
Datei mit deaktiviertem Blattschutz abspeichere und dann wieder öffne, ist
der Blattschutz wieder aktiv.
2) Wenn ich diese Datei öffne, keine Änderungen vornehme und wieder
schliesse, kommt die Abfrage speichern oder nicht, obwohl ich nichts
geändert habe.
Könnt ihr mir helfen?
Marko
Marko Heiroth schrieb:
>
> 1) Die Datei wird automatisch mit eingeschalteten Blattschutz geöffnet.
> Dieses würde ich aber selbst gern manuell einstellen. Auch wenn ich die
> Datei mit deaktiviertem Blattschutz abspeichere und dann wieder öffne, ist
> der Blattschutz wieder aktiv.
Hast Du Workbook_Open oder Auto_Open-Ereignisse in der Datei, die den
blattschutz setzten?
> 2) Wenn ich diese Datei öffne, keine Änderungen vornehme und wieder
> schliesse, kommt die Abfrage speichern oder nicht, obwohl ich nichts
> geändert habe.
Hast Du Funktionen wie Heute(), Now() oder ähnliches in den Formeln oder
ableufenden Makros verwendet? Diese wären dann für die Veränderung
verantwortlich und deshalb wird beim Schliessen nachgefragt.
--
Mit freundlichen Grüssen
Thomas Ramel
- MVP für Microsoft-Excel -
Private Sub Workbook_Open()
With Worksheets("Literature") 'Hier den Tabellenblattnamen anpassen
.Protect userinterfaceonly:=True
.EnableOutlining = True
End With
End Sub
Moin Thomas,
hier sind meine beiden Makros. Müsste ich im zweiten Makro das True in False
ändern? So: .Protect userinterfaceonly:=False? Aber dann ist ja die Datei
bei jedem öffnen nicht mehr geschütz oder? Ich hätte ja gern, dass die
zuletzt gesetzte Option gespeichert bleibt.
Funktionen wie heute und ähnliches habe ich nicht in meiner Tabelle.
Marko
Marko Heiroth schrieb:
>
> Private Sub Workbook_Open()
> With Worksheets("Literature") 'Hier den Tabellenblattnamen anpassen
> .Protect userinterfaceonly:=True
> .EnableOutlining = True
> End With
> End Sub
Ohh, das kenne ich doch ;-)
> hier sind meine beiden Makros. Müsste ich im zweiten Makro das True in False
> ändern? So: .Protect userinterfaceonly:=False? Aber dann ist ja die Datei
> bei jedem öffnen nicht mehr geschütz oder? Ich hätte ja gern, dass die
> zuletzt gesetzte Option gespeichert bleibt.
Beim Öffnen wird das Tabellenblatt jedesmal geschützt, mit der Option,
dass die Gliederung noch funktioniert. Dies kannst Du nur über VBA
erreichen.
Du könntest eine Abfrage einbauen, ob das Blatt geschützt ist; wenn ja,
dann nochmals schützen aber mit der Möglichkeit zur Gruppierung, wenn
nein, dann keinen Schutz erstellen:
Private Sub Workbook_Open()
With Worksheets("Literature") 'Hier den Tabellenblattnamen anpassen
If .ProtectContents And .ProtectDrawingObjects Then
.Protect userinterfaceonly:=True
.EnableOutlining = True
End If
End With
End Sub
bin wieder mal begeistert. Das geht!!!! VBA ist gar nicht so schlecht. Ich
sollte mich mehr damit befassen. Sach mal, woher weißt du diesen "Scheiss"?
Nur durch probieren basteln und Online-Hilfe lesen bestimmt nicht oder?
Kennst du vielleicht ein paar guten Seiten im Netz, wo man sich belesen kann
oder gute VBA skripte findet?
Die Sache mit der Abfrage zum speichern ... Ich könnte damit leben, obwohl
ich nicht weiß, woher diese Abfrage kommt. Ich habe nur die Datei geöffnet
und gleich wieder geschlossen. Naja.
Also vielen Dank Thomas und einen schönen Tag,
Marko
Marko Heiroth schrieb:
>
> VBA ist gar nicht so schlecht.
Das hast Du aber schön gesagt ;-)
> sollte mich mehr damit befassen. Sach mal, woher weißt du diesen "Scheiss"?
> Nur durch probieren basteln und Online-Hilfe lesen bestimmt nicht oder?
Zum grossen Teil schon. Eine echte Hilfe ist mir auch diese NG hier
(immer noch!). Durch Mitlesen und versuchen das Geschreibene
nachzuvollziehen kommt eine ganze Menge an 'Know-How' zusammen.
Und dann gibt's da noch 3 Dinge:
- Üben
- Üben
- Üben
> Kennst du vielleicht ein paar guten Seiten im Netz, wo man sich belesen kann
> oder gute VBA skripte findet?
Hier einige Quellen. Daneben lohnt sich der Kauf von Literatur zum
Thema.
http://www.pba.de/service/dok/VBA5_in_21_Tagen/httoc.htm
http://www.joanneum.ac.at/SERVICES/VBAEXCEL
http://www.edv-raum.de/excelweb/index.htm
http://www.fernuni-hagen.de/URZ/urzbib/ls_broschueren.html 'Die PDF's zu
Excel
http://www.excel-cd.de/download.htm 'Die Datei xlBasics
> Die Sache mit der Abfrage zum speichern ... Ich könnte damit leben, obwohl
> ich nicht weiß, woher diese Abfrage kommt. Ich habe nur die Datei geöffnet
> und gleich wieder geschlossen. Naja.
Kommt die mit dem neuen Workbook_Open() immer noch?
Du hast nicht etwa die Sortierung verändert?
Erst mal danke für die Links und Tipps. Da muss ich mich wohl mal ransetzen
und büffeln. :)
>> Die Sache mit der Abfrage zum speichern ... Ich könnte damit leben,
obwohl
>> ich nicht weiß, woher diese Abfrage kommt. Ich habe nur die Datei
geöffnet
>> und gleich wieder geschlossen. Naja.
>Kommt die mit dem neuen Workbook_Open() immer noch?
>Du hast nicht etwa die Sortierung verändert?
Ich habe die Sortierung nicht verändert, die Datei geöffnet und gleich
wieder geschlossen. Ich habe nicht mal eine Zelle angeklickt.
Aber das artet hier langsam aus. Ich hätte noch eine Frage, bei
eingeschaltetem Blattschutz kann ich meine Sortiermakros nicht mehr laufen
lassen. Da kommt dann die Fehlermeldung: MS Visual Basic, Laufzeitfehler
1004, Beenden - Debuggen - Hilfe.
Marko
Marko Heiroth schrieb:
>
> Erst mal danke für die Links und Tipps. Da muss ich mich wohl mal ransetzen
> und büffeln. :)
Viel Spass ;-)
> Aber das artet hier langsam aus. Ich hätte noch eine Frage, bei
> eingeschaltetem Blattschutz kann ich meine Sortiermakros nicht mehr laufen
> lassen. Da kommt dann die Fehlermeldung: MS Visual Basic, Laufzeitfehler
> 1004, Beenden - Debuggen - Hilfe.
Logisch; das Blatt ist geschützt und die Sortierung will die Inhalte der
Zellen verändern. Da meckert Excel eben.
Baue in die Sortiermakros das Aufheben und wieder setzten des Schutzes
mit ein:
...
Worksheets("Literature").Unprotect
'die Sortier-befehle
Worksheets("Literature").Protect userinterfaceonly:=True
...
Danke und einen schönen Feierabend,
Marko
Marko Heiroth schrieb:
>
> Und wieder zum x-ten Mal ein grosses Lob und herzlichen Dank für die Hilfe.
> Wie immer hat auch das auf Anhieb gefunzt.
Danke für die Blumen ;-)
Mit einer klaren Problembeschreibung ist meist die halbe Lösung bereits
'im Kasten'. Und meist probiere ich es aus bevor ich etwas poste; da
lerne ich dann selbst am meisten.
> Mit einer klaren Problembeschreibung ist meist die halbe Lösung bereits
> 'im Kasten'.
So versuche ich mich immer auszudrücken.
Jetzt muss ich aber erst mal all meine Sortier-Makros mit dem
Protect-Unprotect zu bestücken.
ALso noch einmal Danke und bis demnächst :),
Marko
Marko Heiroth schrieb:
>
> > Mit einer klaren Problembeschreibung ist meist die halbe Lösung bereits
> > 'im Kasten'.
>
> So versuche ich mich immer auszudrücken.
Ich halte es ähnlich; es steigert die 'Effizienz' enorm, wie man hier
geseht hat.
> ALso noch einmal Danke und bis demnächst :),
Bitte schön, ist gern geschehen.
Und Danke für die Rückmeldung.
Private Sub Workbook_Open()
With Worksheets("Literature") 'Hier den Tabellenblattnamen anpassen
If .ProtectContents And .ProtectDrawingObjects Then
.Protect userinterfaceonly:=True
.EnableOutlining = True
End If
End With
End Sub
kann man noch die Autofilter irgendwie aktivieren, die sind ja doch ganz
hilfreich!
Marko
Du musst bevor das Blatt geschützt wird den
Filter akitvieren und dann kannst Du in Deinen
Code noch die unten angezeigte Zeile einfügen.
Damit sollte es funktionieren!
>
> Private Sub Workbook_Open()
> With Worksheets("Literature") 'Hier den Tabellenblattnamen anpassen
> If .ProtectContents And .ProtectDrawingObjects Then
> .Protect userinterfaceonly:=True
> .EnableOutlining = True
.EnableAutoFilter = True
> End If
> End With
> End Sub
>
> kann man noch die Autofilter irgendwie aktivieren, die sind ja doch ganz
> hilfreich!
>
> Marko
Gruss
Daniel
danke für die prima Hilfe. In meinem "Start-Makro" (dieseArbeitsmappe)
funktioniert das:
Private Sub Workbook_Open()
With Worksheets("Literature") 'Hier den Tabellenblattnamen anpassen
If .ProtectContents And .ProtectDrawingObjects Then
.Protect userinterfaceonly:=True
.EnableOutlining = True
.EnableAutoFilter = True
End If
End With
End Sub
Jetzt habe ich aber noch verschiedene Sortiermakros, da muss ich diese eine
Zeile noch irgendwie reinzwängen. Nur wie? Hier ist so ein Sortiermakro:
Sub K()
'
' K Makro
' Makro am 28.08.2002 von Marko Heiroth aufgezeichnet
'
'
Worksheets("Literature").Unprotect
Rows("5:2000").Select
Selection.Sort Key1:=Range("K5"), Order1:=xlAscending, Key2:=Range("N5")
_
, Order2:=xlAscending, Key3:=Range("Q5"), Order3:=xlAscending,
Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False,
Orientation:=xlTopToBottom
Rows("5:2000").EntireRow.AutoFit
Range("K5").Select
EnableAutoFilter = True
Worksheets("Literature").Protect userinterfaceonly:=True
End Sub
Marko
so habe ich es versucht, auch mit einem Punkt vor EnableAutoFilter. Da kam
eine Fehlermeldung.
Marko
Marko