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.
Dafür gibt es in Access die Run Methode.
LG Markus
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.
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. :)
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
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!
Klasse. Danke Euch. :)