Ihre Kunden erzwingen Aktivieren Excel-Makros

Um jedes Makro in Excel zu verwenden, müssen Ihre Benutzer Makros aktivieren. Das heißt, sie müssen Excel Erlaubnis geben, Makros in ihrer Umgebung zu laufen. So aktivieren Sie Makros, klicken Sie auf Benutzer in der Sicherheitswarnung Aktivieren Sie die Schaltfläche Inhalt, die oberhalb der Bearbeitungsleiste erscheint.

bild0.jpg

Das Endergebnis ist, dass Sie alle Phantasie Makros in der Welt schreiben kann, aber sie werden nie ausgeführt werden, wenn die Benutzer-Makros aktivieren. Es stellt sich die Frage- können Sie Benutzer zwingen, Makros zu aktivieren? Die Antwort ist ja - mit etwas Trickserei.

Die Idee ist, relativ einfach. Sie erstellen ein Blatt mit dem Namen, sagen wir, START. Das Blatt enthält nur eine einfache Warnung besagt, dass Makros muss aktiviert sein. Anschließend blenden Sie alle Blätter in der Arbeitsmappe mit Ausnahme, dass START Blatt. Schließlich schreiben Sie ein einfaches Makro, das alle Blätter blendet, wenn die Arbeitsmappe geöffnet wird.

image1.jpg

An diesem Punkt, wenn die Arbeitsmappe geöffnet wird, wird Excel den Benutzer auffordern, auf Makros aktivieren. Die Benutzer werden gezwungen, dies zu tun, weil alles, was sie sehen Ihr Startblatt ist. Die anderen Blätter werden ausgeblendet!

Um diese Technik funktioniert, müssen Sie zwei Makros: Ein Makro versteckt alle, aber die START Blatt, wenn die Arbeitsmappe geschlossen wird, und ein anderes Makro, das alle, aber die START Blatt blendet, wenn die Arbeitsmappe geöffnet wird.

Zunächst befassen sich mit den Aktionen, die passieren müssen, wenn die Arbeitsmappe geschlossen wird. :

  1. Visual Basic-Editor aktivieren, indem Sie ALT + F11 auf Ihrer Tastatur drücken

  2. Im Projekt-Fenster finden Sie Ihr Projekt / Arbeitsmappe Namen und klicken Sie auf das Pluszeichen neben ihm alle Blätter zu sehen.

  3. Klicken Sie auf Thisworkbook.

  4. In der Event-Dropdown-Feld, wählen Sie das Ereignis Before.

    image2.jpg
  5. Geben Sie den folgenden Code ein:

Private Sub Workbook_BeforeClose (As Boolean Abbrechen) "Schritt 1: Erklären Sie Ihre variablesDim ws Als Worksheet'Step 2: Sichtbar machen die Start SheetSheets (" START ") Visible = xlSheetVisible'Step. 3: Starten Sie durch alle worksheetsFor Jeder ws In ThisWorkbook.Worksheets looping "Schritt 4: Überprüfen Sie jedes Arbeitsblatt nameif ws.Name lt;> "START" Then'Step 5: Ausblenden der sheetws.Visible = xlVeryHiddenEnd If'Step 6: Loop zum nächsten worksheetNext ws'Step 7: Speichern Sie die workbookActiveWorkbook.SaveEnd Sub

In Schritt 1 Sie ein Objekt namens ws deklarieren für jedes Arbeitsblatt einen Speicherbehälter zu schaffen, durch Sie schlingt.

In Schritt 2 stellen Sie sicher, dass der START-Blatt sichtbar ist.

In Schritt 3 starten Sie das Looping, erzählt Excel, dass Sie alle Arbeitsblätter in dieser Arbeitsmappe auswerten möchten.

In Schritt 4, vergleichen Sie einfach den Namen START auf das Blatt, die derzeit durchgeschleift wird. Dieser Schritt stellt sicher, dass die Maßnahmen, die nächsten kommen, um alle Blätter außer dem START-Folie aufgebracht werden.

Wenn die Blattnamen unterschiedlich sind, in 5 Schritt verstecken Sie das Blatt durch die XlVeryHidden Eigenschaft. Diese Eigenschaft verbirgt nicht nur das Blatt, sondern verhindert auch den Benutzer von Hand Einblenden es durch die Benutzeroberfläche.

Sie Schleife das nächste Blatt, um wieder in Schritt 6.

In Schritt 7, nachdem alle Blätter ausgewertet werden, speichert das Makro die Arbeitsmappe und endet.

Nun müssen Sie ein Makro schreiben, um alle Aktionen behandeln, die passieren müssen, wenn die Arbeitsmappe wird geöffnet:

  1. Visual Basic-Editor aktivieren, indem Sie ALT + F11 drücken.

  2. Im Projekt-Fenster finden Sie Ihr Projekt / Arbeitsmappe Namen und klicken Sie auf das Pluszeichen neben ihm alle Blätter zu sehen.

  3. Klicken Sie auf Thisworkbook.

  4. In der Event-Dropdown-Feld, wählen Sie das Open-Ereignis.

    image3.jpg
  5. Geben Sie den folgenden Code ein:

'Private Sub Workbook_Open () Schritt 1: Erklären Sie Ihre variablesDim ws Als Worksheet'Step 2: Starten Sie durch alle worksheetsFor Looping Jeder ws In ThisWorkbook.Worksheets'Step 3: Sichtbar machen Alle Worksheetsws.Visible = xlSheetVisible'Step 4: Loop zum nächsten worksheetNext ws "Schritt 5:. ausblenden des Start SheetSheets (" START ") Visible = xlVeryHiddenEnd Sub

In Schritt 1 Sie ein Objekt namens ws deklarieren einen Speicherbehälter für jedes Arbeitsblatt zu erstellen Sie eine Schleife durch.

In Schritt 2 starten Sie den Looping, erzählt Excel, dass Sie alle Arbeitsblätter in dieser Arbeitsmappe auswerten möchten.

In Schritt 3 sichtbar machen Sie das Blatt, das zur Zeit geschleift wird. Dieser Schritt blendet effektiv alle Arbeitsblätter als jedes Blatt sichtbar gemacht wird.

Sie Schleife das nächste Blatt, um wieder in Schritt 4.

Nachdem alle Blätter sichtbar gemacht werden, Schritt 5 blendet das START Blatt. Auch hier verwenden Sie die XlVeryHidden Eigenschaft, so dass der Benutzer nicht in der Lage sein wird, das Blatt von Hand sichtbar machen, indem Sie die Benutzeroberfläche verwenden.

Nachdem beide Makros implementiert sind, werden Sie eine Arbeitsmappe, die nur funktioniert, wenn der Benutzer Makros ermöglicht!

Menü