Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
816to820
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
816to820
816to820
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makros nach Start deaktivieren

Makros nach Start deaktivieren
02.11.2006 15:20:02
Kristin
Hallo Excel Profis,
ich habe eine Arbeitsmappe, die in bestimmten Fällen ihre Makros wieder 'abstellen' soll.
Ich öffne eine Arbeitsmappe, Dialogfenster 'Markos aktiviere? -ja', in Workbook_Open() prüfe ich, ob die andere Arbeitmappe geöffnet ist jetzt suche ich danach:
- if arbeismappe_x geöffnet then 'Markos aktiviere? -nein' (natürlich ohne das Dialogfenster ;) )
Geht das per VBA nachträglich? Ich kenne das nur vor dem Öffnen einer Arbeitsmappe, müssten die Sicherheitseinstellungen sein, nur ich weiß nicht wie. Problem ist, wenn ich zum Beispiel 'Application.EnableEvents = False' nutze, dann funktionieren die Makros in der zweiten Arbeitsmappe ja nicht, oder?
ich freue mich über jeden Tipp,
schöne Grüße,
Kristin

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makros nach Start deaktivieren
02.11.2006 15:52:27
fcs
Hallo Kerstin,
meines Wissens gibt es keine Methode mit der man nach dem Öffnen der Datei nachträglich Makros in einer Datei generell deaktivieren kann.
Du könntest aber in der Workbook_Open Prozedur eine in einem allgemeinen Modul als Public deklarierte Variable setzen, wenn die Datei_X.xls geöffnet ist.
Zu Beginn aller Prozeduren, die nicht ausgeführt werden dürfen wenn Datei_X.xls geöffnet ist, prüfst du den Wert dieser Variablen und verläßt die Prozedur sofort wieder.
Gruss
Franz
Unter diese Arbeitsmappe:

Private Sub Workbook_Activate()
'Prüfung wenn Datei_X später geöffnet wird
Dim wb As Workbook
Datei_X_Open = False
For Each wb In Workbooks
If wb.Name = "Datei_X.xls" Then
Datei_X_Open = True
Exit For
End If
Next
End Sub
Private Sub Workbook_Open()
'Prüfung auf Datei_X beim Öffnen der Datei
Dim wb As Workbook
Datei_X_Open = False
For Each wb In Workbooks
If wb.Name = "Datei_X.xls" Then
Datei_X_Open = True
Exit For
End If
Next
End Sub

in einem allgemeinen Modul:

Public Datei_X_Open As Boolean
Sub Test()
If Datei_X_Open = True Then Exit Sub
End Sub

Anzeige
AW: Makros nach Start deaktivieren
02.11.2006 16:04:55
Kristin
Hallo Franz,
danke für deine schnelle Antwort :)
klingt eigentlich recht simpel was du vorschlägst, vielen Dank schon mal.
Ich warte mal, ob noch jemand eine Idee hat, denn mein Problem ist ich müsste diese Abfrage vor jedes Standard-Event von Excel bauen, also alle Workbook und Worksheet Funktionen die es so gibt, da ich alle Events in ein zentrales Modul umleite, welches bei geöffneter Datei_X nicht zur Verfügung steht. Vielleicht kann ich mir die Mühe ja sparen :) es gibt zwar CopyPaste, aber ich mag nicht so viel Code einbasteln :))
Wahrscheinlich werd ich es wohl trotzdem so machen müssen wie du vorschlägst, daher noch mal Danke :)
viele Grüße,
Kristin
Anzeige
AW: Makros nach Start deaktivieren
Orakel
Hallo Kristin,
wenn Du sowieso alle Codes in einem zentralen Modul hast - mal so ne Idee:
Mach Deine Abfrage/Prüfung in Bezug auf die Datei _X. Wenn Dein Problem zutreffend, sichere das entsprechende Modul mit den Codes,lösche es aus der Datei, importiere es bevor Du die Datei wieder schließt und lösch die Sicherung im Verzeichnis.
Ansatz:
Option Explicit
Private Sub Workbook_Open()
Dim Ordnername As Variant
Ordnername = "C:\Temp\" 'Speicherort anpassen
'hier Deine Abfrage/Prüfung erstellen,
'ob Datei _x geöffnet
With Application.VBE.ActiveVBProject
.vbComponents("Modul2").Export Ordnername & "Modul2.bas" 'Modul exportieren
.vbComponents.Remove .vbComponents("Modul2"'Modul löschen
End With
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Ordnername As Variant
Ordnername = "C:\Temp\" 'Speicherort anpassen
With ActiveWorkbook.VBProject
.vbComponents.Import Ordnername & "Modul2.bas" 'Modul importieren
.vbComponents("Modul2").Name = "Modul2" 'den Namen "Modul2" geben
End With
Kill Ordnername & "\Modul2.bas" 'Exportdatei löschen
End Sub
Gruß
Orakel
Anzeige
AW: Makros nach Start deaktivieren
03.11.2006 13:59:45
Kristin
Hallo Orakel,
der Ansatz ist spannend. Diese Möglichkeit mit Modulen umzugehen ist mir neu. Ich versuch erst mal genauer zu erleutern wie ich meins umgesetzt habe:
ich habe einen Excel-Plan erstellt, in dem es viele Formeln und Funktionalitäten gibt, von eigener Symbolleiste bis hin zu Export der Daten als Text-Datei. Beim öffnen der Arbeitsmappe lade ich ein AddOn nach, mit den ganzen Funktionen. Mit der Zeit haben sich einige Fehler im Denkansatz herausgestellt, so dass ich eine Arbeitsmappe_2 entwickelt habe und dazu auch ein leicht abgeändertes AddOn_2. Wenn ich nun eine Arbeitsmappe_1 und eine Arbeitsmappe_2 öffne stürzt mir Excel komplett ab. Da ich keine Zeit habe mich darum explizit zu kümmern, wollte ich die Abfragen wenn eine der Mappen geöffnet ist, dann öffne die andere nur im 'Lese-Modus' (Makros aktivieren = false) einbauen
Problem ist nur, dass die Makros für diese Abfrage natürlich erst aktiviert sein müssen...ein Teufelskreis. Ich glaube ich muss mit Excel und der Art zu programmieren noch einige Kniffe dazu lernen. :)
Nun ja, ich glaube ich entscheide mich für eine MSGBox die das Problem und die Lösung beschreibt, nämlich als Benutzer selber darauf zu achten, ob ein anderes Arbeits-Blatt geöffnet ist, und schließe die Datei dann ganz. :)
vielen Dank auf jeden fall für den Tipp, ich glaube ich kann das an anderer Stelle noch einsetzen... auf jeden Fall könnte man mit dem Vorschlag das ganze Prinzip, mit dem ich arbeite überdenken. Wenn man .bas-Dateien so einfach einbinden kann, wäre das AddOn ja überflüssig...mhh ich glaube ich muss noch viel (!) darüber lesen - während ich so schreibe fällt mein Prinzip in sich zusammen und ich müßte alles mal aufräumen... wenn ich doch nur die Zeit hätte :)
viele Grüße und bestimmt auf bald,
Kristin
PS: weitere Anregungen sind sehr gern gesehen :)
Anzeige
AW: Makros nach Start deaktivieren
Orakel
Hallo Kristin,
so weitreichend wie Du vorträgst habe ich das eigentlich nicht angedacht. Aber Du hast recht. Eigentlich könnte man in einem Verzeichnis einen reichhaltigen Schatz an Modulen hinterlegen. Dem Grunde nach müsste es reichen, mit kurzem Import beim "Workbook_open" einer Datei die entsprechenden Module zu assimilieren. Aber auch die Borg sind mit "WIR" immer wieder auf Widerstand gestoßen. Zumindest für ein in sich geschlossenes Konzept/Thema wäre es ein Versuch wert.
Kann ich Dir irgendeine Arbeit abnehmen? ;-)
Gruß
Orakel
AW: Makros nach Start deaktivieren
06.11.2006 10:19:12
Kristin
Hallo Orakel,
kennst du diese Projekte, die immer und immer größer werden? In denen verschiedene Leute basteln? Und am Ende das Ganze dann überladen ist, und man weiß nicht mehr wie man das Projekt retten soll? an dem Punkt bin ich jetzt.
Ich habe sehr damit zu kämpfen, dass sobald ich eine Arbeitsmappe öffne, das Blatt ja schon veraltet ist. Excel ist so statisch. Wenn ich mir überlege es kommt mal eine neue Spalte hinzu, dann funktionieren diese Pläne schon nicht mehr, sondern nur noch die neuen, die ja auch sofort wieder alt sind ... das liegt daran, das ganze Formel-Blöcke zur Laufzeit eingebaut werden, alles auf Knopfdruck.. naja, mit Php könnte man diese alten Pläne im nachhinein halt locker durch die Spalte ergänzen, aber in Excel irgendwie nicht.
Ich muss da umdenken. Momentan baue ich gerade eine Versionierung, sprich ich versuche zukünftige Versionsprobleme durch etliche Abfragen zu umgehen. Ich empfinde das aber als sehr schwer - zumindest mit Excel :)
Nun gut, ich werde mal anfangen, meinen alten Weg zu Ende zu gehen, und vielleicht nach und nach neue Wege einzubauen :)
vielen Dank für Dein Interesse und deine Hilfe,
man sieht sich hier hoffentlich mal wieder
viele Grüße
Kristin
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige