Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1272to1276
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
AddIns per VBA automatisch einbinden.
Sebastian
Und wieder der Sebastian...
Ich habe weig bis keine Erfahrung mit AddIns, schreibe aber ofrt recht große CODE-Module und möchte damit mal die *xlsm Dateien verschlanken, so dass immer Alle Makros irgendwo getrennt gespeichert sichd (z.B. in einem Vertrauenswürdigen Ordner). Be meinen Makros habe ich mir folgende technik angewöhnt:
In den Tabellenblättern sind die Schaltflächen (ActiveX-Schaltflächen) und in den Modulen die Makros. die Rufe ich von den Tabellenblättern aus auf. Jetzt möchte ich die Module von der Arbeitsmappe mit den Tabellen trennen und die Makros in dem AddIn laufen lassen. Die Module haben alle spezielle Namen.
Folgendes Soll nun dabei passieren:
+ Ich öffne die Arbeismappe
+ Über ein Makro binde ich die AddIns automatisch an
+ Die Verweise in den Schaltflächen werden automatisch per VBA auf die Makros das AddIn verwiesen (also faktisch wird Code in den Tabellenblatt-Modulen umgeschrieben). Die Identifikation der im AddIn vorhandenen Prozeduren erfolgt über Modulname.Makroname.
Also was bisher so aussah: Call MODUL_IMPORT.Importdaten Formatieren
soll jetzt automatisch so aussehen: Call AddInName.xla!MODUL_IMPORT.Importdaten Formatieren
+ Nach dem ganzen ist die Mappe "betriebsbereit" und kann mit ggf. modifizierten AddIn Makros laufen.
Den AddIn Namen würde ich im CODE als Konstante hinterlegen. Der Pfad des Addins sollte Variieren können... aber das bekomme ich hin. Wenn einer einen guten Tipp hat, wie man das Addin per VBA automatisch finden und vertrauenswürdig machen kan fände ich das auch ganz toll. Wie da der CODE aussehen müsste ist mir komplett ein Rätsel.
Ich möchte so meine Anwendungen "pflegbar" bzw. "Update-fähig" machen.
Geht so etwas überhaupt? Kann ich während der Laufzeit CODE umschreiben...auch in Bezug auf die AddIns un deren Prozedurverknüpfungen?
Wie muss ich das überhaupt machen..bei AddIns habe ich wirgendwie keinen Plan...
Freue mich, über jede Hilfe.
Danke schon mal.
Freundliche Grüße
Sebastian

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: AddIns per VBA automatisch einbinden.
12.08.2012 14:07:28
fcs
Hallo Sebastian,
ich hab jetzt mal ein wenig experimeniert, was funktionieren könnte.
Grundvoraussetzung ist natürlich, dass du in der Programmierung den Bezug zu den Objekten korrekt definiert hast. Das dürfte der Fall sein, wenn der Code der von den Active-X-Schaltflächen gestartet wird immer in allgemeinen Modulen gespeichert ist. Es darf dann aber z.B. nicht mit "Thisworkbook" gearbeitet werden, um auf die Mappe mit den Schaltflächen zu verweisen, sondern es muss mit Activeworkbook gearbeitet werden bzw. die Zuweisung zu einer Objektvariable an geeigneter stelle im Code erfolgen.
Die Vorgehensweise zum Arbeiten mit AddInns ist dann etwa wie folgt:
1. Du erstellst eine separate xlsm-Datei für den Code der auszulagernden Makros.
In diese Datei kopierst du die Module mit dem Code für die Schaltflächen. Das Verzeichnis in dem du diese Datei speicherst ist beliebig wählbar. Diese Datei wird dann die Basis für die Erstellung der xlam-Datei (AddIn).
2. Nach dem Speichern der xlsm-Datei mit dem Code speicherst du die Datei als Excel-AddIn-Datei(xlam)
Speichere die Datei in dem von Excel standardmößig vorgeschlagenen Verzeichnis
z.B.: "C:\Users\Username\AppData\Roaming\Microsoft\AddIns"
Dieses Verzeichnis ist kein muss, aber es erleichtert die Verwaltung der AddInns.
3. Schliesse die xlsm-Datei mit den Makros
4. Aktiviere/Registriere über Excel-Optionen-AddInns
die erstellte AddIn-Datei. So kann das AddIn später problemlos nach Bedarf aktiviert/deaktiviert werden.
5. In der Ursprungs-Datei
5.a löscht du die Module-mit dem Code für die Schaltflächen
5.b fügst du unter "DieseArbeitsmappe" den Code ein, der beim Öffnen das AddIn installiert und beim Schliessen das AddIn deinstalliert.
Option Explicit
Private Const strAddIn As String = "FileDatenMakros" 'Name des Addins, wie im AddIn-Dialog  _
angezeigt
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If MsgBox("AddIn """ & strAddIn & """ deinstallieren?", _
vbQuestion + vbYesNo, "AddIn deinstallieren - " & strAddIn) = vbYes Then
Application.AddIns(strAddIn).Installed = False
End If
End Sub
Private Sub Workbook_Open()
If Application.AddIns(strAddIn).Installed = False Then
Application.AddIns(strAddIn).Installed = True
End If
End Sub
Auf die If-Prüfungen kann verzichtet werden, wenn immer nur eine Datei geöffnet ist, die das AddIn benötigt.
5.c Der Code der Command-Buttons wird wie folgt angepasst.
Private Sub CommandButton1_Click()
Application.Run "FileDatenMakros.xlam!Modul_Import.ImportDaten"
End Sub
Private Sub CommandButton2_Click()
Application.Run "FileDatenMakros.xlam!Modul_Format.ImportDatenFormatieren"
End Sub
Wenn du deine Dateien und AddInns so konfigurierst, dann ist es nicht erforderlich, dass in den Dateien mit Schaltflächen und Daten der Code zur Laufzeit geändert werden muss. Dies würde erforderern, dass in den Sicherheitseinstellungen für Makros unter den Optionen der Zugriff auf das VBA-Projekt erlaubt werden muss.
Wenn du deine Dateien bearbeitungsfähig anderen Personen zur Verfügung stellen willst, dann muss du natürlich immer die xlam-Datei mit verschicken. Dabei reicht es dann wenn die Datendatei und die xlam-Datei im gleichen Verzeichnis gespeichert werden, um die Makros per Schaltfläche zu starten. Excel lädt dann automatisch die xlam-Datei, wenn eine Schaltfläche geklickt wird.
Gruß
Franz
Anzeige
AW: AddIns per VBA automatisch einbinden.
12.08.2012 14:56:55
Sebastian
Hallo Franz,
Vielen Dak für den Tipp,...werde das morgen mal komplett ausprobieren.
Normalerweise Programmiere ich immer mit Allgemeinen Modulen, weil ich das bis vor Kurzem gar nicht anders kannte. Den Code für "Thisworkbook" müsste ich dann in "ActiveWorkbook" umbauen und schon müsste es funzen...
Heute ist Sonntag, und da mache ich nichts... also bis morgen.
Freundliche Grüße
Sebastian

270 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige