Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: datekk am März 09, 2018, 14:02:43

Titel: Zugriff via VBA auf eigene Subs oder Funktionen in anderen Programmen
Beitrag von: datekk am März 09, 2018, 14:02:43
Hi,

ich möchte gern von Outlook aus via VBA eigene Subs in meiner Access Datenbank ausführen. Ist dies möglich?

Beispiel:

in Modul in Access:

Public Function Rechnen (a as long, b as long) as Long
         Rechnen = a + b
End Function


So stelle ich mir das dann in Outlook VBA vor:


Sub RechnenPerAccess()

      Dim acc As Access.Application
      Set acc = GetObject(, "Access.Application")

      Debug.Print acc.Rechnen(10,20)

End Sub


Ist dies irgendwie möglich? Wenn ja, wäre es darüber hinaus auch möglich, die in Access aktuell im Speicher befindlichen Public Variablen abzurufen?

Danke schon mal für Eure Antworten.
Titel: Re: Zugriff via VBA auf eigene Subs oder Funktionen in anderen Programmen
Beitrag von: markusxy am März 09, 2018, 14:07:57
Dafür gibt es in Access die Run Methode.

LG Markus
Titel: Re: Zugriff via VBA auf eigene Subs oder Funktionen in anderen Programmen
Beitrag von: PhilS am März 09, 2018, 15:31:53
Zitat von: datekk am März 09, 2018, 14:02:43ich möchte gern von Outlook aus via VBA eigene Subs in meiner Access Datenbank ausführen. Ist dies möglich?
[...]
Ist dies irgendwie möglich? Wenn ja, wäre es darüber hinaus auch möglich, die in Access aktuell im Speicher befindlichen Public Variablen abzurufen?
Für Sub-Prozeduren, wie du oben schreibst, ist die von Markus angeführte Run-Methode gut geeignet.

In deinem Beispiel hast du aber eine eigene Function gezeigt. Deren Rückgabewert bekommst du über Run meines Wissens nicht geliefert. Diesen könntest du mit der Eval-Funktion ermitteln. - Eval hat aber den Nachteil, dass der komplette Ausdruck, inkl. Parameter als String übergeben wird.

Auf Variablen kannst du grundsätzlich nicht zugreifen.

Titel: Re: Zugriff via VBA auf eigene Subs oder Funktionen in anderen Programmen
Beitrag von: markusxy am März 09, 2018, 15:52:22
Zitat von: PhilS am März 09, 2018, 15:31:53
In deinem Beispiel hast du aber eine eigene Function gezeigt. Deren Rückgabewert bekommst du über Run meines Wissens nicht geliefert.

Funktionen gehen genauso.
Da würde ein Blick in die Hilfe oder ein einfacher Test weiterhelfen.  :)
Titel: Re: Zugriff via VBA auf eigene Subs oder Funktionen in anderen Programmen
Beitrag von: Lachtaube am März 09, 2018, 16:02:21
Prozeduren können auch in ihren Argumenten Werte zurückgeben, wenn sie als ByRef (das ist der Standard in VBA) deklariert sind. Das Ergebnis musst Du dann natürlich abholen.'In Access

Public Sub Addiere(ByVal Arg1 As Double, ByVal Arg2 As Double, Result As Double)
   Result = Arg1 + Arg2
End Sub

Und dann irgendo in den Weiten von Outlook ...   Dim Summe As Double

   DeineAccessInstanz.Run("Addiere", 10, 20, Summe)
   MsgBox Summe
Titel: Re: Zugriff via VBA auf eigene Subs oder Funktionen in anderen Programmen
Beitrag von: PhilS am März 09, 2018, 17:33:12
Zitat von: markus888 am März 09, 2018, 15:52:22
Funktionen gehen genauso.
Da würde ein Blick in die Hilfe oder ein einfacher Test weiterhelfen.  :)
Der Blick in die Hilfe hat mich zu der Aussage gebracht. Dort wird nämlich zum Rückgabewert von Funktionen rein gar nichts gesagt.

Aber du hast recht. Der Rückgabewert einer Function wird direkt von Application.Run an den aufrufenden Code durchgereicht.
Danke! Wieder was dazugelernt!
Titel: Re: Zugriff via VBA auf eigene Subs oder Funktionen in anderen Programmen
Beitrag von: datekk am März 13, 2018, 14:25:11
Klasse. Danke Euch.  :)