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

passwortschutz verhindert makroausführung

passwortschutz verhindert makroausführung
22.01.2013 01:24:04
Heinz
Hallo zusammen,
ich hatte vor einige Zeit ein Problem welches in diesem Forum gelöst wurde und auch gut funzt.
Leider hat sich mittlerweile gezeigt das ich das Tabellenblatt mit welchem ich arbeite mit einem Passwortschutz versehen muss. Es sind auf dem Tabellenblatt nur einige Zellen freigegeben, der Rest ist gesperrt, unter anderem auch die Zelle mit dem Datum sowie die Sverweis Zellen.
Hab mal probiert diese Zellen freizugeben, aber das geht auch nicht so lange die Tabelle geschützt ist.
Nun hab ich aber das Problem dass das Makro nicht läuft wenn das Tabellenblatt gesperrt ist.
Will heißen bei jedem Datumssprung kommt eine Fehlermeldung des entsprechenden Makros:
"Fehler in Prozedur Sub 'Worksheet_Calculate'
Fehlernummer 1004"
Die ursprüngliche Lösung ist in einer bereits hochgeladenen Datei ersichtlich.
Leider kann ich das hier nicht verlinken, aber sucht mal bitte im Forumsarchiv unter:
Sverweis auf Dateien mit wechslenden Dateinamen
Kann mir hier jemand weiter helfen?
Auch Blick ich bei dem Makro von Sepp nur teilweise durch. Ist für meine geringen VBA-Kenntnisse zu hoch....
Danke schon mal.
Gruß Heinz

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: passwortschutz verhindert makroausführung
22.01.2013 01:41:21
Daniel
Hi
wenn das Tabellenblatt mit einem Passwort geschützt ist, dann kann auch ein Makro nur die Dinge verändern, die der normale Anwender auch ändern kann.
wenn das Passwort bekannt ist, dann kannst du allerdings auch im Makro den Schutz aufheben, die erforderlichen Änderungen durchführen und am Schluss des Makros den Schutz wieder aktiveren.
dafür gibts die Befehle .Protect und .Unprotect
das sieht als Code dann so aus
Sub xxxx()
ActiveSheet.Unprotect "DeinPasswort"
hier dann der weitere Code
ActiveSheet.Protect "DeinPasswort"
End Sub

Gruß Daniel

Anzeige
AW: passwortschutz verhindert makroausführung
22.01.2013 01:50:24
Heinz
Hi Daniel,
danke für deine Antwort.
Das mit Unprotect und Protect kenne ich.
Hab ich auch probiert, funzt aber leider nicht.
Evtl könnte es daran liegen das ich Unprotect in der falschen zeile drin hab, glaub ich aber eigentlich nicht. Hab es direkt unter der Dimensionierung angegeben.
Gruß Heinz

AW: passwortschutz verhindert makroausführung
22.01.2013 07:52:47
Dirk
Hallo Heinz,
Leider kann ich den Beitrag über die Suche nicht finden.
Lad die Datei am besten neu hoch und schau mal rechts oben unter "Deine Beiträge" und Poste den Link zu dem Beitrag.
Dein Aktuelles Makro brauchen wir auf jeden Fall.
Gruß
Dirk

Anzeige
AW: passwortschutz verhindert makroausführung
22.01.2013 09:00:10
Dirk
Mal so ins Blaue geschossen.
wenn ich mir den Code vom Sepp anschaue gebt er einen neuen Link zurück.
Das heißt aber auch, dass der Bereich, in dem die Links stehen nicht geschützt sein darf.
Sind die Zellen, in denen die Links stehen aus dem Schutz entnommen?
Gruß
Dirk

AW: passwortschutz verhindert makroausführung
22.01.2013 23:22:06
Heinz
Hi Dirk,
auch dir ein danke für die Hilfe.
Ich hab die zellen "freigegeben" aber das hat auch nicht funktioniert.
Ich mach mal ne Beispieldatei und häng die an.
Zur Tabelle:
- Alle weissen Bereich sind freigegeben.
- Zellbereich B29:C29: hier sollen Daten einer anderen Tabelle drin stehen, die Daten werden von der Zelle AH12 entnommen
- Zelle AH12 hier ist der Sverweis drin welche auf die Daten in der anderen Tabelle zugreift.
- Die "Datentabelle" wird jedes Jahr in ein neues Verzeichnis gelegt mit dem aktuellen Jahresdatum
und die Datentabelle erhält ebenfalls das aktuelle Jahr im Dateinamen
- Die Spalte AH ist normalerweise mit der gleichen Schriftfarbe formatiert wie der Zellhintergrund und ist gesperrt, ebenso wie der Zellbereich B29:c29
- Passwort für die Tabelle ist "test".
Die beiden Jahreszahlen in der Sverweisfunktion sollen sich durch das Makro anpassen wenn sich das Jahr ändert.
Genau da liegt das Problem, ist die Tabelle geschützt/gepserrt geht das nicht und das Makro bringt die genannte Fehlermeldung welche dort generiert wird.
https://www.herber.de/bbs/user/83516.xls
Gruß Heinz

Anzeige
Blattschutz oder Existenz der Quellmappe?
23.01.2013 01:04:08
Erich
Hallo Heinz,
vielleicht liegt das Problem weniger beim Blattschutz als in der Existenz der neuen Link-Quelle?
Wenn so ein Fehler auftritt, möchte man zuerst wissen, wo genau, bei welcher Anweisung.
Dazu kommentiert man "On Error GoTo ErrExit" aus. VBA bleibt nun direkt beim Fehler stehen.
Das war jetzt bei mir in der Zeile
ThisWorkbook.ChangeLink Name:=vntLink(lngIndex), NewName:=strNewLink, Type:=xlExcelLinks
Bist du sicher, dass die Datei strNewLink existiert?
Das sieht so aus:
Y:\Ziellaufwerk\Produktionsdaten 2013\Produktionsdaten Bereich 3 2013.xls
oder z. B.
Y:\Ziellaufwerk\Produktionsdaten 2011\Produktionsdaten Bereich 3 2011.xls
Die Existenz kannst du durch eine kleine Erweiterung im Calculate prüfen:

For lngIndex = 1 To UBound(vntLink)
strNewLink = regReplace(vntLink(lngIndex), " [0-9]{4}", strReplace)
If strNewLink  CStr(vntLink(lngIndex)) Then
If Dir(strNewLink) = "" Then
MsgBox "Datei" & vbLf & strNewLink & vbLf & "nicht gefunden", _
vbCritical, "Worksheet_Calculate"
Else
ThisWorkbook.ChangeLink Name:=vntLink(lngIndex), _
NewName:=strNewLink, Type:=xlExcelLinks
End If
End If
Next
Und dann muss in der Datei strNewLink auch noch ein Blatt xxx existieren, das im SVERWEIS in AH12 gebraucht wird.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Blattschutz oder Existenz der Quellmappe?
23.01.2013 01:10:44
Heinz
Hi Erich,
danke dir erst mal.
Der Fehler welcher bei dir aufgetaucht ist leigt sicher daran das du keine passende Datei und passendes Tabellenblatt hast.
Bei mir passiert DAS nichtda die Datei und das passende Tabellenblatt existiert.
Heißt zwar anders, weil ich fürs Forum andere Daten in den SVerweis genommen hab, aber ist eigentlich nicth das Prob.
Bei mir hat er ja die Fehlermeldung ausgespuckt welche ein paar Post weiter oben steht.
Und die kommt nur so lange der Blattschutz aktiv ist.
Mach ich den raus, dann gibt es keine Fehlermeldung und das Makro läuft.
Von daher brauch ich deinen Zusatz eigentlich nicht.
Gruß Heinz

Anzeige
Blattschutz aufheben ist nötig
23.01.2013 09:49:59
Erich
Hi Heinz,
warum hast du nicht gleich im ersten Beitrag des Text geschrieben, der zu dem Fehler 1004 ausgegeben wird?
"Dieser Befehl kann für ein geschütztes Blatt nicht verwendet werden..."
Wie sieht dein vergeblicher Versuch mit Unprotect und Protect genau aus?
Du hast oben mal geschrieben: "Das mit Unprotect und Protect kenne ich. Hab ich auch probiert, funzt aber leider nicht."
"funzt nicht" ist eine recht sparsame Fehlerbeschreibung...
Probier mal

Option Explicit
Private Sub Worksheet_Calculate()
Dim vntLink As Variant, lngIndex As Long
Dim strReplace As String, strNewLink As String
On Error GoTo ErrExit
Me.Unprotect "test"
If IsDate(Range("U1")) Then
If GetCustProp("LinkYear", Year(Range("U1")))  Year(Range("U1")) Then
SetCustProp "LinkYear", Year(Range("U1"))
strReplace = " " & Year(Range("U1"))
vntLink = ThisWorkbook.LinkSources
If Not IsEmpty(vntLink) Then
For lngIndex = 1 To UBound(vntLink)
strNewLink = regReplace(vntLink(lngIndex), " [0-9]{4}", strReplace)
If strNewLink  CStr(vntLink(lngIndex)) Then
If Dir(strNewLink) = "" Then
MsgBox "Datei" & vbLf & strNewLink & vbLf & "nicht gefunden", _
vbCritical, "Worksheet_Calculate"
Else
Application.EnableEvents = False
ThisWorkbook.ChangeLink Name:=vntLink(lngIndex), _
NewName:=strNewLink, Type:=xlExcelLinks
End If
End If
Next
End If
End If
End If
ErrExit:
With Err
If .Number  0 Then
MsgBox "Fehler in Prozedur:" & vbTab & "Sub 'Worksheet_Calculate'" & _
vbLf & String(40, "=") & vbLf & vbLf & _
IIf(Erl, "Fehler in Zeile:" & vbTab & Erl & vbLf & vbLf, "") & _
"Fehlernummer:" & vbTab & .Number & vbLf & vbLf & "Beschreibung:" & _
vbTab & .Description & vbLf, vbExclamation, "Fehler in Modul - Tabelle1"
.Clear
End If
End With
Me.Protect "test"
Application.EnableEvents = True
On Error GoTo 0
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Blattschutz aufheben ist nötig
23.01.2013 23:03:40
Heinz
Hi Erich,
Asche auf mein Haupt.
Ich hatte Direkt hinter den "Dim"-Angaben den folgenden Eintrag gesetzt:
ActiveWorkbook.Unprotect Password:="test"
Und direkt vor "Ende Sub" dann den Eintrag:
ActiveWorkbook.Protect Password:="test"
Das hat nicht funktioniert. Man lernt halt nicht aus. Ich dachte DAS wäre die
Möglichkeit den Schutz zu nutzen. Wie man sieht gibt es noch andere.....
Deine verbesserte Version funtioniert genauso wie ich das brauche.
Vielen herzlichen Dank dafür.
Gruß Heinz

nur zur Sicherheit
23.01.2013 23:35:53
Erich
Hi Heinz,
eigentlich gibt es nicht DEN Schutz, sondern verschiedene Schutzmechanismen auf verschiedenen Ebenen.
Du hast (erstmalig vermutlich manuell) einen Blattschutz eingerichtet (Worksheets("xyz").Protect ...)
Man kann auch einen Schutz für die Arbeitsmappe (Workbooks("Abc.xls").Protect...) einrichten.
Dabei werden ganz andere Dinge geschützt als beim Tabellenblatt.
Den Unterschied zwischen diesen beiden kannst du dir leicht in der VBA-Hilfe ansehen, wenn du dort mal nach protect suchst.
Auch in Excel kannst du leicht sehen, wie sich das Arbeitsmappen-Schützen vom Blatt-Schützen unterscheidet.
Das "Me." in meinem Code steht übrigens für das Tabellenblatt, zu dem der Code gehört.
Hier geht es also um den Blattschutz.
Noch eine Bemerkung: Wenn es um doch mal um den Schutz der Arbeitsmappe ginge, solltest du nicht "ActiveWorkbook",
sondern "ThisWorkbook" verwenden. Oder bist du sicher, dass beim Calculate-Ereignis die Mappe nicht im Hintergrund ist?
"ActiveWorkbook" ist immer die Mappe, die zufällig gerade im Vordergrund ist.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: nur zur Sicherheit
24.01.2013 00:06:36
Heinz
Hi Erich,
danke für deine Hinweise.
Ich hab auch schon mit dem Arbeitsmappenschutz gearbeitet.
Das mit This.Workbook muss ich mir aber unbedingt merken!
Gruß Heinz

AW: Link zum Archivthread
22.01.2013 23:01:50
Heinz
Hi Erich,
danke für deine Antwort.
Ja das ist der Tread. Mein aktueller Code ist wie in der Beispieldatei ersichtlich.
Da hab ich nix geändert.
In der eigentlichen Tabelle sind lediglich einige wenn abfragen und ansonsten nur Texte und Zahlen.
Halt das ganze gepserrt mit einigen "freien" Zellen zum eintragen von Daten.
Gruß Heinz

18 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige