Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Diagramm-Schutz aufheben: Wie?

Forumthread: 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

Anzeige

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?

Anzeige
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

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!

Anzeige
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
Anzeige
;
Anzeige

Infobox / Tutorial

Diagramm-Schutz in Excel aufheben und verwalten


Schritt-für-Schritt-Anleitung

Um den Schutz eines Diagramms in Excel aufzuheben oder zu verwalten, kannst du folgende Schritte befolgen:

  1. Blattschutz aktivieren: Stelle sicher, dass dein Arbeitsblatt geschützt ist, indem du den Schutz mit einer Password-Option aktivierst:

    ActiveSheet.Protect Password:="DeinPasswort", DrawingObjects:=True, Contents:=True, UserInterfaceOnly:=True
  2. Diagramm bearbeiten: Um auf die Diagramme zugreifen zu können, während das Arbeitsblatt geschützt ist, aktiviere die Option UserInterfaceOnly. Diese Einstellung ermöglicht es dir, die Diagramme zu bearbeiten, ohne den gesamten Blattschutz aufzuheben.

  3. Diagramm-Schutz aufheben (optional): Wenn du den Schutz für ein bestimmtes Diagramm aufheben möchtest, kannst du folgendes verwenden:

    ActiveSheet.ChartObjects("DiagrammName").Chart.Protect UserInterfaceOnly:=True
  4. Änderungen durchführen: Jetzt kannst du Änderungen am Diagramm vornehmen, wie z.B. die Größe ändern oder die Datenquelle anpassen.

  5. Blattschutz wieder aktivieren: Nach den Änderungen solltest du den Blattschutz wieder aktivieren, um die Sicherheit deiner Daten zu gewährleisten.


Häufige Fehler und Lösungen

Fehler 1: "Laufzeitfehler 1004" beim Aufheben des Diagramm-Schutzes
Dieser Fehler tritt auf, wenn das Diagramm nicht gefunden wird. Stelle sicher, dass der Diagrammname korrekt ist und keine Tippfehler vorhanden sind.

Lösung: Überprüfe den Namen des Diagramms und versuche es erneut. Ein Beispiel für den korrekten Befehl ist:

ActiveSheet.ChartObjects("DiagrammName").Chart.Protect UserInterfaceOnly:=True

Fehler 2: Diagrammgröße ändern gesperrt
Wenn du die Größe eines Diagramms ändern möchtest und diese Option gesperrt ist, liegt es daran, dass der Schutz die Änderung blockiert.

Lösung: Stelle sicher, dass du die Option DrawingObjects beim Schutz des Blattes auf True setzt.


Alternative Methoden

  • Objekte bearbeiten erlauben: In Excel kannst du beim Blattschutz die Option DrawingObjects auf False setzen, um das Bearbeiten von Diagrammen zu erlauben.

  • Makros verwenden: Wenn du regelmäßig mit geschützten Diagrammen arbeitest, erstelle ein Makro, das den Schutz vorübergehend aufhebt, die erforderlichen Änderungen vornimmt und dann den Schutz wieder aktiviert.


Praktische Beispiele

Hier ist ein einfaches VBA-Skript, das den Schutz eines Arbeitsblattes aufhebt, Änderungen an einem eingebetteten Diagramm vornimmt und anschließend den Schutz wieder aktiviert:

Sub DiagrammBearbeiten()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("MeinBlatt")
    ws.Unprotect Password:="DeinPasswort"

    With ws.ChartObjects(1).Chart
        .ChartTitle.Text = "Neuer Titel"
        .SeriesCollection(1).Points(1).Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
    End With

    ws.Protect Password:="DeinPasswort", UserInterfaceOnly:=True
End Sub

Tipps für Profis

  • Benutze Application.EnableCancelKey: Um zu verhindern, dass das Makro durch den Benutzer unterbrochen wird, kannst du Application.EnableCancelKey auf xlDisabled setzen. Dies sorgt für einen reibungslosen Ablauf.

  • Optimierung der Ausführung: Reduziere die Bildschirmaktualisierung während der Ausführung mit Application.ScreenUpdating = False, um die Geschwindigkeit zu erhöhen.


FAQ: Häufige Fragen

1. Wie kann ich ein Diagramm in Excel schützen?
Du kannst ein Diagramm schützen, indem du den Blattschutz aktivierst und sicherstellst, dass die Option für das Bearbeiten von Objekten deaktiviert ist.

2. Was ist die Funktion UserInterfaceOnly?
Diese Funktion ermöglicht es, dass VBA-Programme auf geschützte Elemente zugreifen können, während der Benutzer weiterhin die geschützten Inhalte nicht bearbeiten kann.

3. Wie kann ich den Schutz für eine Tabelle aufheben?
Um den Schutz einer Excel-Tabelle aufzuheben, verwende den Befehl:

ActiveSheet.Unprotect Password:="DeinPasswort"

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige