Stefano hat ein Problem in seinem Unternehmen, bei dem Benutzer häufig eine Arbeitsmappe vom Server auf ihren eigenen Computer kopieren, Änderungen an der Arbeitsmappe vornehmen und dann die Arbeitsmappe drucken. Er möchte erzwingen, dass nur die ursprüngliche Arbeitsmappe gedruckt werden darf, und fragt sich, ob es eine Möglichkeit gibt, das Drucken zu verbieten, es sei denn, die Arbeitsmappe befindet sich auf dem Server.

Es gibt keine native Möglichkeit, dies in Word zu tun. Falls gewünscht, können Sie ein Makro erstellen, das die folgenden zwei Aktionen ausführt:

  1. Untersuchen Sie den Pfad für das aktuelle Dokument. Wenn der Pfad etwas anderes als der Pfad für Ihren Server ist, verbieten Sie das Drucken

Hier ist ein Beispiel für ein solches Makro. Sie sollten diese bestimmte Version in das ThisWorkbook-Modul einfügen. Es wird automatisch jedes Mal ausgeführt, wenn der Benutzer drucken möchte.

Private Sub Workbook_BeforePrint(Cancel As Boolean)

Dim sFile As String

sFile = "\\Server.name\folder\path\My file name.xlsm"



If ThisWorkbook.FullName <>  sFile Then         MsgBox "Printing only possible with server copy"

Cancel = True     End If End Sub

Beachten Sie, dass die Variable sFile den vollständigen Pfad zur Arbeitsmappe enthält (dorthin, wo sich die Arbeitsmappe auf dem Unternehmensserver befinden sollte). Wenn der Name der aktuellen Arbeitsmappe nicht mit diesem übereinstimmt, ist das Drucken deaktiviert.

Bei dieser Art von Makro liegt möglicherweise ein Problem vor, das mit dem Pfad zur Datei zusammenhängt. Es ist möglich, dass der Pfad für den Server von Benutzer zu Benutzer unterschiedlich ist. Das Beispielmakro sucht nach einem Pfad, der eine UNC (Universal Naming Convention) enthält, aber möglicherweise funktionieren nicht alle Pfade auf diese Weise. Beispielsweise kann der Ordner auf dem Server einem Laufwerksbuchstaben zugeordnet sein. Auf einem System lautet der Pfad möglicherweise g: / myserver / myfolder / und auf einem anderen z: / myserver / myfolder /.

Das Makro kann dies nicht zuverlässig kompensieren.

Möglicherweise können Sie dies mit einem definitiv Low-Tech-Ansatz umgehen. Legen Sie zunächst eine kleine Textdatei (erstellt mit Notepad) in demselben Ordner auf dem Server wie die Arbeitsmappe ab. Es ist nicht wirklich wichtig, was die Textdatei enthält. Fügen Sie dann dieses Makro zu Ihrem ThisWorkbook-Modul hinzu:

Private Sub Workbook_BeforePrint(Cancel As Boolean)

Dim sPath As String     Dim sFile As String

sPath = ThisWorkbook.Path     sFile = sPath & "\" & "TestFile.txt"



If Dir(sFile) = "" Then         MsgBox "Printing only possible with server copy"

Cancel = True     End If End Sub

Das Makro ermittelt den Pfad der aktuell geöffneten Arbeitsmappe. Dies wird dann dem Namen der kleinen Textdatei hinzugefügt, die Sie im selben Ordner wie die Arbeitsmappe abgelegt haben. (In diesem Fall habe ich dieser Datei den Namen TestFile.txt gegeben.) Mit dem Befehl Dir wird dann überprüft, ob die Datei vorhanden ist. Wenn es nicht vorhanden ist, wird der Druckvorgang abgebrochen.

Eine umfassendere Lösung könnte darin bestehen, das zu verwenden, was Microsoft als IRM (Information Rights Management) bezeichnet. Mit dieser Lösung, die sich gut für die Verwendung in einer Unternehmensumgebung eignet, können Sie steuern, was Personen mit Ihren Dokumenten tun können und was nicht. Ein guter Ort, um etwas über IRM zu lernen, ist hier:

https://support.office.com/en-us/article/information-rights-management-in-office-c7a70797-6b1e-493f-acf7-92a39b85e30c

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (13526) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365.