Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Globale Variable für geöffnete Arbeitsmappen

Globale Variable für geöffnete Arbeitsmappen
03.12.2006 02:06:15
doey
Hi,
hab ein Problem!
Habe eine Arbeitsmappe,welche von Woche zu Woche kopiert wird.
Diese Arbeitsmappe enthält ein Skript, dass bei Workbook Open ein AddIn vom Server zur lokalen Festplatte kopiert und anschließend läd.
Diese Ausführung möchte ich umgehen, denn wenn ich z.B. mir zwei Dateien (eine aus der Vorwoche und eine aus der aktuellen Woche anschauen möchte, kommt eine Fehlermeldung, dass das AddIn bereits benutzt wird und keinen Zugriff darauf habe.
Nun stell ich mir vor, dass ich einen Zähler vor diesen Kopiervorgang einbaue und abfrage ob das AddIn kopiert werden soll oder nicht! Dieser Zähler soll die gleichen Mappen zählen und bei WorkbookbeforeClose den Zähler wieder runtersetzen.
Wenn der Zähler wieder bei 1 am Schluss ist, kann das Addin und Menü entladen werden, ansonsten soll das Skript verlassen werden.
hier ein kleines beispiel, was ich meine:
Workbook Open ()
If x = 1 then 'wenn nur eine Mappe offen ist
soll AddIn kopiert werden!
Menü geladen werden
x = x + 1 ' Zähler hoch
Else
if x größer 1 then
exit sub
End if
End if
End sub
Workbook Before Close ()
If x = 1 then
entlade das Menü
entlade AddIn
else
if x größer 1 then
exit sub
end if
end if
end sub
Hierfür wird, denke ich eine globale Variable für x benötigt, weil diese Variabel ja für mehrere Arbeitsmappen zur Abfrage benötigt wird, oder?
Vielleicht weiß jemand eine bessere Lösung für dieses Problem.
Hoffe es war einigermaßen verständlich, was ich möchte?!?!
Wäre super, wenn mir jemand behilflich sein könnte!
Gruß doey
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Globale Variable für geöffnete Arbeitsmappen
03.12.2006 03:20:06
Nepumuk
Hallo doey,
ich habe mal ein Addin mit einer globale Klasse für alle Variablentypen geschrieben. Darauf kannst du aus allen geöffneten Mappen, über eine weitere Klasse zugreifen. Hast du Interesse und kennst du dich ein bisschen mit Klassen aus, um es dir gegebenenfalls anzupassen?
Gruß
Nepumuk
Anzeige
AW: Globale Variable für geöffnete Arbeitsmappen
03.12.2006 12:00:34
fcs
Hallo doey,
das 2. laden des AddIns kann man in einer einfachen Prüfroutine verhindern, siehe Beispiel.
Den Zähler, der die Anzahl der AddIn-Aufrufe verfolgt und beim Schließen der letzten aufrufenden Datei das AddIn deinstalliert, könnte man durch ein zusätzliches Modul in der xla-Datei realisieren.
Statt in der XLA-Datei, kann man die Prozeduren auch in der persönlichen Makroarbeitsmappe oder in einer eigenen Arbeitsmappe einbauen, die als ausgeblendete Datei geöffnet wird. Dann müssen jedoch bei jedem Anwender die entsprechenden Dateien geändert/eingerichtet werden.
Gruss
Franz

Prozeduren unter DieseArbeitsmappe:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call AddinCheckSchliessen
End Sub
Private Sub Workbook_Open()
Call AddinCheckOeffnen
End Sub
Private Sub AddinCheckOeffnen()
On Error GoTo Fehler1  'Addin wurde noch nicht installiert
If Application.AddIns("Test01").Installed = True Then
MsgBox "Das AddIn 'Test01.xla' ist bereits installiert!" 'Test-Zeile
Application.Run "TEst01.xla!ZaehlerErhoehen"
Else
AddIns("Test01").Installed = True
Application.Run "TEst01.xla!ZaehlerErhoehen"
End If
Exit Sub
Fehler1:
'AddIn installieren
Application.DisplayAlerts = False
AddIns.Add FileName:="C:\Test\TEst01.xla"
Application.DisplayAlerts = True
AddIns("Test01").Installed = True
Application.Run "TEst01.xla!ZaehlerErhoehen"
End Sub
Private Sub AddinCheckSchliessen()
Application.Run "TEst01.xla!ZaehlerReduzieren"
End Sub
Prozeduren in einem Modul der xla-Datei:
Private AufgerufenZaehler As Integer
Sub ZaehlerErhoehen()
AufgerufenZaehler = AufgerufenZaehler + 1
MsgBox "Zählerstand: " & AufgerufenZaehler 'Test-Zeile
End Sub
Sub ZaehlerReduzieren()
AufgerufenZaehler = AufgerufenZaehler - 1
MsgBox "Zählerstand: " & AufgerufenZaehler 'Test-Zeile
If AufgerufenZaehler = 0 Then
'AddIn deinstallieren
AddIns("Test01").Installed = False
End If
End Sub

Anzeige
AW: Globale Variable für geöffnete Arbeitsmappen
03.12.2006 16:51:49
doey
Hi Nepumuk,
wäre nett, wenn du mir das AddIn zur Verfügung stellen würdest!
Bin jetzt zwar kein Crack in Sachen Klassenmodule, aber mit ein bißchen Zeit arbeite ich mich da schon rein!
Hi Frank,
das ist genau das, was ich gesucht habe!!!
Vielen Dank für deine Mühe
Gruß doey
Anzeige
AW: Globale Variable für geöffnete Arbeitsmappen
04.12.2006 08:47:27
doey
Guten Morgen Nepumuk,
ich dank Dir...den Spaß werde ich sicher haben!!! :)
is ja ganz schön heftig der Code...
da erstmal durchzublicken wie das ganze funktioniert, braucht schon einige Zeit bei mir!!!
gruß doey
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige