Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Diana2017 am November 07, 2017, 19:27:03

Titel: Access Makro aus Excel aufrufen
Beitrag von: Diana2017 am November 07, 2017, 19:27:03
Hallo liebes Forum,

ich würde gerne aus Excel heraus meine Accessdatenbank (Access 2016) öffnen, dort ein Makro ausführen und im Anschluss die Datenbank wieder schließen.

Dafür habe ich folgenden VBA Code genommen:

Sub Access_aktualisieren()
Dim accApp As Object
Dim strMDBDatei As String

strMDBDatei = "C:\Users\Diana\Documents\Database1.accdb"


Set accApp = CreateObject("Access.Application")
    accApp.OpenCurrentDatabase strMDBDatei
    accApp.Run "MFillDB"
 
Set accApp = Nothing

End Sub

Er startet gut, jedoch stoppt er bei  accApp.Run "MFillDB" mit der Meldung: "Laufzeitfehler 2517, Prozedur wurde nicht gefunden."

Ich habe schon versucht, dem Makro einen anderen Namen zu geben, doch auch das  bringt nichts.

Hat jemand eine Idee, was der Fehler sein könnte?

Titel: Re: Access Makro aus Excel aufrufen
Beitrag von: steffen0815 am November 07, 2017, 19:46:16
Hallo,
prinzipiell sollte es so funktionieren.
Also muss man zunächst davon ausgehen, dass es die Prozedur/Funktion "MFillDB" nicht gibt.

Wichtig:
Prozedur/Funktion <> Makro

Btw:
Prinzipiell würde ich allerdings die Art der Vorgehensweise hinterfragen. Was genau soll der Code in Access tun?
Titel: Re: Access Makro aus Excel aufrufen
Beitrag von: Diana2017 am November 08, 2017, 08:43:00
Hallo Steffen,

vielen Dank für Deine Antwort. Ich habe ein Makro gebaut. Dieses ruft mir verschiedene Abfragen auf (Löschabfragen und Anfügeabfragen).

Aufgrund Deines guten Hinweise (danke  :)) habe es jetzt mal als Modul aufgebaut und ebenfalls unter "MFillDB" gespeichert. Es kommt wieder derselbe Fehler. Ich habe es dann mal als "Test" abgespeichert und habe wieder denselben Fehler.

Ich weiß mir langsam nicht mehr zu helfen.... :-\
Titel: Re: Access Makro aus Excel aufrufen
Beitrag von: steffen0815 am November 08, 2017, 09:14:02
Hallo,
ein Modul darf nicht wie die Funktion/Prozedur heißen!!

Ein Modul ist im Normalfall ein Container für mehrere Prozeduren.

Benenne Module z.B. grundsätzlich mit einem "mod_" am Anfang.
Titel: Re: Access Makro aus Excel aufrufen
Beitrag von: DF6GL am November 08, 2017, 09:36:48
Hallo,

zusätzlich:

-- benenne das Makro um in "makMFillDB"
-- benutze statt Docmd.Openquery   Currentdb.Execute "Abfragename"
-- entferne  Docmd.Runcommand acCmdClose , Docmd.Quit und Docmd.Setwarnings  ...   
-- schreibe in JEDEN Modulkopf   OPTION EXPLICIT
Titel: Re: Access Makro aus Excel aufrufen
Beitrag von: Diana2017 am November 08, 2017, 09:41:29
Hallo Steffen,

ich habe mein Modul nun "mod_FillDB" genannt, die Function heißt nach wie vor "MFillDB". Ich rufe nun "mod_FillDB" auf und bekomme immer noch den Fehler, dass die Prozedur nicht gefunden wurde. Auch wenn ich MFillDB reinschreibe, findet er sie nicht. Sorry, dass ich Dich gleich so beanspruche...
Titel: Re: Access Makro aus Excel aufrufen
Beitrag von: DF6GL am November 08, 2017, 09:45:50
Hallo,

von einem Aufruf des "Moduls" hat keiner geredet.  Wenn die Prozedur MFillDB heißt, dann bleibt es bei
accApp.Run "MFillDB"


siehe auch mein vorangegangenes Posting
Titel: Re: Access Makro aus Excel aufrufen
Beitrag von: steffen0815 am November 08, 2017, 09:46:17
Hallo,
ZitatIch rufe nun "mod_FillDB" auf
:(.
Natürlich darfst du nicht das Modul aufrufen, sondern die Prozedur.
Titel: Re: Access Makro aus Excel aufrufen
Beitrag von: Diana2017 am November 08, 2017, 09:51:52
Auch das funktioniert leider nicht...  :( er findet es nicht!

@Franz: danke für die Hinweise, ich baue es so ein!
Titel: Re: Access Makro aus Excel aufrufen
Beitrag von: steffen0815 am November 08, 2017, 09:53:05
Hallo,
zeig mal bitte deinen aktuellen Stand in der DB.
- schau mal in den Taskmanager, ob noch irgendwelche Accessprozesse laufen
Titel: Re: Access Makro aus Excel aufrufen
Beitrag von: Diana2017 am November 08, 2017, 09:56:53
So sieht es bei mir Access aus. Ich habe die Function mit dem Namen "MFillDB". Sorry, ich weiß nicht, wie ich es sonst machen soll.
Titel: Re: Access Makro aus Excel aufrufen
Beitrag von: Diana2017 am November 08, 2017, 10:00:38
Hallo Steffen, danke für Deine Geduld  :)
Access ist ganz zu ohne Hintergrundprozesse, wenn ich es aus Excel aus aufrufen möchte....
Titel: Re: Access Makro aus Excel aufrufen
Beitrag von: DF6GL am November 08, 2017, 10:03:27
Hallo,

hast Du alle unsere Vorschläge umgesetzt?   (speziell das Umbenennen des gleichnamigen Makros!)

--schreibe (sicherheitshalber) zusätzlich vor Function noch Public hinzu:

Public Function MFillDB()


und Debuggen/kompiliere die DB im VBA-Editor nach dem Einsetzen von Option Explizit
Titel: Re: Access Makro aus Excel aufrufen
Beitrag von: Diana2017 am November 08, 2017, 10:25:50
Hallo Franz,

ja, ich habe das Makro umbenannt, es heißt nun makro_MFillDB.
Ich habe alles so umgesetzt, wie ich es von Dir verstanden habe.

Das Modul im Access funktioniert einwandfrei, wenn ich es dort im Access aufrufe.
Wenn ich den VBA Code aus dem Excel ausführe, bekomme ich die Meldung: Laufzeitfehler 7952, Sie haben einen ungültigen Funktionsaufruf ausgegeben.

Titel: Re: Access Makro aus Excel aufrufen
Beitrag von: DF6GL am November 08, 2017, 10:33:11
Hi,

an welcher Code-Stelle kommt denn der Laufzeitfehler?


setz einen Haltepunkt an den Anfang der Sub und fahre mit F8 den Code durch....

Titel: Re: Access Makro aus Excel aufrufen
Beitrag von: Diana2017 am November 08, 2017, 10:37:23
Er kommt wieder bei
    accApp.Run "MFillDB"

Titel: Re: Access Makro aus Excel aufrufen
Beitrag von: DF6GL am November 08, 2017, 10:42:53
Hi,

na gut,  kannst Du die beiden DBs hier hochladen (datenreduziert, komprimiert/repariert und gezippt) ?
Titel: Re: Access Makro aus Excel aufrufen
Beitrag von: steffen0815 am November 08, 2017, 10:47:42
Hallo,
ZitatDas Modul im Access funktioniert einwandfrei
Teste mal ein Sub nurmalso()
     application.Run "MFillDB"
end Sub
direkt in der Datenbank selbst.
Titel: Re: Access Makro aus Excel aufrufen
Beitrag von: Diana2017 am November 08, 2017, 10:59:27
Hallo Franz, hallo Steffen,

jetzt habe ich gerade die Excel- und Accessdatei unter neuem Namen gespeichert und dort noch mal geprüft, da hat alles funktioniert! Nun habe ich es auch in meinen Originaldateien getestet und jetzt funktioniert es da auch! Warum weiß ich zwar nicht, da ich in den Originaldateien nichts verändert habe...

Super, Viiiiiiielen Dank für Eure Hilfe!!!

:D :D :D :D
Titel: Re: Access Makro aus Excel aufrufen
Beitrag von: DF6GL am November 08, 2017, 11:48:04
Hallo,

ich vermute, dass an einer anderen DB (in einem anderen Verzeichnis) geändert wurde als an der , die in der String-Variablen definiert wurde.