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

Diagramm-Schutz aufheben: Wie?

Diagramm-Schutz aufheben: Wie?
17.09.2013 09:49:49
Tobias
Hallo allerseits,
Die Blätter in meiner Arbeitsmappe schütze ich so:
For i = 1 To Worksheets.Count
Worksheets(i).Protect password:=PWD, UserInterfaceOnly:=True
Next i
Das Programm kann dann auf die Zellen zugreifen, aber leider nicht auf die Charts; offenbar müssen diese auch mit der Option "UserInterfaceOnly" für den Zugriff des Programms freigegeben werden, ansonsten sind sie durch obige Anweisung ganz geschützt.
Soviel Info hab' ich im Netz gefunden, doch wie setze ich den entsprechenden Schutz eines Charts?
Dies hier scheint die entsprechende Methode zu sein, aber ich krieg' es nicht hin, auch nach langem Suchen und Versuchen: http://msdn.microsoft.com/en-us/library/office/bb211674%28v=office.12%29.aspx
Natürlich hab' ich auch schon versucht, den Blattschutz vor dem Chart Zugriff aus- und nachher wieder einzuschalten. Dies ist aber einerseits riskant und friert in meinem Falle das Programm für ca. 4 Sekunden ein.
Danke vielmal für eure Hilfe!
Tobias

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diagramm-Schutz aufheben: Wie?
17.09.2013 10:02:27
EtoPHG
Hallo Tobias,
Für den Blattschutz gibt es seit XL2003 div. Optionen. U.a. auch "Objekte bearbeiten", der das Verändern von Diagrammen bezgl. Formatierung auch bei Blattschutz zulässt.
Natürlich hab' ich auch schon versucht, den Blattschutz vor dem Chart Zugriff aus- und nachher wieder einzuschalten. Dies ist aber einerseits riskant und friert in meinem Falle das Programm für ca. 4 Sekunden ein.

Frage 1: Was ist daran riskant?
Frage 2: Wie sieht dein Code aus? , denn das 4" einfrieren könnte ich mir nur durch schlecht programmierten Code erklären.
Gruess Hansueli

Anzeige
AW: Diagramm-Schutz aufheben: Wie?
17.09.2013 10:19:19
Tobias
Hallo Hansueli,
Danke für die Antwort. Riskant ist es aus meiner Sicht deswegen, da der Code angehalten werden kann, wenn kein Blattschutz da ist. Ich müsste dir einiges an Code zusenden. Zumindest enthält der keine "selects" und die Sache läuft flüssig. Nur das Ein- und Ausschalten des Blattschutzes dauert. Auch wenn ich dies manuell mache, erscheint kurz die Sanduhr.
Ginge das nicht mit der erwähnten Methode?

AW: Diagramm-Schutz aufheben: Wie?
17.09.2013 10:30:26
EtoPHG
Hallo Tobias,
Ginge das n
icht mit der erwähnten Methode?
Probiers doch einfach aus!
Das Anhalten des Codes kann auch unterbunden werden, Stichwort Application.EnableCancelKey
VBA gut?
Gruess Hansueli

Anzeige
AW: Diagramm-Schutz aufheben: Wie?
17.09.2013 15:16:45
Tobias
Hi Hansueli,
Danke.., du darfst meine VBA-Kenntnisse auch gerne herabstufen..., aber ich krieg's auch nach langem Ausprobieren nicht hin - und im Netz finde ich leider nichts kopierbares.
Müsste das nicht so funzen?
ChartObjects("blubb").Chart.Protect UserInterfaceOnly:=True
Ich erhalte den Laufzeitfehler 1004.
Danke!

AW: Diagramm-Schutz aufheben: Wie?
17.09.2013 16:38:33
EtoPHG
Hallo Tobias,
Mein "böse" Bemerkung ;-) bezgl. VBA-Level bezog sich auf das Application.EnableCancelKey, nicht auf das Chart-Problem.
Ich weiss aber immer noch nicht was du genau erreichen willst.
Mit:
ActiveSheet.Protect Password:="XY", DrawingObjects:=False, Contents:=True, userinterfaceonly:=True
Ist das Blatt geschützt, aber Diagramme noch bearbeitbar.
Ist es nicht das, was du suchst? Warum das mit Chart.Protect nicht funktioniert, kann ich mangels Office 2013 nicht beantworten.
Gruess Hansueli

Anzeige
AW: Diagramm-Schutz aufheben: Wie?
17.09.2013 20:12:18
Tobias
Hi Hansueli,
Das Ziel war, dass ich nicht ständig den Schutz ein- und ausschalten muss.
Offenbar ist dies in XL2013 generell langsam, wie hier zu lesen:
http://www.online-excel.de/excel/singsel.php?f=190
Dass ich den Schutz für die Charts ausschalten kann, weiss ich, aber ich möchte diese schützen und auch wenn ich nur diesen spezifischen Schutz aus- und wieder einschalte, dann dauert dies.
So hab' ich dann die Info (gem. Link weiter oben) gefunden, dass sich bei einem Chart selbst der Schutz auf "UserInterfaceOnly = True" setzen liesse - aber leider bringe ich dies nicht zum laufen.
Für weitere Hilfe wäre ich sehr dankbar!
Gruss, Tobias

Anzeige
Na, dann noch offen setzen (owT)
18.09.2013 08:45:19
EtoPHG

AW: Diagramm-Schutz aufheben: Wie?
21.09.2013 20:24:16
fcs
Hallo Tobias,
soweit ich aus dem Text herauslesen konnte arbeitest du mit im Tabellenblatt eingebetteten Chart-Objekten.
Die Protect- und Unprotect-Methode beziehen sich aber auf Tabellen- oder Diagrammblätter. D.h. man kann den Schutz von eingebetteten Diagrammen nicht separat aufheben/einrichten.
Ich hab beim Testen festgestellt, dass man mit
Worksheets(i).Protect Password:=PWD, UserInterfaceOnly:=True
Einige Einstellungen in den Diagrammen ändern kann - z.B. die Füllfarbe von Datenreihen
Andere Einstellungen bleiben aber gesperrt - z.B. der Text des Diagrammtitels
Dir wird also nichts anderes übrigbleiben, als für die Blätter kurzzeitig während der Ausführung des Makros den Blattschutz zu deaktivieren.
Gruß
Franz
Code-Beispiel mit dem ich verschiedene Schutzeinstellungen probiert hab.

Option Explicit
Private Const PWD = "Test"
Sub Manipuliere()
Dim i, objPoint As Point
Dim objChart As Chart, wks As Worksheet
On Error GoTo Fehler
Application.EnableCancelKey = xlDisabled 'Makro kann nicht per ESC abgebrochen werden
Application.ScreenUpdating = False
'Blattschutz aufheben
For Each wks In ActiveWorkbook.Worksheets
wks.Unprotect Password:=PWD
Next wks
For Each objChart In ActiveWorkbook.Charts
objChart.Unprotect Password:=PWD
Next objChart
'Wertänderungen in Tabelle
For i = 2 To 5
Worksheets(1).Cells(i, 2) = Rnd() * 10
Next
'Anpassung am eingebetteten Diagrammobjekt
Set objChart = Worksheets(1).ChartObjects(1).Chart
With objChart
.ChartTitle.Text = "Werte Stand: " & Format(Now, "YYYY-MM-DD hh:mm")
For i = 1 To 4
Set objPoint = .SeriesCollection(1).Points(i)
objPoint.Format.Fill.ForeColor.RGB = RGB(Red:=Int(Rnd() * 254) + 1, _
Green:=Int(Rnd() * 254 + 1), blue:=Int(Rnd() * 254) + 1)
Next
End With
'Anpassung im Diagrammblatt
Set objChart = Charts(1)
With objChart
.ChartTitle.Text = "Werte Stand: " & Format(Now, "YYYY-MM-DD hh:mm")
For i = 1 To 4
Set objPoint = .SeriesCollection(1).Points(i)
objPoint.Format.Fill.ForeColor.RGB = RGB(Red:=Int(Rnd() * 254) + 1, _
Green:=Int(Rnd() * 254 + 1), blue:=Int(Rnd() * 254) + 1)
Next
End With
Err.Clear
Fehler: 'Fehlerbehandlung
With Err
Select Case .Number
Case 0 'Alles OK
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
'Blattschutz wieder setzen
For Each wks In ActiveWorkbook.Worksheets
wks.Protect Password:=PWD, UserInterfaceOnly:=True
Next wks
For Each objChart In ActiveWorkbook.Charts
objChart.Protect Password:=PWD, UserInterfaceOnly:=True
Next objChart
Application.EnableCancelKey = xlInterrupt
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Diagramm-Schutz aufheben: Wie?
23.09.2013 10:46:37
Tobias
Hi Franz,
Vielen Dank fürs ausführliche Testen! Das macht einiges klar. Tja.., leider muss ich auch den Titel und die Datenquelle der Diagramme ändern und somit den Blattschutz ein- und wieder ausschalten. Wenn das dann in der Version 2013 immer ca. vier Sekunden dauert, dann wird das Programm faktisch unbrauchbar, ausserdem ist diese Methode im besten Fall unelegant.
Dass das Ändern dieser Diagramm-Parameter mit "UserInterfaceOnly:=True" nicht möglich ist, ist aus meiner Sicht eigentlich ein Fehler in Excel.
Gruss, Tobias

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige