Microsoft Excel

Herbers Excel/VBA-Archiv

Add-In Name | Herbers Excel-Forum


Betrifft: Add-In Name von: Andreas K.
Geschrieben am: 02.02.2010 21:11:27

Hallo zusammen,

ich habe ein Problem bei der Erstellung eines Add-Ins und zwar wird der "Titel" nicht richtig übernommen. Mit Titel meine ich die Project Name Eigenschaft. Diese kann ich zwar einstellen (komischerweise allerdings muss die ohne Leerzeichen sein), aber Excel setzt diese dann automatisch auf Standard (Dateiname ohne *.xla). Dabei wird aber mein vergebener Titel im project name weiterhin angezeigt, nur kann ich mit diesem nicht auf das Add-In referenzieren.

Das Problem dabei ist, dass ich, wenn ich meine Addin-Version ändern will und das im Dateinamen sichtbar machen will, jedes das AddIn aufrufende Workbook ändern müsste, weil ich nur auf die addins.name und nicht auf die addins.title referenzieren kann.

Excel 2000 englisch + Win XP

Hat jemand eine Idee? Bug in meiner Excel-Version?
Danke schonmal und viele Grüße

  

Betrifft: Nicht Projekt- sondern Datei-Eigenschaft ? von: NoNet
Geschrieben am: 02.02.2010 22:07:20

Hallo Andreas,

so ganz verstanden habe ich Dein Anliegen nicht, hier ein paar generelle Anmerkungen zu AddIns :
- im VB-Editor kannst Du den Projektnamen des AddIns ändern (immer ohne Leerzeichen !)
- als VERWEIS wird immer der Projektname angezeigt !
- In Excel kann man per "Extras - AddIns" das AddIn laden, dort wird standarmäßig der Dateiname angezeigt
- Im VB-Editor kann man die Eigenschaft "IsAddIn" des AddIns auf FALSE setzen, dadurch wird das AddIn in Excel als gewöhnliche Arbeitsmappe angezeigt, in der man per "Datei - Eigenschaften - Zusammenfassung - Titel" einen alternativen Namen eingeben, der anstelle des Dateinamens angezeigt wird.

Falls das passende nicht dabei war, melde Dich einfach nochmal (auch wenn es dabei war - als Feedback ;-)

Gruß, NoNet

PS: Das bezieht sich alles auf Excel 2003, verhält sich m.E. aber auch unter Excel 2000 so !


  

Betrifft: AW: Nicht Projekt- sondern Datei-Eigenschaft ? von: Andreas K.
Geschrieben am: 02.02.2010 22:35:09

Hallo NoNet,
danke für deine rasche Antwort.
Der Fehler war der, dass der Titel nicht vergeben war (Dateieigenschaften). Die Idee hatte ich zwar schonmal, aber in XL2000 kann man das nicht im Windows Explorer ändern und bis in das Properties-Menü hab ichs nicht geschafft.

Mich wundert nur, dass ich mit

Application.Addins("xyz")

entweder auf diesen Titel oder auf den Dateinamen zugreife, NICHT jedoch auf den Projektnamen.

Beispiel:
Projektname: testaddin
Dateiname: addinTest.xla
Titel: test

addins("test").installed
addins(Addintest").installed
liefern einen Wert

addins("testaddin")
liefert den Fehler "Subscript out of Range"

Kann natülich XL2000 sein, um Fehler zu vermeiden habe ich jetzt Titel und Projektname identisch gemacht. Wie auch immer, mein Problem ist gelöst, danke!


  

Betrifft: Beitrag zu Verweisen von: NoNet
Geschrieben am: 02.02.2010 23:12:59

Hallo Andreas,

erstmal : Schön, dass das Problem nun gelöst ist :-)
Als Ergänzung : Schau Dir mal meine Beiträge zum Thema "Verweise" an :

https://www.herber.de/forum/archiv/1124to1128/t1125391.htm#1125427
https://www.herber.de/forum/archiv/1124to1128/t1125391.htm#1125620

Ich nehme an, dass der Projektname nur zur Anzeige im VB-Editor (Projekt-Explorer) dient, nicht jedoch zur Referenzierung !

Gruß, NoNet


  

Betrifft: Das stimmt so nicht,... von: Luc:-?
Geschrieben am: 03.02.2010 04:19:01

...NoNet;
ich habe (ebenfalls noch unter xl9) 3 Namen für ein AddIn: Datei-, Projekt- u.Mappenname; außerdem noch Blattnamen und -titel. Projekt-, Mappen- u.Blattnamen lassen sich referenzieren — nur ist die Art der zugeordneten Referenzen spezifisch, eben vom repräsentierten Objekt Projekt, Mappe, Blatt abhängig. Die Form ist name.irgendwas! Als Text mit "" kann man nur Titel einsetzen, zu denen quasi auch der Dateiname als Bestandteil des Dateipfades (immer Text!) gehört, also Workbooks("dateiname") bzw hier AddIns("dateiname") oder eben Worksheets("blatttitel").
Irgendwann merkt man idR schon, dass man die echten Namen im Ggsatz zu Titeln direkt verwenden kann, indem man einfach nur 'nen Pkt dahinter setzt und die Auswahl trifft... ;-)
Gruß Luc :-?


  

Betrifft: AW: Das stimmt so nicht,... von: Andreas K.
Geschrieben am: 03.02.2010 15:24:19

Luc,
kannst du mir dafür mal ein Beispiel geben? Ich bekomme es einfach nicht hin, auf den AddIn-Namen zu referenzieren...
Nicht, dass es so jetzt nicht geht, aber nach meinem Dafürhalten ist eine Referenzierung auf den "echten" Namen eleganter.
Ich denke, ich mache einfach zu wenig mit VBA um die Logik, die hinter den ganzen Verweisen und Referenzierungen steht, völlig zu durchdringen...
Gruß, Andreas


  

Betrifft: Wenn dein AddIn installiert ist,... von: Luc:-?
Geschrieben am: 03.02.2010 16:12:25

...Andreas,
und du im VBProjekt einer Mappe, die das AddIn benutzen soll, eine Prozedur schreibst, in der du auf das AddIn referenzieren willst, musst du unbedingt in diesem VBProjekt einen Verweis auf das AddIn setzen. Dadurch wdn dessen Bibliotheken, also alles, was du da angelegt hast, dem aktuellen Projekt zur Verfügung gestellt. Das kannst du auch gut im VBE-Objektmanager sehen. Schreibst du nun im aktuellen Projekt einen AddIn-Namen und setzt einen Pkt dahinter, sollte/wird dir der VBE-Intellisense in einem PopUp die Auswahlmöglichkeiten zeigen. Voraussetzung ist natürlich, dass es sich auch tatsächlich um einen Namen, nicht etwa einen Titel handelt. Also ganz oben bei den Objekteigenschaften muss neben links (Name) rechts dann der Name eingetragen wdn. Das kannst du wohl bei allen Objekten machen.
In deinem AddIn selbst kannst du natürlich ohnehin so referenzieren.
Gruß Luc :-?
PS: Das mit dem Verweis gilt immer, aber ist nur dann nötig, wenn Prozeduren des aktuellen Projekts Prozeduren des AddIns (auch udFktt!) benutzen s/wollen.


  

Betrifft: AW: Wenn dein AddIn installiert ist,... von: Andreas K.
Geschrieben am: 03.02.2010 16:34:36

Danke, jetzt hats *klick* gemacht... unter anderem da mir ein- und aufgefallen ist, dass "Verweise" und "References" ziemlich exakt das gleiche in zwei unterschiedlichen Sprachen sind...

Für mich leider unbrauchbar auf den ersten Blick, deswegen werde ich beim Weg über den Titel bleiben.
Was ich machen will, ist, im Code eines wkb zu schauen, ob ein Addin vorhanden ist, wenn ja, installiere es und enableevents, wenn nein, disableevents. Der Code der events ist im Addin hinterlegt.
Wenn mein Addin jetzt aber nicht vorhanden ist und ich habe es referenziert, kommt gleich der Fehler, dass das Objekt oder die Library nicht vorhanden sei... Ansonsten ist das das, was ich schon öfter gesucht habe um Makros miteinander zu verknüpfen... wieder was gelernt :)
Gruß, Andreas


  

Betrifft: Na prima! So soll es ja auch sein! ;-) von: Luc:-?
Geschrieben am: 03.02.2010 18:12:00

Übrigens, Andreas,
wieso willst du ...im Code eines wkb [zu] schauen, ob ein Addin vorhanden ist...? Eine Mappe ist entweder ein AddIn oder nicht. Dazu musst du eigentlich nur die Dateiendung und/oder die Mappeneigenschaft IsAddIn abfragen. Alle Anderen sind nur Dateien mit Makros, keine AddIns!
Aber viell siehst du ja nur nach, ob Ereignisprozeduren enthalten sind, darauf deutet zumindest dein Text hin... ;-)
Gruß Luc :-?


  

Betrifft: Der Vollständigkeit halber... von: Andreas K.
Geschrieben am: 03.02.2010 18:33:59

...nochmal der versuch einer Erklärung was ich machen will :-)

Ich habe ein Add-In, das kann ich installieren. Dann ist es in der Add-In-Liste. Dann kann ich es wieder deaktivieren, damit es nicht bei jedem Excel-Start mitgeladen wird.

Dann habe ich workbooks, die Ereignisprozeduren beinhalten. Unter anderem die, dass wenn das workbook geöffnet wird, das AddIn wieder aktiviert wird und wenn es geschlossen wird, wieder deaktiviert wird. Ich lade das AddIn also nur bei den workbooks, die genau das in der Workbooks_Open-Prozedur stehen haben. Dieses Laden mache ich mit AddIns("xyz").installed=true, wobei "xyz" der Titel des AddIns ist, der auch in der AddIn-Liste auftaucht. Über ein Fehlerabfangen weiß ich dann auch, ob das AddIn gar nicht vorhanden ist.
Andererseits soll bei diesen workbooks EnableEvents=false gesetzt werden, falls das AddIn nicht vorhanden ist bzw nicht installiert/aktiviert werden kann. Das, weil die worksheet_change-Ereignisse auf eine Prozedur im AddIn aufrufen...

Ist mein erstes projekt mit AddIns, aber gerade weils deutlich einfacher zum Updaten und schön zum Verteilen ist, gefällts mir.
Gruß, Andreas


  

Betrifft: Aha, dann macht's Sinn! Gruß owT von: Luc:-?
Geschrieben am: 03.02.2010 23:04:36

:-?