Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Zugriff via VBA auf eigene Subs oder Funktionen in anderen Programmen

Begonnen von datekk, März 09, 2018, 14:02:43

⏪ vorheriges - nächstes ⏩

datekk

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.
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

markusxy


PhilS

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.

Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

markusxy

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.  :)

Lachtaube

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
Grüße von der (⌒▽⌒)

PhilS

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!
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

datekk

Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps