# Verknüpfung von Excel zu Access??



## RobertSchmitz (16. Juni 2003)

Hallo,

ich stehe mal wieder vor einem, zumindest für mich, folgenden unlösbaren Problem.

Ich möchte ein Datenfeld in Excel mit dem Ergebnis einer Abfrage aus Access verknüpfen. Hierbei handelt es sich um die Gesamtanzahl der Patienten. 

Da sich diese Zahl täglich erhöht, müsste das eine dynamische Verknüpfung sein, die sich automatisch ändert. Oder zumindest sich durch die Betätigung eines Buttons an die Quelldatei (Access) anpassen.

Diese Problem ist nicht so trivial, daher wäre ich Euch sehr dankbar, mir wenigstens Lösungsansätze zu schreiben. 

Danke im Voraus

Robert


----------



## Thomas Darimont (16. Juni 2003)

Servus!

Excel-Datei

Access-Datei

------------

Excel:

Ansicht -> Symbolleisten -> VisualBasic -> Befehlsschaltfläche 
	-> Irgendwo auf der Form platzieren-> Doppelklick -> Jetzt bist du im VB Editor

Extras -> Verweise -> Microsoft Access X.XX Object Library
                   -> Microsoft ActiveX Data Objects Library 2.X
                                            (größte Zahl für X)...
                   ->Microsoft ActiveX Data Object Recordset ...
                   ->Microsoft ADO Ext. 2.X for DDL and Security

jetzt folgenden Code eingeben:


```
Private Sub CommandButton1_Click()

MsgBox "Access wird gestartet..."

Dim rs As New ADODB.Recordset
Dim x As Variant

With rs
    
    'Hier Pfad anpassen ...
    
    .ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" + _
    "Data Source=C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\db1.mdb;" + _
    "Persist Security Info=False"
    
    .LockType = adLockOptimistic
    .CursorLocation = adUseClient
    .CursorType = adOpenDynamic
    
    .Open "abfrage1"  '<--- hier passenede Abfrage wählen
                      'in meiner Beispiel Abfrage kommt nur ein Feld vor und es wird nur eine Zeile zurückgegeben...
    
    x = CInt(!Summevonmenge)
    
End With

rs.Close

Set rs = Nothing

Me.Activate

    'Zielzelle ... im Moment "A1" ....

Me.[A1] = x

End Sub
```

Beispiel hängt als Anhang ... musst aber gegebenenfalls noch die Pfade abändern ...

Gruss Tom


----------



## RobertSchmitz (17. Juni 2003)

Servus Tom,

vielen vielen Dank für Deine Hilfe.

Abgesehen von ein paar kleinen Anpassungen (Definition der Variablen x als Long und den Pfadanpassungen) läuft das Programm einwandfrei.

Gruß Robert


PS: Bestünde, da auch eine Möglichkeit, diese Aktualisierung nicht über die Befehlsschaltfläche zu starten, sondern über ein Icon in der Symbolleiste?


----------



## Thomas Darimont (17. Juni 2003)

Servus!


```
Code zwischen Private Sub CommandButton1_Click() .. End Sub in die Zwischenablage Kopieren ...

Im Projektfenster auf VBAProjekt -> Einfügen -> Modul -> Modul1
Im Modul1 -> neue Sub -> Sub getValue ... end sub -> bei "..." Code einfügen ...

nun Symbolleiste:

Ansicht -> Symbolleisten -> Anpassen
        -> Neu ->  SymbLeiste1
        -> SymbLeiste1 müsste jetzt irgendwo aufpoppen ...
         
        -> Jetzt auf den Reiter Befehle -> Makros  -> Benutzerdefinierte Schaltfläche
        -> Anklicken mit gedrückter linker Maustaste in die neue Symbolleiste ziehen ...
        -> Anpassen Fenster offen lassen ...
        -> Rechte Maustaste auf das neue Symbol und Makrozuweisen wählen ...
        -> getValue bzw. Modul1.getValue auswählen ...

...fertig!
```

Wichtig: Leichte Änderungen im Code beachten!

Gruss Tom


----------

