ich habe leider keinerlei VBA-Kenntnisse ... Beim Lesen anderer Forenbeiträge zu verwandten Themen bin ich mehrfach auf VBA gestoßen ... nur ... ich hab wirklich überhaupt keine Ahnung davon - leider. Und mal eben einen VBA-Schnellkurs quasi 'nebenbei' absolvieren zu wollen wäre vermutlich vermessen.
Ich habe hier in einem anderen Forenbeitrag (Thema: Spalten in anderer Excel-Datei duplizieren (alternativ: Berechtigungen Preislisten)) einen Lösungsansatz von Schauan/André gefunden, der eine Formel entwickelt hat, die es ermöglicht, bestimmte Spalten eines Tabellenblattes nur für bestimmte Nutzer sichtbar zu machen. Als ich das las dachte ich, mein Problem ließe sich evtl. ebenfalls mit einer Formel lösen. Hab nur wirklich keine Ahnung, wie die aussehen müsste. Vielleicht liege ich damit auch völlig falsch.
Alternativ warte ich auf Käpt'n Blaubärs altes Schätzchen. Würde halt nur gerne den Kram fertig bekommen. Der Urlaubsplan soll zum Jahreswechsel laufen ...
Wenn also jemand noch 'ne Idee hat - ich wäre eine sehr dankbare 'Abnehmerin'.
mit diesem VBA-Makro in "DieseArbeitsmappe" kannst Du über den Windows-Anmeldenamen eine Entscheidung treffen, welche Benutzer welche Tabellenblätter sehen und bearbeiten dürfen:
Code:
Private Sub Workbook_Open() Dim s As String
s = VBA.Environ("Username")
'Datei schreibgeschützt öffnen 'Ausdruck.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad) ' If Environ("username") <> "Rabe" Then ' Application.DisplayAlerts = False ' Workbooks.Open ThisWorkbook.FullName, , True ' End If
With ThisWorkbook Select Case s 'Tabellen, Bereiche und Formularschaltflächen ausblenden, je nach Account Case Is = "Master", "Chef", "Master-Chef": 'lesen und schreiben alle Blätter For i = 1 To Sheets.Count .Sheets(i).Visible = True .Sheets(i).Unprotect 'Password:="test" Next i
Case Is = "Kollege1", "Kollege2", "Kollege3": 'lesen alle Blätter For i = 1 To Sheets.Count .Sheets(i).Visible = True Next i .Sheets("Tabelle1").Visible = True Case Is = "Kollege4": ' alle lesen, bis auf Tabelle2 For i = 1 To Sheets.Count .Sheets(i).Visible = True .Sheets(i).Protect 'Password:="test2" Next i .Sheets("Tabelle2").Visible = False Case Else 'Datei schreibgeschützt öffnen 'Ausdruck.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad) Application.DisplayAlerts = False Workbooks.Open ThisWorkbook.FullName, , True .Sheets("Tabelle3").Activate End Select End With Application.DisplayAlerts = True
danke für das Makro! Bin gestern leider nicht dazu gekommen mich damit zu beschäftigen. Sitze nun seit einigen Stunden daran und kriege es einfach nicht hin. Mir fehlen offenbar grundsätzliche Kenntnisse, um das Makro in eine Probedatei zu integrieren.
Habe immerhin den Menüpunkt 'Entwicklertools' aktiviert bekommen. Und habe Makros in meinem Probedokument zugelassen (denke ich zumindest - siehe Screenshot im Anhang). Aber dann komme ich nicht weiter.
Ich will doch kein Makro aufzeichnen. Statt dessen habe ich versucht das von Dir entwickelte Makro im VBA-Fenster als Makro, dass sich auf die geöffnete Arbeitsmappe bezieht, abzuspeichern. Aber ich kriege immer wieder den Hinweis, dass mein Dokument keine Makros zulässt ... Screenshot dazu im Anhang . Kannst Du mir sagen, was ich falsch mache?
Auch ist mir nicht ganz klar, was ich an Deinem Makro verändern muss, um es für mich brauchbar zu machen. Ich arbeite mit 2 unterschiedlichen Dateitypen. 1. die individuellen Arbeitszeiterfassungstabellen, auf die nur der jeweilige Mitarbeiter (und ich) Zugriff haben sollen. Diese sind bislang mit individuellen Passwörtern geschützt. 2. dem Urlaubsplan, auf den nur ich Zugriff haben soll, der aber auf alle unter 1. genannten Tabellen zugreifen muss.
Die individuellen Passwörter der Arbeitszeiterfassungstabellen könnte ich nun mit Deinem Makro ersetzen, indem ich "Master "Chef" und "Master-Chef" durch den Mitarbeiter und meinen Namen ersetze, oder? Heißt das im Umkehrschluss, dass alle anderen Mitarbeiter die Datei überhaupt nicht öffnen können? So müsste es nämlich sein.
Was muss ich ggf. sonst noch an Deinem Makro ändern? Oder muss ich alles löschen, was ich nicht benötige, damit es keine Fehlermeldungen gibt?
Du merkst, ich habe wirklich keine Ahnung ... Sorry!
Vorab allerbesten Dank für Deine Hilfe und evtl. auch die von anderen hilfsbereiten Menschen!
05.12.2017, 19:13 (Dieser Beitrag wurde zuletzt bearbeitet: 05.12.2017, 19:14 von Rabe.)
Hi,
ich komme erst morgen dazu, Dir weitere Unterstützung zu geben, aber vielleicht kann einer der Anderen helfen (die sind die VBA-Profis, ich bin nur Lehrling).
Zuallererst:
Datei als XLSM oder XLSB abspeichern, damit Makros möglich sind.
Bin im Augenblick arbeitsmäßig etwas im Vorweihnachtsstress. Weiß nicht, wie regelmäßig ich dazu komme an den Tabellen weiterzuarbeiten. Insofern ... fühl' Dich von meinem Kram zeitlich bitte nicht unter Druck gesetzt.
ich bin die ganze Zeit damit beschäftigt, von Hamburg nach Dortmund nach Karlsruhe und nach Gengenbach und wieder zurückzufahren. Inzwischen komme ich mir vor, wie in einer Achterbahn und bin ziemlich kaputt.
Mir ist aber eingefallen, daß Du unlängst jemanden bei ebendieser Datei geholfen hast. Damit bist Du im Besitz der absolut neuesten Version. Ich bitte Dich, diese Datei an die Gabi weiterzuleiten. Die soll mal schauen, ob das eine Möglichkeit wäre, die man für sie weiter- und umschreiben könnte, oder ob ich damit total danebenliege.
Ich danke Dir für Deine Hilfe.
So, und nun ist Schluß für mich. Mal sehen, was mir mein Kopfkissen zu erzählen hat.
Das Master-Passwort ist "nur ich". Wenn der Master eingeloggt ist, kann für jeden Benutzer ein Passwort festgelegt werden.
Bei Aufruf eines Benutzers werden dann die Blätter Tabelle1 und Tabelle2 angezeigt, die je nach Einstellungen auf der Master-Seite zum Schreiben und Lesen oder nur zum Lesen geöffnet sind. Ein individuelles Blatt, das nur dieser Nutzer sehen und bearbeiten kann, ist noch nicht implementiert, das könnte aber sicher eingebaut werden.
danke für Eure Zeit, euren Gehirnschmalz und die Datei! :)
Diese hatte ich auf der Suche nach einer Lösung meines Problems (glaube ich) auch schon mal am Wickel. Hatte sie jedoch verworfen, weil sie nicht so richtig zu passen schien. Aber vielleicht lässt sie sich ja umstricken.
Das Ganze müsste so aufgebaut sein, dass beim Einloggen eines Mitarbeiters nicht die derzeit vorgesehenen 2 Arbeitsblätter pro Nutzer/Mitarbeiter zu sehen sind sondern die jeweilige Arbeitszeiterfassungsdatei bzw. die darin enthaltenen Arbeitsblätter (siehe die Datei, die ich hier bereits hochgeladen habe). Jeder Mitarbeiter darf dabei nur seine eigenen Arbeitsblätter sehen und beschreiben dürfen. Wahrscheinlich wäre es sogar möglich, dass meine Urlaubsübersichtsdatei (hatte ich ebenfalls zu Anfang hier hochgeladen) auch in Peters Datei intergriert werden könnte, oder?
Aber auch Ralfs VBA-Programmierung von Vorgestern schien für mich ziemlich brauchbar. Ich hatte nur leider heute noch keine Zeit mich weiter damit zu beschäftigen. Und - ich bin bei all dem leider völlig abhängig von Euren Kennissen. Was schlagt ihr vor?
Ich bin erst Morgen wieder online. Habe gleich für den Rest des Tages außerhalb Termine.
die Frage ist: sind es für jeden Mitarbeiter einzelne Dateien (Mappen) oder einzelne Arbeitsblätter, alle in einer einzigen Datei. Und ist Deine Urlaubsübersicht eine weitere Datei oder als Arbeitsblatt Teil der einzigen Datei.