PDA

Vollständige Version anzeigen : Per VBScript Prozedur aus Access 2007-DB starten


mischma
13.08.2010, 14:49
Hallo,

ich versuche per VBScript, eine Prozedur Test in der Datenbank (Access 2007) zu starten.

Option Explicit

Dim objAccess
Set objAccess = CreateObject("Access.Application")

objAccess.OpenCurrentDB = "C:\Dokumente und Einstellungen\testuser\Desktop\Test.accdb"
objAccess.DoCmd.RunMacro "Test"
objAccess.Quit 2 '2=acSaveNone

MsgBox "Fertig"

Leider erhalte ich einen Laufzeitfehler im Script:

Das Objekt unterstützt diese Eigenschaft oder Methode nicht.: OpenCurrentDB

Wer kann mir bitte helfen?

Vielen Dank, Mike

ebs17
15.08.2010, 21:58
Die Methode heißt OpenCurrentDatabase.

Nach dem Öffnen sollte auch ein Schließen folgen: CloseCurrentDatabase

mischma
15.08.2010, 22:25
Hallo Eberhard, und danke für's Antworten.

Ich habe mein Script umgebaut und erhalte aber immer noch eine Fehlermeldung, s.angehängtes Bild.

Option Explicit

Dim objAccess
Set objAccess = CreateObject("Access.Application")

objAccess.OpenCurrentDatabase = "C:\Users\Mike\Desktop\Test.accdb"
objAccess.DoCmd.RunMacro "Test"
objAccess.CloseCurrentDatabase = "C:\Users\Mike\Desktop\Test.accdb"
objAccess.Quit 2 '2=acSaveNone

MsgBox "Fertig"

Vielleicht weißt Du weiter :-)

Danke, Mike

_anton_
16.08.2010, 16:28
Hallo Mike,

probier's so:
Option Explicit

Dim objAccess
Set objAccess = CreateObject("Access.Application")

objAccess.OpenCurrentDatabase "C:\Users\Mike\Desktop\Test.accdb"
objAccess.DoCmd.RunMacro "Test"
objAccess.CloseCurrentDatabase "C:\Users\Mike\Desktop\Test.accdb"
objAccess.Quit 2 '2=acSaveNone

MsgBox "Fertig"

mfg Anton

mischma
17.08.2010, 09:18
Hallo Anton,

ich habe Dein Codebeispiel 1:1 übernommen und erhalte nun die Fehlermeldung,
daß die Prozedur nicht gefunden wird :-(

Danke für Deine Hilfe!

Grüsse, Mike

Arne Dieckmann
17.08.2010, 09:59
RunMacro ruft Makros, nicht Prozeduren auf. Du musst also ein Makro anlegen, welches wiederum eine Public Function (Sub geht IMHO nicht) startet. Die Funktion in ein Modul legen, welches anders als die darin abgelegte Funktion und die MDB benannt werden muss.

ebs17
17.08.2010, 09:59
objAccess.DoCmd.RunMacro "Test"
Ein Makro in Access ist ein Makro (etwas eigenes) und keine VBA-Prozedur (in Unterscheidung zu Word und Excel).
Du müsstest also ein Makro erzeugen, das die gewünschten Aktionen ausführt.
Im zweckmäßigen Fall enthält das Makro nur den Aufruf der VBA-Routine:
AusführenCode
und als Funktionsname eine Funktion in einem allgemeinen Modul, wobei die Funktion dann selber alle Anweisungen enthält oder ihrerseits weitere Prozeduren aufruft.

mischma
17.08.2010, 12:00
Hallo Ihr 2,

da habe ich wohl den Wald vor lauter Bäumen nicht gesehen :-)

Jetzt funktioniert es!

Option Explicit

Dim objAccess
Set objAccess = CreateObject("Access.Application")

objAccess.OpenCurrentDatabase "C:\Dokumente und Einstellungen\Testuser\Desktop\Test.accdb"
objAccess.Run "fnTest"
objAccess.CloseCurrentDatabase
objAccess.Quit 2 '2=acSaveNone

MsgBox "Fertig"

Vielen Dank allen Antwortern..

Grüsse, Mike