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)