Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Public-Variable an Addin übergeben

Forumthread: Public-Variable an Addin übergeben

Public-Variable an Addin übergeben
01.08.2008 13:05:49
Werner
Hallo liebe Forumsmitglieder,
kürzlich habe ich versucht, eine projektweit gültige Public-Variable aus einem Projekt an ein Addin weiterzugeben, doch der Versuch misslang. Sie soll dann auch für das gesamte Addin, nicht etwa nur für eine Prozedur in dem Addin, gültig sein. Geht so etwas überhaupt und, wenn ja, wie?
Grüße! Werner R.

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Public-Variable an Addin übergeben
01.08.2008 13:34:00
Jochen
Hi,
deklariere die Variable im Add-In als Public und übergib den Wert aus deiner Mappe mit
der Run-Methode, steht mit Beispiel in der Hilfe.
mfg Jochen

AW: Public-Variable an Addin übergeben
01.08.2008 13:38:00
Tobias
Hallo Werner!
Vielleicht zur Inspiration:
Inhalt eines Moduls der xls-Datei:


Const A = "ASDF"
Sub GibText()
    Debug.Print A
    Call Application.Run("'" & Application.AddIns("MyAddIn").FullName & "'" & "!ModulMitGlobalerVariable.PutVariableTxt", A)
    Debug.Print Application.Run("'" & Application.AddIns("MyAddIn").FullName & "'" & "!ModulMitGlobalerVariable.GetVariableTxt")
End Sub


Inhalt des Moduls "ModulMitGlobalerVariable" der xla-Datei ("MyAddIn"):


Global txt As String
Public Function GetVariableTxt() As String
    GetVariableTxt = txt
End Function
Public Sub PutVariableTxt(newtxt As String)
    txt = newtxt
End Sub


Hat Dir das Beispiel weiterhelfen können?
Schönen Gruß, Tobias
http://www.tobiasschmid.de/

Anzeige
-> Dank Jochen und der VBA-Hilfe etwas kürzer
01.08.2008 13:43:00
Tobias
Vielleicht sollte ich öfter die VBA-Hilfe lesen.
Anstelle von:
"'" & Application.AddIns("MyAddIn").FullName & "'" & "!ModulMitGlobalerVariable.PutVariableTxt"
reicht auch einfach
"'MyAddIn.xla'!ModulMitGlobalerVariable.PutVariableTxt"
So einfach....

Anzeige
Besten Dank!
01.08.2008 13:57:33
Werner
Hallo Jochen, hallo Tobias,
vielen Dank für eure Anregungen!! Mit der Run-Methode usw. muss ich mich erst einmal vertraut machen,
habe aber alles registriert. So ganz einfach ist die Variablenübergabe in diesem Fall offenbar nicht!
Beste Grüße

AW: Public-Variable an Addin übergeben
01.08.2008 13:48:00
Nepumuk
Hallo Werner,
es gibt keine projektübergreifenden Variablen.
Du hast vier Möglichkeiten (Nach Aufwand und Schwierigkeit aufsteigend sortiert):
1. Eine Funktion im Projekt wird vom Addin aufgerufen und holt sich darüber den Wert.
2. Eine Funktion im Addin wird vom Projekt aufgerufen und der Wert damit reingeschoben.
3. Du setzt im Addin einen Verweis auf das Projekt. Damit werden die Variablen aus dem Projekt im Addin bekannt (das ist dann wie ein Projekt, allerdings nur in eine Richtung, denn die Variablen im Addin sind damit dem Projekt nicht bekannt und du kannst auch keine gegenseitigen Verweise erstellen).
4. Du benutzt ein zweites Addin mit einer Klasse, in welche die Variablen geschrieben werden. Im ersten Addin und im Projekt hast du je eine Klasse, welche auf die dritte Klasse zugreifen und darüber Werte austauschen.
Du könntest natürlich den Wert auch in eine Zelle oder eine externe Datei schreiben, von wo aus sich das Addin ihn wieder abholt. Aber das ist auch nicht das gelbe vom Ei.
Gruß
Nepumuk

Anzeige
-> Vielen Dank! Wieder was dazugelernt. owT
01.08.2008 13:59:00
Tobias

AW: Public-Variable an Addin übergeben
01.08.2008 14:16:00
Werner
Hallo Nepumuk,
deine Erklärungen sind jedenfalls z.T. verständlich, die erste Alternative ist für mich wahrscheinlich am
leichtesten durchführbar. Auch dir meinen herzlichen Dank!!
So eine Variablenübergabe hat es offenbar in sich! Werner R.

Variable an Addin übergeben BEISPIEL !!!
01.08.2008 16:29:00
Nepumuk
Hi,
ich hab euch mal ein ganz einfaches Beispiel gemacht in dem die Mappe1 einen Wert in die gemeinsam genutzte Klasse schreiben und die Mappe2 diesen Wert wieder auslesen kann. Das geht natürlich anders herunm genauso. Ist natürlich kein Fehlerhandling drin und auch sonst keine Schnörkel wie Kommentare. Wichtig sind dabei nur die Verweise auf das Addin, die auf PublicNotCreatable gesetzte Instanz der Klasse und die Art, wie über die Funktion der Verweis auf die Klasse gesetzt wird. Damit beide Mappen nämlich mit der selben Klasse arbeiten, darf im Addin nur eine Instanz davon existieren.
https://www.herber.de/bbs/user/54273.zip
Gruß
Nepumuk

Anzeige
AW: Variable an Addin übergeben BEISPIEL !!!
07.08.2008 13:08:07
Werner
Hallo Ne[pumuk,
noch etwas verspäteten Dank f. die Beispieldatei. (Hatte nicht mehr damit gerechnet.) Werner R.
;
Anzeige

Infobox / Tutorial

Public-Variable an Addin übergeben


Schritt-für-Schritt-Anleitung

Um eine public variable in Excel VBA an ein Addin zu übergeben, folge diesen Schritten:

  1. Öffne deine Excel-Arbeitsmappe und dein Addin.

  2. Deklariere die Variable im Modul deines Projekts als Public. Beispiel:

    Public myVariable As String
  3. Nutze die Run-Methode, um den Wert an das Addin zu übergeben. Hier ist ein Beispiel:

    Application.Run("'" & Application.AddIns("MyAddIn").FullName & "'!ModulMitGlobalerVariable.PutVariableTxt", myVariable)
  4. Im Addin erstelle ein Modul, das die öffentliche Funktion zum Setzen und Abrufen der Variable enthält:

    Global txt As String
    
    Public Function GetVariableTxt() As String
       GetVariableTxt = txt
    End Function
    
    Public Sub PutVariableTxt(newtxt As String)
       txt = newtxt
    End Sub

Häufige Fehler und Lösungen

  • Fehler: "Variable nicht gefunden".

    • Lösung: Stelle sicher, dass die Variable im richtigen Modul deklariert ist und dass der Name korrekt geschrieben ist.
  • Fehler: "Run-time error".

    • Lösung: Überprüfe, ob das Addin geladen ist und dass der Name der Funktion korrekt ist.

Alternative Methoden

Falls die oben genannten Methoden nicht funktionieren, kannst du folgende Alternativen ausprobieren:

  1. Funktion im Projekt aufrufen, die den Wert an das Addin übergibt.
  2. Verweis auf das Projekt setzen, damit die Variablen im Addin verfügbar sind.
  3. Zweite Klasse in einem Addin verwenden, um Werte zwischen Addins auszutauschen.

Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie eine public variable zwischen einer Arbeitsmappe und einem Addin ausgetauscht wird:

In der Arbeitsmappe:

Sub SetValue()
    Dim myValue As String
    myValue = "Hello, World!"
    Application.Run "'" & Application.AddIns("MyAddIn").FullName & "'!ModulMitGlobalerVariable.PutVariableTxt", myValue
End Sub

Im Addin:

Public Function RetrieveValue() As String
    RetrieveValue = txt ' txt ist die public variable
End Function

Tipps für Profis

  • Code-Kommentare: Füge Kommentare in deinen Code ein, um die Lesbarkeit zu verbessern.
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um potenzielle Laufzeitfehler abzufangen.
  • Modularität: Halte deinen Code modular, um die Wartung und Anpassung zu erleichtern.

FAQ: Häufige Fragen

1. Frage Wie kann ich sicherstellen, dass die public variable im Addin immer aktuell ist?

Antwort Verwende die Run-Methode regelmäßig, um den Wert aus der Arbeitsmappe abzurufen, wenn sich der Wert ändert.

2. Frage Kann ich eine public variable auch in einem anderen Addin verwenden?

Antwort Ja, du kannst eine public variable in einem Addin verwenden, indem du entsprechende Verweise und Funktionen für den Austausch der Werte einrichtest.

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