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

Fragestellungen nach Erstellung eigenes Add-Inn

Fragestellungen nach Erstellung eigenes Add-Inn
12.03.2009 12:07:24
Horst
Hey !
Ich habe eine ganze Reihe von Makros und Formulare programmiert. Die Makros habe ich der Übersicht halber in verschiedene Module gepackt.
Auch habe ich DieserArbeitsmappe
- Workbook_Open()
- Workbook_BeforeClose(Cancel As Boolean)
definiert.
Weil ich beim öffnen ein bestimmtes Verhalten erzwingen will:
- Aufbau eines Eigenen Popup Menüpunktes und
- den aktuellen Dateinamen von meiner geöffneten
Exceldatei in einer globalen Variable speichern.
Ich habe mior dann ein eigenes xla angelegt. Dieses habe ich wie überall zu lesen mit:
Speichern unter...
DateiTyp *.xla
getan.
So richtig?
Folgendes Verhalten nach dem einbinden der xla tritt auf:
1. Das XLA hat genausviele KB wie die Exceldatei aus der ich das XLA generiert habe, mmh. So _
richtig?
Dann habe ich das XLA in eine andere Exceldatei unter dem Punkt Extras Add-Ins eingebunden.
Folgendes Verhalten nach dem einbinden der xla tritt auf:
1. die .xla sehe ich als eigenes Projekt unter dem abgespeichert namen mit allen Modulen und _
Tabellen die ich der XLS aus der ich die XLA generiert habe. Das heißt auch DieseArbeitmappe ist da. Ist das so Richtig?
2. Nach dem Einbinden scheint vorerst alles in Ordnung.
Nur die Globale Variable hat nicht den DateiNamen der geöffnete Datei sondern den DateiNamen _
die von der XLA. Es scheint ob das in DieserArbeitsmappe definerte Workbook_Open() von der XLA auch aufgerufen wird. Ist das so richtig...?
3. Wenn ich die Aktuelle Datei schließe, und wieder aufrufe dann sehe ich das auch das _
DieseArbeitsmappe in meinem XLA aufgerufen wird. Denn dort kommt dann ein Laufzeitfehler 91. Die nachfoldenden Dinge werden dann nicht mehr getan:
Aufbau des Popup-Menuüs setzen der Globalen Variable.
Konsequenz:
Wenn ich das erstellen des XLAs so richtig gemacht habe. Liegt der Fehler wohl daran das in _
DieseArbeitmappe das Workbook_Open() aufgerufen wird.
Dann ist das im dem Moment auch mein (This.Workbook)
Richtig?
----------------------------------------------------------------------------------
Code DieseArbeitsmappe in der xla:

Private Sub Workbook_Open()
On Error GoTo Fehler
ActiveWorkbook.UpdateLinks = xlUpdateLinksNever
MsgBox "Öffenen der Datei " & ThisWorkbook.Name
Application.DisplayAlerts = False
actualWorkBook = ThisWorkbook.Name 'Globale Variable
MeinMenueLöschenVMP
MeinMenueErstellen 'Menue einfuegen
Application.DisplayFormulaBar = True
Application.DisplayStatusBar = True
GoTo Ende
Fehler:
MsgBox "Ein Fehler ist Aufgetreten... Workbook_Open(). !!!!"
ThisWorkbook.Close SaveChanges:=False
Ende:
End Sub


----------------------------------------------------------------------------------
Wenn ich was verkehrt gemacht habe, was denn?
Was ist an der Workbook_Open() verkehrt, so das es beim erneuten Aufruf einer Exceldatei nach dem einbinden der XLA zum Fehler kommt?
Wie kann ich nun erreichen das die Funktionalität von DieseArbeitsmappe Workbook_Open() der XLA nicht in der XLA ausführt wird sondern in DieseArbeitsmappe Workbook_Open() meiner aktuell aufgrufnen Exceldatei?
Wie bekomme ich es hin das die XLA nicht so groß ist wie die ExcelDatei aus der ich Sie erzeugt habe, denn ich will ja nur die VBA haben?
Vielen Dank für Eure Hilfe?
Gruß
Horst

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fragestellungen nach Erstellung eigenes Add-Inn
12.03.2009 13:00:33
Renee
Hi Horst,
Die Ereignis-Prozeduren in einem .XLA werden nicht aktiviert, wenn Arbeitsmappen/Tabellen geöffnet werden!. Sie gelten nur lokal für das .XLA!
Wenn du Ereignisprozeduren verallgemeinern willst, dann musst du eigene Ereignis-Klassen erstellen!
Bei VBA bescheiden ist eher davon abzuraten.
Hier kannst du dich einlesen: Klassen [0] - Vorwort
GreetZ Renée
AW: Fragestellungen nach Erstellung eigenes Add-In
12.03.2009 14:14:34
Horst
Hey Renée!
Gut ich habe mir jetzt eine Klasse angelegt und dort neben dem Initialize und dem Delete auch eine Sub WorkBook open definiert, die im prinzip das gleiche verhalten hat wie die alte in der xla in der xla sieht die
Workbook_Open jetzt so aus:

Private Sub Workbook_Open()
Set meinKlasse = New ClsInitializeClassModul
meinKlasse.Workbook_Open
End Sub


Die meineKlasse Workbook_open sieht soll nun das gleiche machen wie die alte.
Neue Woorkbook_open in der Klasse
----------------------------------


Public Sub Workbook_Open()
MsgBox "Das ist meine Worbbookopen"
'Application.UpdateLinks = xlUpdateLinksNever
MsgBox "Öffenen der Datei " & ActiveWorkbook.Name
Application.DisplayAlerts = False
'Application.DisplayPasteOptions = False
actualWorkBook = ActiveWorkbook.Name
MenüLöschen
Menuerstellen'Menue einfuegen
Application.DisplayFormulaBar = True
Application.DisplayStatusBar = True
End Sub


-------------------------------------
Doch das verahlten ist das Selbe:
Laufzeitfehler 91
ObjectVariable oder With-BlockVarialbe nicht fest gelegt.
Was mache ich denn nun verkehrt.
Gruss
Horst

Anzeige
AW: Fragestellungen nach Erstellung eigenes Add-Inn
16.03.2009 18:16:35
schauan
Hallo Horst,
in Deinem WorkBook_Open steckt übrigens ein Fehler, wenn Du den Namen der Mappe ermittelst.
Damit
actualWorkBook = ThisWorkbook.Name 'Globale Variable
bekommst Du immer den Namen des Addin. Du musst mit
actualWorkBook = ActiveWorkbook.Name 'Globale Variable
den Namen der aktiven Mappe auslesen.
Aber aufpassen. Das geht nur mit dem AddIn. Speicherst Du die Makro-Mappe als xls, erkennt sie sich selber.
Gruß, Andre
Anzeige
AW: Fragestellungen nach Erstellung eigenes Add-In
17.03.2009 08:12:39
Horst
Hey Andre, Hey Renée,
Vielen Dank. Das ActiveWorkbook.Name habe ich eingebaut.
Mit den Klassen habe ich schon einmal Ausprobiert, mit mässigen Erfolg, Da ich innerhalb desXLA auf Tabelle zugreife die ich dann mit Application.Run "MeinAddin.xla!Meine_XLA_Prozedur" von aussen ansprechen muss.
Das heiss wenn sich der Name des XLA ändert, dann... usw.
Auch setzte ich eine Gloable Variable, die das XLA dann auch nicht kennt.
Ich werde dann nun doch alle Menüs exportieren und so wieder zu Standard zurückzukehren.
Das mit den Klassen ist jedoch wenn mal da einmal durchdrungen gar nicht schlecht.
Wenn noch irgend einer ne Idee hat wie ich z.B. meinem XLA die Tabellen meines ActiveWorkbook bekannt.
Eine Varirante wäre ja:
ActiveWorkbook.Sheets("NameDerTabelle"), oder?
Oder wie ich GlobaleVariablen im XLA bekannt mache und damit zuarbeiten?
Lasst mich es wissen, ich wäre sehr Dankbar...
Gruß
Horst
Anzeige
AW: Fragestellungen nach Erstellung eigenes Add-In
17.03.2009 17:54:02
schauan
Hallo Horst,
das mit dem Blattname ist so ok. Wenn Du den allerdings schon vorher weist, brauchst Du ihn nicht unbedingt in einer Variable festzulegen.
Die globalen Variablen definierst Du am besten in Deinem xla in einem normalen Modul, und füllst sie dann irgendwo. Oder Du übergibst Variablen.
Mit dem Ablauf könnte es so aussehen:
AddIn "workbookopenxla.xla":

'Diese Arbeitsmappe
Dim X As New EventClassModule
Private Sub Workbook_Open()
Set X.App = Application
End Sub



'Klassenmodul EventClassModule
Public WithEvents App As Application
Private Sub App_Workbookopen(ByVal Wb As Workbook)
MsgBox "Offen"
' Call makro
End Sub



'Modul1
Sub zweitesmacro(Optional text As String = "nix")
MsgBox text
End Sub


Und hier die Datendatei, die was von dem AddIn will, mit Übergabe einer Variablen an ein bestimmtes Makro:


'Modul1 oder wo auch immer ;-)
Sub erstesmacro()
Application.Run "workbookopenxla.xla!zweitesmacro", "Test"
End Sub


Gruß, Andre

Anzeige
AW: Fragestellungen nach Erstellung eigenes Add-In
19.03.2009 08:15:18
Horst
Hey Andre,
vielen Dank. Das sieht alles gut. So komme ich weiter.
Gruß
Horst

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige