Aus Access VBA auf Excel zugreifen

Hallo zusammen,
ich „bastle“ gerade an einer Marktdatenbank, die Informationen zu Aktien aus einem Marktdateninformationssystem zieht. Die meisten Steuerparmeter konnte ich in der Datenbank unterbringen. Einige Informationen muss ich aus Exceldateien einlesen.

Ich möchte gerne wissen, wie ich aus Access VBA ein Excel Workbook referenzieren und bearbeiten kann.

schon einmal vielen Dank!
Dom

Hi Dom

habe aus Access VBA mal Word gesteuert. Excel bisher noch nicht, aber das Funktioniert nach dem selben Prinzip.

Dim Wordapp As Word.Application


 Set Wordapp = GetObject(, "Word.Application.8")
 If Err.Number 0 Then 
 Err.Clear
 Set Wordapp = CreateObject("Word.Application.8")
 End If

Für Excel dürfte es so aussehen:

Dim Excelapp As Excel.Application


 Set Excelapp = GetObject(, "Excel.Application.8")
 If Err.Number 0 Then 
 Err.Clear
 Set Excelapp = CreateObject("Excel.Application.8")
 End If

Danach kannst Du bei dem Excel Applikation Objekt mit den VBA Funktionen aus Excel arbeiten.
Bsp.:

 Excelapp.Range("A1").Offset(Reihe,Spalte).Value

Die Variablen Reihe und Spalte nutze ich für automatische Suchprozeduren in Exceltabellen.

Hoffe ich konnte Dir eine Anregung geben.

Gruß Andreas

Hi Andreas,
da bei der Übernahme des Codes einige Fehlermeldungen produziert wurden, hier eine Anmerkung für andere interessierte Leser.

Dim Wordapp As Word.Application
Dim Excelapp As Excel.Application

die Objekttypen Word. bzw. Excel.Application sind in Access nicht Verfügbar. Daher müssen zunächst die Typ-Bibliotheken referenziert werden über:
Extras - Verweise - Microsoft Excel bzw. Word

Hoffe ich konnte Dir eine Anregung geben.

Konntest Du

besten Dank und schönen Gruß
Dom

Schau dir vielleicht auch mal die Beispiele im DBWiki (http://www.dbwiki.de) an…

Gruß aus dem Norden
Reinhard Kraasch

(http://www.dbwiki.de - das Datenbank-Wiki)

Besten Dank schon mal. Klappt alles toll. Nachteil bei meiner Lösung ist, dass mit „Set objXlApp = Excel.Application“ jeweils eine neue Instanz von Excel geöffnet wird.

Ich möchte Überprüfen, ob bereits eine Instanz geöffnet ist und diese dann verwenden. Nur wenn keine Excelinstanz offen ist möchte ich eine neue anlegen.

(Excel starten dauert bei mir, da recht viele AddIns geladen werden UND bei einer neuen Instanz müsste ich diese auch alle einzeln laden)

Any thoughts?

Gruß Dom

Wie auch in den erwähnten Beispielen gezeigt:

Dim oExcel As Excel.Application
 On Error Resume Next
 Err.Clear
 Set oExcel = GetObject(, "Excel.Application ")
 If oExcel Is Nothing Then Set oExcel = CreateObject("Excel.Application")
 On Error Goto Er

häufig ist es zwar nicht so komfortabel, aber stabiler, mit "late binding zu arbeiten, also

Dim oExcel As Object

usw.

Gruß aus dem Norden
Reinhard Kraasch

(http://www.dbwiki.de - das Datenbank-Wiki)