kann ich aus Access ein xls öffnen und dort ein Makro ausführen?
Das Makro aktualisert in der xls einen Datenbestand im Tabellenblatt 'A'
Anschließend soll das Sheet A in Access kopiert werden.
Jemand eine Idee?
Gruß
Julia
Sub t()
Dim app As Excel.Application
Dim wbk As Excel.Workbook
Set app = New Excel.Application
Set wbk = app.workbooks.Open("C:\Pfad\Datei.xls")
app.Run ("MakroName")
wbk.Close
Set app = Nothing
End Sub
Die Tabelle nach Access kopieren könnte etwas schwieriger sein. In Access müssen die Datenfelder resp. Daten-Typen (Text, Zahl, Datum usw.) genau definiert sein. Grundsätzlich mit folgendem Befehl:'Code in einem allgemeinen Modul in ACCESS
'Erstellt unter ACCESS 2003 / Excel 2003
Option Compare Database
Option Explicit
Private oAppExcel As Object, oWbk As Object
Sub Call_Excel()
Dim sDatei As String, sMakroName As String
sDatei = "C:\Lokale Daten\Test\Daten\AccessDaten.xls" 'Name der Exceldatei
sMakroName = "ACCESS_Calls" 'Makroname (in einem allgemeinen Modul) in der Excel-Datei
' sMakroName = "Tabelle1.ACCESS_Calls" 'Makroname (in einem Tabellen-Modul) in der Excel-Datei
If oAppExcel Is Nothing Then
'Excel-Anwendung starten, dies kann ggf. etwas dauern
Set oAppExcel = VBA.CreateObject("Excel.Application")
End If
'Excelanwendung sichtbar anzeigen
oAppExcel.Visible = True
If oWbk Is Nothing Then
'Exceldatei öffnen
Set oWbk = oAppExcel.workbooks.Open(sDatei)
End If
'Makro starten
oAppExcel.Run "'" & oWbk.Name & "'!" & sMakroName
'Excelfenster minimieren
oAppExcel.WindowState = -4140 'xlMinimized
'gewünschten Datenbereich kopieren. Dieser sollte in der 1. Zeile die gleichen _
Feldnamen haben wie die Felder in der ACCESS-Tabelle in der die Daten angefügt _
bzw. eingefügt werden sollen.
oWbk.worksheets("A").Range("A1:D4").copy
VBA.MsgBox "Kopierte Exceldaten können jetzt in ACCESS angehängt/eingefügt werden!", _
vbInformation, "Exceldaten aktualisieren - importieren"
End Sub
Sub CloseExcel()
'Excel-Datei speichern und Excel-Objekt beenden
If Not oWbk Is Nothing Then
oWbk.Save
oWbk.Close savechanges:=False
End If
If Not oAppExcel Is Nothing Then
oAppExcel.Quit
End If
Set oWbk = Nothing
Set oAppExcel = Nothing
End Sub
'Erstellt unter ACCESS 2003
'Code in einem Formular-Modul in dem die Daten-Tabelle angezeigt/bearbeitet wird.
'Dieser muss natürlich für den Datenimport ggf. maßgeschneidert werden.
Option Compare Database
Option Explicit
Private Sub CmdButton_Excel_Click()
'Schaltfläche zum Öffnen der Exceldatei/-anwendung bzw. Starten des Makros
Call_Excel
End Sub
Private Sub CmdButton_Excel_close_Click()
'Schaltfläche zum Schliessen der Exceldatei/-anwendung
CloseExcel
End Sub
Private Sub Form_Close()
'Beim schliessen des Formulars wird ggf. Exceldatei/-anwendung geschlossen
CloseExcel
End Sub