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
Um aus Access eine Excel-Datei zu öffnen und ein Makro auszuführen, kannst du folgendermaßen vorgehen:
VBA-Editor öffnen: Gehe in Access auf "Entwicklertools" und öffne den VBA-Editor.
Neues Modul erstellen: Füge ein neues Modul hinzu, um deinen VBA-Code zu schreiben.
Excel-Anwendung starten: Verwende den folgenden VBA-Code, um die Excel-Datei zu öffnen und ein Makro auszuführen:
Sub Call_Excel()
Dim oAppExcel As Object
Dim oWbk As Object
Dim sDatei As String
Dim sMakroName As String
sDatei = "C:\Pfad\Datei.xls" ' Hier den Pfad zur Excel-Datei angeben
sMakroName = "MakroName" ' Hier den Namen des Makros angeben
Set oAppExcel = CreateObject("Excel.Application")
oAppExcel.Visible = True
Set oWbk = oAppExcel.Workbooks.Open(sDatei)
oAppExcel.Run sMakroName
End Sub
Makro in Excel: Stelle sicher, dass das Makro in der Excel-Datei vorhanden ist, das die gewünschten Änderungen vornimmt.
Excel schließen: Füge am Ende deines Codes eine Funktion ein, um Excel zu schließen, nachdem die Arbeit erledigt ist.
oAppExcel.Visible = True
gesetzt ist.Falls du Access ohne die Excel-Anwendung starten möchtest, kannst du auch das DoCmd.TransferSpreadsheet
-Kommando verwenden, um Daten direkt aus Excel zu importieren:
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97, _
"DeineAccessTab", "C:\...\ExcelDat.xls", True, _
"DeineExcelTab"
Dies ermöglicht es dir, Daten aus Excel in Access zu importieren, ohne eine Instanz von Excel zu starten.
Hier ist ein Beispiel, wie du spezifische Daten aus einem bestimmten Blatt in Access kopieren kannst:
' Kopieren von Daten aus Blatt "A"
oWbk.Worksheets("A").Range("A1:D4").Copy
Achte darauf, dass die Feldnamen in Access mit den Spaltennamen im Excel-Blatt übereinstimmen.
1. Kann ich ein Makro in Excel aus Access heraus automatisch starten?
Ja, du kannst ein Makro starten, indem du die Run
-Methode in deinem VBA-Code verwendest.
2. Muss ich die Excel-Bibliothek in Access aktivieren?
Es ist nicht zwingend erforderlich, aber die Aktivierung kann die Kompatibilität und Funktionalität verbessern.
3. Wie kann ich sicherstellen, dass die Daten korrekt importiert werden?
Vergewissere dich, dass die Datenfelder in Access den Daten in Excel entsprechen, insbesondere hinsichtlich der Datentypen.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen