Access per VBA öffnen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Access per VBA öffnen
von: Nike
Geschrieben am: 28.11.2003 10:19:55

Hi,
hab diesen Tip aus dem Smarttools Newsletter gelesen
und mir gedacht, es könnte auch für andere die von Excel auf geschützte
Access Datenbanken zugreifen möchten interessant sein...

Bye

Nike

BONUS-TIPP: Zugriff auf geschuetzte Datenbanken per VBA
-------------------------------------------------------
Versionen: Access 97, 2000, 2002/XP und 2003

Auch wenn Sie keine Systemdatenbank fuer Arbeitsgruppen mit
Benutzer- und Gruppenberechtigungen einsetzen, koennen Sie
Ihre Access-Datenbanken vor unerlaubten Zugriffen schuetzen.
Dafuer legen Sie einfach ein Datenbankkennwort fest. In
Access 97 waehlen Sie dafuer das Menue EXTRAS-
ZUGRIFFSRECHTE-DATENBANKKENNWORT Zuweisen an. In Access
2000/2002/2003 lautet der Befehl EXTRAS-SICHERHEIT-
DATENBANKKENNWORT ZUWEISEN. Anschliessend tippen Sie das
gewuenschte Kennwort ein, und schon ist die aktuelle
Datenbank geschuetzt: Ein Oeffnen der Datenbank ist in
Zukunft nur noch mit Hilfe des Kennworts moeglich.

Das gilt allerdings auch, wenn Sie per Programmcode auf eine
geschuetzte Datenbank zugreifen wollen. Es waere sicherlich
keine gute Loesung, die Ausfuehrung von VBA-Prozeduren jedes
Mal durch eine Aufforderung zur Kennworteingabe zu
unterbrechen. Um mit geschuetzten Datenbanken arbeiten zu
koennen, ohne auf Benutzereingaben angewiesen zu sein, geben
Sie das Kennwort im Programmcode an. Dazu ein Beispiel.

Angenommen, Sie haetten eine Datenbank namens SICHER.MDB,
der Sie das Datenbankkennwort "schutz" zugewiesen haben. Nun
wollen Sie aus einer zweiten MDB-Datei per VBA-Code auf die
geschuetzte Datenbank zugreifen - in den folgenden
Programmzeilen etwa, um die Tabellennamen auszulesen.

Dazu legen Sie in der zweiten Access-Datenbank ein neues
Modul an, in das Sie folgenden Code eingeben:

ACCESS 97 MIT DAO:


Sub PWD_Zugriff() 
Dim dbExtDB As Database 
Dim tblExtDB As TableDef 
Dim strAktDBPfad As String 
Dim strAusgabe As String 
strAktDBPfad = CurrentDb.Name 
Do While Mid(strAktDBPfad, _ 
Len(strAktDBPfad), 1) <> "\" 
strAktDBPfad = Left(strAktDBPfad, _ 
Len(strAktDBPfad) - 1) 
Loop 
Set dbExtDB = DBEngine.OpenDatabase(strAktDBPfad & _ 
"Sicher.mdb", False, False, ";pwd=schutz") 
For Each tblExtDB In dbExtDB.TableDefs 
strAusgabe = strAusgabe & tblExtDB.Name & vbCr 
Next tblExtDB 
MsgBox "Die Tabellen der geschuetzten Datenbank:" & _ 
vbCr & strAusgabe 
End 

Sub 
ACCESS 2000/2002/2003 MIT ADO: 

Sub PWD_Zugriff() 
Dim cnnAktDB As ADODB.Connection 
Dim catExtDB As New ADOX.Catalog 
Dim tblExtDB As ADOX.Table 
Dim strAktDBPfad As String 
Dim strAusgabe As String 
Set cnnAktDB = CurrentProject.Connection 
strAktDBPfad = cnnAktDB.Properties("Data Source") 
Do While Mid(strAktDBPfad, Len(strAktDBPfad), 1) <> "\" 
strAktDBPfad = Left(strAktDBPfad, Len(strAktDBPfad) - 1) 
Loop 
catExtDB.ActiveConnection = _ 
"Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
"Data Source=" & strAktDBPfad & "Sicher.mdb;" & _ 
"Jet OLEDB:Database Password=schutz;" 
For Each tblExtDB In catExtDB.Tables 
strAusgabe = strAusgabe & tblExtDB.Name & vbCr 
Next tblExtDB 
MsgBox "Die Tabellen der geschuetzten Datenbank:" & _ 
vbCr & strAusgabe 
End 

Sub 
Voraussetzung fuer eine fehlerfreie Funktionsweise ist, dass 
sich die geschuetzte Datenbank SICHER.MDB im selben 
Verzeichnis befindet wie die aktuelle Datenbank mit dem 
Makrocode. 
WICHTIG: In Access 2000/2002/2003 muessen Sie ausserdem 
einen Verweis auf die ADOX-Bibliothek herstellen. Dazu 
waehlen Sie im Modul das Menue Extras-Verweise an und 
aktivieren dann den Eintrag "Microsoft ADO Ext. 2.5 for DDL 
and Security". 
Nun zur Funktionsweise: In beiden Faellen wird zunaechst der 
Name der aktuellen Datenbank ermittelt, was in DAO (Access 
97) ueber das CurrentDB-Objekt geschieht und in ADO (Access 
2000) ueber die "Data Source"-Eigenschaft der Verbindung zum 
aktuellen Projekt. In der Do-Loop-Schleife wird der 
Dateiname entfernt, so dass "strAktDBPfad" nur noch den Pfad 
enthaelt. 
Fuer den Datenbankzugriff per Kennwort ist dann die folgende 
Codezeile massgebend. In DAO geben Sie das Kennwort im 
vierten Parameter der OpenDatabase-Methode als Textstring 
an: 
";pwd=schutz" 
In ADO nennen Sie das Kennwort im Rahmen des 
"ConnectionString" einer Verbindung, hier im Rahmen der 
ActiveConnection-Eigenschaft des Catalog-Objekts: 
"Jet OLEDB:Database Password=schutz;" 
Der Rest des VBA-Makros steht dann nur beispielhaft fuer 
Aktionen, die Sie an der geschuetzten Datenbank vornehmen. 
In diesem Fall ermittelt eine For Each-Next-Schleife die 
Namen der vorhandenen Tabellen, die am Ende in einem 
Meldungsfenster ausgegeben werden. Um den Programmcode 
auszufuehren, setzen Sie den Cursor einfach in eine 
beliebige Zeile des Makros und druecken F5. 
Bild


Betrifft: AW: Noch ein Access Link
von: Nike
Geschrieben am: 28.11.2003 11:04:47

Hi,

http://www.erlandsendata.no/english/index.php?t=envbadac

Da ich diesen Link gerne poste,
lagere ich Ihn mal hier ein,
um ihn bei den diversen Google Suchen
schneller finde, Stichwort Accesss mit 3s

Bye

Nike


Bild


Betrifft: Das ist der richtige - weil ADO:-)
von: Michael Scheffler
Geschrieben am: 28.11.2003 12:42:20

Den wollte ich gerade als Antwort posten.


Bild

Beiträge aus den Excel-Beispielen zum Thema " Access per VBA öffnen"