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

excel vba fehler produzieren

excel vba fehler produzieren
20.04.2016 14:41:41
r2d2

Hallo,
wie kann ich per vba einen gewollten Fehler produzieren, damit danach keine Makros mehr ausgeführt werden können?
Also wenn man z.B. auf ein "bestimmtes" Tabellenblatt geht sollen alle Makros die in der Arbeitsmappe sind nicht mehr gehen:

Sub Worksheet_Activate()
' code für Fehler damit keine Makros mehr ausführbar sind '
End Sub
Danke, Gruß, r2d2

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: excel vba fehler produzieren
20.04.2016 14:43:51
Rudi Maintaire
Halo,
warum sollten nach einem Fehler keine Makros mehr ausführbar sein?
Gruß
Rudi

AW: excel vba fehler produzieren
20.04.2016 14:49:42
Daniel
Hi
du könntest allen Makros in der Arbeitsmappe folgende Befehlszeile an den Anfang stellen:
If ActiveSheet.Name = "ein bestimmtes Tabellenblatt" then Exit Sub
Gruß Daniel

AW: excel vba fehler produzieren
20.04.2016 14:52:11
r2d2
Nein, ich komme an die bestehnden Makros nicht mehr rann.
Ich möchte nachträglich in eine Vorlage einen Schutz einbauen (zeitliche Gültigkeit der Vorlage)
und das geht nur über das einfügen eines Tabellenblattes, in dem der Code dann ist.

AW: excel vba fehler produzieren
20.04.2016 15:02:54
Daniel
sorry, verstehe ich nicht.
vor allem nicht den Zusammenhang von dieser Anforderung und deiner Eingangsfrage.
warum kommst du an die bestehenden Makros nicht mehr ran?
bist du nicht der Autor dieser Makros?
Gruß Daniel

Anzeige
AW: excel vba fehler produzieren
20.04.2016 15:20:26
r2d2
Herrje...
Ich habe eine Vorlage an x User verteilt und den VBA Code mit einem Kennwort geschützt.
Nun muß ich nachträglich etwas einbauen, will den Usern aber keine neue Vorlage sonern
nur einen Patch zur Verfügung stellen. Eben dieser Patch kopiert in die bestehende Vorlage
ein neues Tabellenblatt, das den Code mit der ergänzung enthält. Eben diese Ergänzung soll
u.a. beinhalten, daß die Vorlage nach dem 1.6.2016 nicht mehr zu verwenden ist. Und damit
das dann auch wirkung zeigt sollen alle Makros in der Tabelle nich mehr funktionieren.
so ich hoffe das war verständlich?
Danke, Gruß. r2d2

Anzeige
AW: excel vba fehler produzieren
20.04.2016 15:32:14
Daniel
Hi
ich denke nicht, dass sowas funktionieren kann.
wenn du den Anwendern ein Patch schicken kannst, dann kannst du ihnen auch eine neue Vorlage schicken.
du kannst die Vorlage ja so schreiben, dass sie beim ersten Öffnen die alte Vorlage öffnet, sich die Daten aus der alten Vorlage in die neue Vorlage kopiert, dann die alte Vorlage schließt, löscht und die neue Vorlage unter dem Namen der neuen Vorlage speichert.
das hätte dann den gleichen Effekt wie ein Patch und es einfacher, Zellinhalte zwischen zwei Dateien zu transferieren als Makrocode.
Zumal für das Manipulieren von Code durch ein Makro müsste der Anwender das Häkchen "Zugriff auf das VBA-Projekt vertrauen" setzen und dass kann nur der Anwender selbst tun.
Gruß Daniel

Anzeige
Du kannst Xl uU abstürzen lassen, wenn du ein ...
20.04.2016 15:04:55
Luc:-?
…Makro aufrufst, das sich selbst bzw ein von ihm aufzurufendes zuvor löscht, r2d2.
Gruß, Luc :-?
Besser informiert mit …

AW: Du kannst Xl uU abstürzen lassen, wenn du ein ...
20.04.2016 15:24:07
r2d2
Da kommt dann zwar eine Fehlermeldung, alle anderen Makros funktionieren aber weiterhinn.

Das kommt darauf an, wie du es realisierst. owT
20.04.2016 16:09:50
Luc:-?
:-?

AW: excel vba fehler produzieren
20.04.2016 15:37:33
ChrisL
Hi
Ein anderer Ansatz ist die Makros mittels eines anderen "Patch-Makros" zu löschen oder zu bearbeiten.
z.B. Entfernen bestehender Module:
With ActiveWorkbook.VBProject
.VBComponents.Remove .VBComponents("Modul1")
.VBComponents.Remove .VBComponents("Modul2")
.VBComponents.Remove .VBComponents("Modul3")
End With
Müsstest dich mal durch-googeln...
cu
Chris

Anzeige
AW: excel vba fehler produzieren
20.04.2016 15:40:16
r2d2
Danke, nein.
Ich möchte ja weder die Makros löschen noch ändern.
Es soll halt ab dem 1.6.2016 nix mehr gehen.
Erst wenn ich dann eine weiter änderung (also am/nach dem 1.6.2016) vornehme,
dann soll die Datei wieder gehen.

AW: excel vba fehler produzieren
20.04.2016 16:21:27
Daniel
Hi
du könntest höchsten die automatischen Event-Makros verhindern, indem du im Worksheet-Activate-Event des neuen Tabellenblatts den Befehl Application.EnableEvents = False ausführen lässt.
Dann werden, wenn dieses Tabellenblatt einmal aktiviert wurde, keine Eventmakros wie SelectionChange, Change usw ausgeführt.
Aber wie gesagt, das funktioniert nur mit den Eventmakros und es gilt dann für alle geöffneten Exceldatein.
Dh wenn der Anwender parallel eine weiter Exceldatei geöffnet hat, die solche Eventmakros verwendet, funktionieren diese dann auch nicht mehr! (dh. du könntest dir Ärger einhandeln, wenn du sowas machst).
für das was du vor hast musst du schon tiefer in den Code eingreifen und brauchst im Prinzip neue Makros.
Gruß Daniel

Anzeige
AW: excel vba fehler produzieren
20.04.2016 16:25:27
ChrisL
Hi
Musst ja auch nicht löschen. Kannst auch in jedes Makro folgende Zeile einfügen:
If DateSerial(2016, 6, 1) <= Date Then End
Sicherlich schlauer wie Excel zum Absturz zu bringen.
cu
Chris

AW: excel vba fehler produzieren
20.04.2016 16:32:39
Daniel
Hatte ich ja auch schon vorgeschlagen.
Jedes Makro ändern will er aber nicht.
Wird er aber wohl tun müssen, weil es einen Befehl welcher das Ausführen von allgemeinen Makros verhindert, nicht gibt.
lediglich für die Automatischen Eventmakros könnten unterbunden werden.
Gruß Daniel

richtig...
20.04.2016 16:44:27
ChrisL
Hi Daniel
Wollte auch nicht auf einen Beratungsfehler hinweisen. Eher ein Problem der Beratungsresistenz seitens Empfänger... :) (nicht bös gemeint r2d2)
cu
Chris

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige