none
Makro/Funktion in einer Access-Datei, aus VB starten

    Frage

  • Hallo Leute,
    diesmal habe ich eine Frage zum Thema Aufruf einer Funktion die in einer Access-Datei steckt.

    Hintergrund:
    in einer Access-Datei sind Makros/Funktionen drin auf die ich zugreifen will.

    Hat einer ne Idee, oder noch besser nen Beispielcode?

    Ist es auch möglich den Rückgabewert der Funktion zu kriegen?

    Wie muss die Funktion in Access sein?

    Als Private Sub/Function der Public Sub/Function, muss der Modul/Formname bekannt sein?

    Und wie umgehe ich die Sicherheitsabfrage "Makros vorhanden, wollten Sie die Datei(ACCDE) wirklich ausführen?"

    Auf dem Rechner ist nur die Accessruntime installiert, nicht die Vollversion.

     

    Danke :-)

    Dienstag, 27. Oktober 2009 09:22

Antworten

  • Problem gelöst. Hier der Code:


    Public Function runMasterBatch(fileName As String, subName As String) As String
        Dim accApp As Access.Application:    Set accApp = CreateObject("Access.Application")

    On Error GoTo ER

        accApp.OpenCurrentDatabase fileName, False

        accApp.Run subName

    ER:
        accApp.CloseCurrentDatabase: Set accApp = Nothing

      If Err Then runMasterBatch = Err.Description
    End Function
    Freitag, 30. Oktober 2009 12:16

Alle Antworten

  • Um an mehr als die Daten heranzukommen, brauchst du ein installiertes Access, um damit eine Objektautomatisierung aufzubauen.

    --
    Peter
    Dienstag, 27. Oktober 2009 12:21
  • Auf dem Server ist die AccessRuntime installiert. Damit kann man die Datenbank öffnen und alle Makros/Funktionen/Sub ausführen. Aber nur von Hand. Ich würde es gerne per VB-Code starten.

    Ich habe in einem anderen Forum nen Code gefunden, mit dem man die Datenbank öffnen und ein bestimmtes Fenster anzeigen lassen kann.

        Dim
     accApp
    Set accApp = CreateObject("access.Application")
    accApp.OpenCurrentDatabase "C:\Dokumente und Einstellungen\sternschnute\Desktop\Vorführversion_JK\Auswertungen.mdb", True accApp.DoCmd.OpenForm ("Auswertung_Modell")
    accApp.visible = True
    Geht auch mit ACCDE Dateien. Nur wie kann ich auf eine Makro, welches in einem Modul steckt zugreifen?
    Dienstag, 27. Oktober 2009 12:35
  • Normal solltest Du Makros dann über die RunMacro Methode ausführen können:
    accApp.DoCmd.RunMacro "MyPublicSub"

    Thorsten Dörfler
    Microsoft MVP Visual Basic
    Dienstag, 27. Oktober 2009 13:16
  • Das habe ich schon ausprobiert, ich krieg jedes Mal ne Meldung:

    ---------------------------------------------------------------------------------------------------------
    Laufzeitfehler 2485
    Das Objekt 'testSub' kann von Microsoft Office Access nicht gefunden werden.
    ---------------------------------------------------------------------------------------------------------

    Vielleicht muss man auch das Modul/Form angeben, wo sich die Funktion befindet.

    Folgender Code ist in der ACCDB im Modul "Modul1" drin
    -----------------------------------------------
    Public Sub testSub()
        MsgBox "Läuft", vbInformation
    End Sub
    -----------------------------------------------
    Dienstag, 27. Oktober 2009 13:39
  • Problem gelöst. Hier der Code:


    Public Function runMasterBatch(fileName As String, subName As String) As String
        Dim accApp As Access.Application:    Set accApp = CreateObject("Access.Application")

    On Error GoTo ER

        accApp.OpenCurrentDatabase fileName, False

        accApp.Run subName

    ER:
        accApp.CloseCurrentDatabase: Set accApp = Nothing

      If Err Then runMasterBatch = Err.Description
    End Function
    Freitag, 30. Oktober 2009 12:16