Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Aus Access xls öffnen und dort Makro starten

Aus Access xls öffnen und dort Makro starten
Julia
Hallo,
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
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Aus Access xls öffnen und dort Makro starten
15.06.2011 14:34:26
ChrisL
Hi Julia
Zu Teil 1: Mit folgendem Makro öffnest du die Excel Datei und führst das Makro aus.
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:
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97, _
"DeineAccessTab", "C:\...\ExcelDat.xls", True, _
"DeineExcelTab"
cu
Chris
PS: Im VBA Editior, Extras, Verweise, Microsoft Excel aktivieren
Anzeige
AW: Aus Access xls öffnen und dort Makro starten
15.06.2011 17:34:59
fcs
Hallo Julia,
zum Teil 1: ähnliche Lösung wie bei Chris. In ACCESS muß im VBA-Editor der Verweis auf die Excel-Objekt-Library nicht gesetzt werden. Das Makro ermöglicht ggf. manuell mit dem Anfügen der Datensäte weiterzumachen.
zum Teil 2 (Import der Daten nach Excel):
Hier fehlt mir VBA-Erfahrung in ACCESS.
Die Anforderungen an das Makro hängen aber von der vorhandenen Struktur in der Datenbank ab.
- Ist schon eine Tabelle vorhanden?
........- Sollen die Daten aus Blatt A der Exceldatei angefügt werden?
........- Sollen die "alten" Daten in der Tabelle vorher gelöscht werden?
- Soll eine neue Tabelle in der Datenbank angelegt werden?
Gruß
Franz
'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

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Aus Access eine Excel-Datei öffnen und Makros ausführen


Schritt-für-Schritt-Anleitung

Um aus Access eine Excel-Datei zu öffnen und ein Makro auszuführen, kannst du folgendermaßen vorgehen:

  1. VBA-Editor öffnen: Gehe in Access auf "Entwicklertools" und öffne den VBA-Editor.

  2. Neues Modul erstellen: Füge ein neues Modul hinzu, um deinen VBA-Code zu schreiben.

  3. 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
  4. Makro in Excel: Stelle sicher, dass das Makro in der Excel-Datei vorhanden ist, das die gewünschten Änderungen vornimmt.

  5. Excel schließen: Füge am Ende deines Codes eine Funktion ein, um Excel zu schließen, nachdem die Arbeit erledigt ist.


Häufige Fehler und Lösungen

  • Excel-Anwendung wird nicht sichtbar: Stelle sicher, dass oAppExcel.Visible = True gesetzt ist.
  • Dateipfad ist falsch: Überprüfe den Pfad zur Excel-Datei. Ein falscher Pfad führt zu einem Fehler beim Öffnen.
  • Makro kann nicht gefunden werden: Achte darauf, dass der Makroname genau so geschrieben ist, wie er in Excel definiert ist.

Alternative Methoden

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.


Praktische Beispiele

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.


Tipps für Profis

  • Makros aktivieren: Stelle sicher, dass die Excel-Makros aktiviert sind, um Fehler beim Ausführen zu vermeiden.
  • Fehlerbehandlung einbauen: Füge Fehlerbehandlungsmechanismen in deinen VBA-Code ein, um unerwartete Probleme zu lösen.
  • Debugging verwenden: Nutze die Debugging-Tools im VBA-Editor, um den Code Schritt für Schritt zu testen.

FAQ: Häufige Fragen

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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige