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

Forumthread: AddIns per VBA automatisch einbinden.

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
Anzeige

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
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

AddIns per VBA automatisch einbinden


Schritt-für-Schritt-Anleitung

Um ein Excel Add-In per VBA automatisch einzubinden, folge diesen Schritten:

  1. Erstelle eine xlsm-Datei für die auszulagernden Makros. Diese Datei wird die Grundlage für dein Excel Add-In sein.
  2. Kopiere die Module, die den Code für deine Schaltflächen enthalten, in die neue Datei.
  3. Speichere die Datei als Excel-Add-In (xlam). Das Standardverzeichnis für Add-Ins ist:
    C:\Users\Username\AppData\Roaming\Microsoft\AddIns
  4. Aktiviere das Add-In über die Excel-Optionen:
    • Gehe zu "Datei" > "Optionen" > "Add-Ins".
    • Aktiviere dein Add-In.
  5. Füge den folgenden VBA-Code in "DieseArbeitsmappe" deiner Ursprungsdatei ein, um das Add-In beim Öffnen und Schließen zu installieren:
    Option Explicit
    Private Const strAddIn As String = "FileDatenMakros" 'Name des Addins
    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
  6. Passe die CommandButton-Codes an, damit sie die Makros im Add-In aufrufen:
    Private Sub CommandButton1_Click()
       Application.Run "FileDatenMakros.xlam!Modul_Import.ImportDaten"
    End Sub

Häufige Fehler und Lösungen

  • Fehler: Das Add-In wird nicht geladen.

    • Lösung: Stelle sicher, dass das Add-In im richtigen Verzeichnis gespeichert ist und aktiviert wurde.
  • Fehler: Makro wird nicht gefunden.

    • Lösung: Überprüfe den Namen des Moduls und der Prozedur. Achte darauf, dass der Pfad korrekt ist.
  • Fehler: Excel-Datei nicht vertrauenswürdig.

    • Lösung: Mache die Excel-Datei vertrauenswürdig, indem du sie in einem vertrauenswürdigen Ordner speicherst oder die Sicherheitseinstellungen für Makros anpasst.

Alternative Methoden

Eine alternative Methode, um Excel Add-Ins zu verwalten, ist die Verwendung von VBA-Klassenmodulen. Diese können dir helfen, den Code besser zu strukturieren und die Wartung zu erleichtern. Zudem kannst du ein VBA-Add-In erstellen, das spezifische Funktionen für deine Anwendung bereitstellt.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du ein Add-In in VBA einbinden kannst:

  1. Erstelle ein Add-In mit einem Modul, das eine Funktion zur Berechnung des Durchschnitts enthält:
    Public Function Durchschnitt(ByVal rng As Range) As Double
       Durchschnitt = Application.WorksheetFunction.Average(rng)
    End Function
  2. Rufe diese Funktion aus einer anderen Arbeitsmappe auf, indem du den folgenden Code in einen CommandButton einfügst:
    Private Sub CommandButton1_Click()
       MsgBox Application.Run("MeinAddIn.xlam!Durchschnitt", Range("A1:A10"))
    End Sub

Tipps für Profis

  • Verwende Konstanten für Add-In-Namen in deinem Code, um Fehler zu vermeiden und die Wartung zu erleichtern.
  • Optimiere Sicherheitsoptionen: Stelle sicher, dass Makros aktiviert sind, um reibungslose Abläufe zu gewährleisten.
  • Dokumentiere deine VBA-Codes, um die Nachvollziehbarkeit zu erhöhen und die Zusammenarbeit mit anderen zu erleichtern.

FAQ: Häufige Fragen

1. Wie mache ich eine Excel-Datei vertrauenswürdig?
Du kannst eine Excel-Datei vertrauenswürdig machen, indem du sie in einen der von Excel als vertrauenswürdig markierten Ordner speicherst oder die Sicherheitseinstellungen in Excel anpasst.

2. Kann ich während der Laufzeit Code umschreiben?
Ja, du kannst Code zur Laufzeit umschreiben, aber du musst sicherstellen, dass die richtigen Berechtigungen für den Zugriff auf das VBA-Projekt vorhanden sind.

3. Was ist ein Excel xlam Add-In?
Ein xlam-Add-In ist eine spezielle Datei, die VBA-Makros und Funktionen enthält, die in verschiedenen Excel-Arbeitsmappen wiederverwendet werden können.

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