none
Aus Outlook Access Datenbank mit Passwort und Parameter öffnen

    Frage

  • Hallo,

    ich möchte aus Outlook (2013) heraus eine Access (2013/accdb) Datenbank öffnen und eine VBA Funktion ausführen.
    Beim öffnen muss ich sowohl ein Passwort als auch einen Parameter übergeben.
    Weiterhin muss in der geöffneten Datenbank eine VBA Funktion ausgeführt werden.
    Bis auf die Übergabe des Parameters bekomme ich das schon hin.
    Dazu benutze ich die folgende Funktion:

    Sub RunAccessFunction(ByVal ACCDatabase As String, ByVal FunctionName As String, Optional ByVal Passwort As String = "")
    Dim accApp              As New Access.Application
    Dim Resultat            As Variant
    
        Set accApp = CreateObject("Access.Application")
        accApp.OpenCurrentDatabase ACCDatabase, False, Passwort
    
        accApp.Run FunctionName
        accApp.CloseCurrentDatabase
        Set accApp = Nothing
    End Sub
    

    Die Parameterübergabe bekomme ich leider nicht hin.
    Leider habe ich auch bei der Suche im Netz nichts brauchbares dazu gefunden.

    Hat jemand eine Idee, wie ich das hin bekomme?

    gruß

    cheapy

    Donnerstag, 7. Dezember 2017 10:40

Alle Antworten

  • Nur als Hinweis, da du hier was doppelt betreibst:

    Dim accApp              As New Access.Application
    Dim Resultat            As Variant
    
        Set accApp = CreateObject("Access.Application")

    Lass bei der Definition das NEW weg und verwende statt CreateObject direkt "new Access.Application".
    Dies ist fast identisch.
    Durch das New im Dim kannst du sogar den Create weglassen, da die New-Definition beim ersten Zugriff das Objekt erstellt.

    Ansonsten sieht es so aus, dass die Anmeldung an Access grundsätzlich in 2 Varianten erfolgt:
    Ist die Datenbank mit einer System-DB verbunden, wird als User grundsätzlich der aktuelle User verwendet, istdie Datenbank ungeschützt, wird Admin automatisch verwendet.

    Es gibt wohl keine Möglichkeit, hier direkt mittels User/Kennwort zuzugreifen.

    Alternativ geht nur der Umweg über die ADODB-Klassen und den OLEDB-Treibern von Access.
    Hier verwendet man dann dann User und Kennwort in der Verbindungsfolge.
    Allerdings ist man dann von den VBA-Aufrufen abgekapselt.
    Um diese auszuführen muss man entsprechende SQL-Prozeduren/Views, die VBA-Funktionen enthalten könne, bereitstellen.


    • Bearbeitet bfuerchau Donnerstag, 7. Dezember 2017 12:58
    Donnerstag, 7. Dezember 2017 12:57
  • Hallo bfuerchau,

    vielen Dank für den Hinweis mit der mehrfachen Objektanlage.
    Zu Deinen weitern Informationen, die Datenbank verlangt ein Benutzerkennwort, das ich beim öffnen mit übergeben kann:

    accApp.OpenCurrentDatabase ACCDatabase, False, Passwort

    Das klappt auch soweit. Ich möchte also nicht User und Passwort übergeben. Vielmehr wöchte ich der DB eine Wert mitgeben, also so wie einen Kommandozeilenparameter. Dazu suche ich eine Lösung.

    Gruß

    cheapy

    Freitag, 8. Dezember 2017 06:19
  • Da die DB ja nicht weiß, was sie mit den Parametern machen soll, musst du ein Makro bereitstellen.
    Dieses rufst du dann mit den gewünschten Parametern auf.
    Das Makro merkt sich diese dann in globalen Variablen des Moduls, die somit an allen Stellen der Access-Anwendung verwendet werden können.
    Freitag, 8. Dezember 2017 08:44