Hallo,
Ich möchte gerne aus einer bestehenden DB eine andere DB über eine Befehlsschaltfläche öffnen. Habe mir schon eine Schaltfläche erstellt doch beim Click erhalte ich die Meldung ungültige Prozeduraufruf oder ungültiges Argument.
die Ereignisprozedur bei Click lautet
Private Sub DB_Compex_Spuren_öffnen_Click()
On Error GoTo Err_DB_Compex_Spuren_öffnen_Click
Dim stAppName As String
stAppName = "H:\FP Manager\Spuren _Comp.mdb"
Call Shell(stAppName, 1)
Exit_DB_Compex_Spuren_öffnen_Click:
Exit Sub
Err_DB_Compex_Spuren_öffnen_Click:
MsgBox Err.Description
Resume Exit_DB_Compex_Spuren_öffnen_Click
End Sub
Hat da einer eine Idee warum es nicht geht.
Ps. Beide DB liegen im selben Ordner und auf gleichem Laufwerk
Uwe01
Hallo,
versuch zunächst(im Fall von A2003):
stAppName = """%ProgramFiles%\Microsoft Office\Office11\MsAccess.exe"" ""H:\FP Manager\Spuren _Comp.mdb"""
wenn das nicht hilft, benutze Shellexecute, um die DB zu starten..
http://dbwiki.net/wiki/VBA_Tipp:_Anwendung_mit_ShellExecute_starten
ist ja schon ein Anfang, jetzt bekomme ich die Meldung ,,Datei nicht gefunden". Muss ich da nicht Office 2003 angeben und nicht Office 11. Und mit dem link weiß ich nicht richtig was anzufangen muss ich das dann als Ereignisprozedur schreiben. Die Seite ist ja nicht schlecht werde da mal einwenig rum stöbern.
Hallo uwe01
ZitatMuss ich da nicht Office 2003 angeben und nicht Office 11.
NEIN, Die Installation des Office 2003 - Pakets hat im Verzeichnis C:\Programme (Standard) einen Verzeichnisbaum erstellt in dem das Unterverzeichnis Office11 (steht für die installierte Version des MS-Office-Pakets)
unter anderem auch die Datei MSACCESS.EXE enthält.
In der Systemvariablen %ProgramFiles% ist der genaue Pfad zu den Iínstallierten Programmen in deinem System gespeichert und wird bei der Gelegenheit abgerufen.
Der Fehler "Datei nicht gefunden" KÖNNTE m.E. eher daher rühren, dass sich die Datei Spuren_Comp.mdb NICHT am angegebenen Speicherort befindet!
Suche mal die Datei und KOPIERE sie zu Testzwecken in ein Verzeichnis 'TEST' welches du direkt unter C:\ erstellst.
Danach versuche den Code von Franz wie folgt abgewandelt zu verwenden um die Funktionalität des Aufrufes zu testen:
stAppName = """%ProgramFiles%\Microsoft Office\Office11\MsAccess.exe"" ""C:\Test\Spuren _Comp.mdb"""
Zur der Sache mit ShellExecute:
Die Funktion stellt eine s.g. API Funktion dar, die du in einem Standardmodul zur allgemeinen Verwendung unterbringen KANNST.
Erzeuge dazu einfach ein Modul und speichere dieses mal unter einem beliebigen Namen.
Dann kopierst du folgenden Code da rein:
Option Compare Database
Option Explicit
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nshowcmd As Long) As Long
Public Const SW_HIDE = 0 ' Versteckt öffnen
Public Const SW_MAXIMIZE = 3 ' Maximiert öffnen
Public Const SW_MINIMIZE = 6 ' Minimiert öffnen
Public Const SW_NORMAL = 1
Public Const SW_RESTORE = 9
Public Const SW_SHOWMAXIMIZED = 3
Public Const SW_SHOWMINIMIZED = 2
Public Const SW_SHOWMINNOACTIVE = 7
Public Const SW_SHOWNOACTIVATE = 4
die Zeilen ... Option Compare Database und
Option Explicit
.... sollten bereits im Modul vorhanden sein, wenn du es anlegst bzw. öffnest.
Im Formular, von dem aus du die fremde DB aufrufen willst schreibst du ins Click-Ereignis eines Button ...
Private Sub DeinButton_Click()
Call ShellExecute(Me.hWnd, "open", _
"C:\Test\TestDatenBank.mdb", "", _
"", SW_NORMAL)
End Sub
Beachte bitte, dass der Dateiname und der Pfad dorthin DEINEN Gegebenheiten angepasst werden MUSS!
HTH
Ich danke euch beiden für die Prompte antworten. Habe das Problem gelöst, in dem ich eine Word befehlsschaltfläsche genommen habe und diese dann auf die andere BD verwiesen habe siehe VBA Code
Private Sub Compex_Spuren_Click()
On Error GoTo Err_Compex_Spuren_Click
Dim oApp As Object
Set oApp = CreateObject("H:\FP Manager\Spuren _Comp.mdb")
oApp.Visible = True
Exit_Compex_Spuren_Click:
Exit Sub
Err_Compex_Spuren_Click:
MsgBox Err.Description
Resume Exit_Compex_Spuren_Click
End Sub
Jetzt stellt sich mir ein anderes Problem. Wenn ich die DB starte möchte ich gerne dass sie gleich in ein bestimmtes Formular startet ohne erst ein Acces Fenster zu öffnen. Geht das? Müsste man doch glaub ich über Makro hinbekommen.
Hallo,
ZitatGeht das? Müsste man doch glaub ich ...
Makro = Pfui Deibl! :D ;) ;D
Gehe bei angezeigtem Datenbankfenster der zu öffnenden DB (H:\FP Manager\Spuren _Comp.mdb) in der Menüleiste auf Extras ... Start ...
Im angezeigten Assistentenfenster kannst du nun die Startoptionen deiner Datenbank bestimmen.
So z.B. auch unter 'Formular/Seite anzeigen:' ein Formular auswählen, dass beim Datenbankstart automatisch geöffnet werden soll.
HTH
Danke
Habe einfach das eröffnungs Fenster auf ganz klein gezogen, und hinter dem Formular Fenster gesetzt geht auch so.
Hallo,
wenn du meinen Tipp befolgst und dazu noch das Häkchen bei 'Daténbankfenster anzeigen' wegnimmst dann startet Access und zeigt sofort das ausgewählte Formular an, das Datenbankfenster (die Elemente der Datenbank) wird nicht agezeigt.
Access mit ausgeblendetem Applikationsfenster zu starten geht natürlich auch ... da solltest du aber schon GENAU Wissen was du tust!
Lies dazu den folgenden Artikel GANZ GENAU!
http://support.microsoft.com/kb/510049/de (http://support.microsoft.com/kb/510049/de)
Ansonsten ... schönes WE!