Einschränken, wo eine Arbeitsmappe verwendet wird (Microsoft Excel)
Shay arbeitet mit einer Freiwilligenorganisation zusammen und sie haben eine Excel-Arbeitsmappe speziell für ihre Freiwilligen entwickelt. Sie möchten nicht, dass es kopiert oder an externe Personen weitergegeben wird. Shay fragt sich daher, ob es eine Möglichkeit gibt, die Arbeitsmappe so zu schützen, dass sie nur für einen bestimmten Computer und keine anderen funktioniert.
Es gibt Möglichkeiten, die Sicherheit von Arbeitsmappen zu erzwingen, es sind jedoch Überlegungen zu berücksichtigen, bevor Sie sich für den besten Weg entscheiden.
Verstehen Sie, dass fast jeder Ansatz die Benutzer auf die eine oder andere Weise stören wird. Der Ansatz, den Sie wählen, hängt möglicherweise auch davon ab, ob sich die Benutzer ausschließlich in Ihrem internen Netzwerk befinden oder ob sie Freiwillige sind, die nicht mit Ihrem Netzwerk verbunden sind.
Ein einfacher Weg, um zu beginnen, besteht darin, die Arbeitsmappe einfach mit einem Passwort zu schützen und dann Ihren Freiwilligen das Passwort mitzuteilen. Der zweifache Nachteil dabei ist, dass jedes Passwort, das Sie an Ihre Freiwilligen weitergeben, weiterhin funktioniert, nachdem sie keine Freiwilligen mehr waren, und für jeden, an den die Freiwilligen das Arbeitsbuch weitergeben könnten. Dies gilt auch dann, wenn Sie für jeden Freiwilligen ein individuelles Passwort eingeben.
Jeder andere Ansatz würde das Hinzufügen von Makros zur Arbeitsmappe erfordern.
Eine gute Möglichkeit für das Makro ist, den Namen des Computers zu überprüfen, auf dem die Arbeitsmappe geöffnet wird. Dies ist ein Beispiel für ein solches Makro:
Private Sub Workbook_Open() Dim sComputerName As String Dim sPossible As String Dim sTemp As String sPossible = "[NEWDELL][Computer1][Order Entry][Dan's System]" sPossible = sPossible & "[Computer2][Computer3]" sComputerName = Environ("computername") sTemp = "[" & sComputerName & "]" If InStr(sPossible, sTemp) Then MsgBox "Welcome to the workbook." Else MsgBox "You are not authorized to open this workbook." Workbooks(ActiveWorkbook.Name).Close SaveChanges:=False End If End Sub
Die Idee hinter dem Makro ist, dass Sie in der Zeichenfolge sPossible die Namen aller Computer definieren, auf denen die Arbeitsmappe geöffnet werden darf. Sie müssen lediglich sicherstellen, dass die Maschinennamen genau richtig geschrieben sind, und sie in eckige Klammern in die sPossible-Zeichenfolge einfügen. Die Environ-Funktion gibt den tatsächlichen Computernamen zurück, wird in die sTemp-Variable in den Klammern eingefügt, und dann wird die InStr-Funktion verwendet, um festzustellen, ob sie in der Liste der möglichen Computer enthalten ist.
Wenn dies der Fall ist, wird ein Meldungsfeld angezeigt. Ist dies nicht der Fall, wird ein Meldungsfeld angezeigt und die Arbeitsmappe wird geschlossen, ohne dass Änderungen gespeichert werden.
Wenn Sie etwas bevorzugen, das noch sicherer ist, können Sie auch die Environ-Funktion verwenden, um den „http://username-password.com/[username]“
zurückzugeben Wert, der Ihnen den Benutzernamen für das auf dem Computer verwendete Konto gibt.
Dieser Makroansatz ist relativ einfach, erfordert jedoch die Kenntnis von Computernamen (und / oder Benutzernamen), bevor er ordnungsgemäß funktioniert. Es wird auch davon ausgegangen, dass der Benutzer nicht genug über Excel weiß, um Makros zu umgehen, indem er beim Starten des Programms die Umschalttaste gedrückt hält. Wenn Sie den Verdacht haben, dass der Benutzer so viel weiß, müssen Sie weitere Schritte ausführen, z. B. die folgenden:
-
Stellen Sie sicher, dass ein einzelnes Arbeitsblatt in der Arbeitsmappe sichtbar ist. Alle anderen Arbeitsblätter sollten „sehr versteckt“ sein, damit der Benutzer sie nicht mit normalen Schritten anzeigen kann.
-
Wenn das Makro feststellt, dass der Benutzer zulässig ist, blenden Sie das einzelne sichtbare Arbeitsblatt aus und machen Sie alle „sehr versteckten“ Arbeitsblätter sichtbar.
-
Wenn die Arbeitsmappe geschlossen ist, kehren Sie den Vorgang um und blenden Sie alle Arbeitsblätter aus (setzen Sie die Visible-Eigenschaft für jedes von ihnen auf xlSheetVeryHidden) und machen Sie das einzelne Arbeitsblatt wieder sichtbar.
Mit diesem Ansatz wird sichergestellt, dass der Benutzer selbst dann, wenn er Makros deaktiviert (indem er beim Start die Umschalttaste gedrückt hält), nicht zu den Arbeitsblättern gelangen kann, da ein Makro erforderlich ist, um sie sichtbar zu machen.
Sie können eine Variation des obigen Ansatzes verwenden, sodass Sie anstelle der Environ-Funktion das Makro auf das Vorhandensein einer vorgegebenen Datei an einem bestimmten Speicherort im System prüfen lassen können.
Dies bedeutet natürlich, dass Sie eine Möglichkeit benötigen, das System im Voraus in den Griff zu bekommen, um die richtige Datei am richtigen Ort abzulegen.
Unabhängig davon, welchen makrobasierten Ansatz Sie wählen, sollten Sie sicherstellen, dass das VBA-Projekt für die Arbeitsmappe mit einem Kennwort geschützt ist. Dadurch wird verhindert, dass jemand Ihren Makrocode überprüft, um herauszufinden, was mit dem Schutz geschieht.
Es gibt noch etwas, das Sie immer beachten müssen, wenn Sie versuchen, Ihre Arbeitsmappen zu sichern: Welche Sicherheitsvorkehrungen Sie auch treffen, sie können immer mit genügend Wissen und Geduld umgangen werden. Wenn Ihre Benutzer technisch nicht so anspruchsvoll sind, sollten Sie keine Probleme haben. Wenn sie jedoch viel über Excel und Makros wissen, sind alle Wetten ungültig.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (13666) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365.