Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen

Aus Excel herau Access Prozedur ausführe

Betrifft: Aus Excel herau Access Prozedur ausführe von: Steven
Geschrieben am: 20.10.2020 10:15:07

Hallo zusammen,


kann mir bitte jemand sagen ob und wie es möglich ist aus einer Excel Prozedur heraus eine Prozedur in Access zu starten?


Folgendes Szenario:

Es besteht ein Excelfile mit Bestelldaten. Diese Bestelldaten möchte ich an eine Datenbank übergeben, was bislang schon funktioniert. Aktuell muss ich aber noch die Datenbank öffnen und den Command-button für Speichern klicken, damit die Prozedur ausgeführt wird. Das möchte ich aber automatisieren.


Bislang habe ich es aber nur hinbekommen, dass ich die Form öffne, den Fokus auf die Schaltfläche lege, aber nicht diese zu betätigen bzw. die dahinterliegende Prozedur aufzurufen.


Die in Access ist ein Microsoft Access Klassenobjekt und die Prozedur ist "Private".


Nachfolgend der Code mit dem ich die Daten an die Datenbank übergebe:

Sub DataToAccess(strGN)
Dim ADOC As ADODB.Connection
Dim DBS As ADODB.Recordset
Dim lngZeile As Long
Dim intIndex As Integer
Dim arG, arH, arA, arAH, arK, arKO, arD, arT, arKW, arKW2, arMail, arAutoMail As Variant
Dim SuchGerät As String
Dim x As Integer

On Error GoTo Fehler

Set ADOC = New ADODB.Connection

With ADOC
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .Open "S:\Anlagen\Zentralanlagen-Verwaltung.mdb"
End With

Set DBS = New ADODB.Recordset

DBS.Open "zentralanlagen", ADOC, adOpenKeyset, adLockOptimistic

With Sheets("Auftragseingang")
    SuchGerät = strGN
    If SuchGerät = "" Then Exit Sub
    
    x = 2
    
    Do Until Sheets("Auftragseingang").Range("C" & x) = SuchGerät
        x = x + 1
    Loop
    
    arG = .Range("C1")
    arH = .Range("A1")
    arA = .Range("B1")
    arAH = .Range("AF1")
    arK = .Range("AG1")
    arKO = .Range("AH1")
    arD = .Range("J1")
    arT = .Range("AE1")
    arD = .Range("J1")
    arKW = "gewünschter Liefertermin"
    arKW2 = "möglicher Liefertermin"
    arMail = "eMailAdresse"
    arAutoMail = "AutoeMail"
    
    DBS.AddNew
    
    DBS.Fields(arG) = .Cells(x, 3).Value
    DBS.Fields(arH) = .Cells(x, 1).Value
    DBS.Fields(arA) = .Cells(x, 2).Value
    DBS.Fields(arAH) = .Cells(x, 32).Value
    DBS.Fields(arK) = .Cells(x, 33).Value
    DBS.Fields(arKO) = .Cells(x, 34).Value
    DBS.Fields(arD) = .Cells(x, 10).Value
    DBS.Fields(arT) = .Cells(x, 31).Value
    DBS.Fields(arD) = .Cells(x, 10).Value
    DBS.Fields(arKW) = .Cells(x, 15).Value
    DBS.Fields(arKW2) = .Cells(x, 15).Value
    DBS.Fields(arMail) = .Cells(x, 42).Value
    DBS.Fields(arAutoMail) = .Cells(x, 43).Value
    DBS.Update
    Sheets("Auftragseingang").Range("AR" & x) = "x"
End With

Fehler:
If Err.Number Then MsgBox Err.Description, , Err.Number ' ggf. eine Fehlermeldung ausgeben

DBS.Close
ADOC.Close
Set ADOC = Nothing
Set DBS = Nothing
Hell:
End Sub

Betrifft: AW: Aus Excel herau Access Prozedur ausführe
von: ChrisL
Geschrieben am: 20.10.2020 10:47:35

Hi Steven

Mit dem aktuellen Code wird eine Verbindung zu Access aufgebaut, was für die Ausführung eines Makros nicht reicht. Access müsste hierzu als Applikation geöffnet werden.

Hier ein zufälliges Beispiel:
https://www.herber.de/forum/archiv/1612to1616/1615940_Access_2010_kein_Prozduraufruf_in_einer_2_Access.html

Persönlich würde ich eine Late Binding Variante wählen: CreateObject("Access.Application")
(damit müssen unter Extras keine Verweise gesetzt werden)

Allerdings frage ich mich, ob die Übung notwendig ist. Explizit speichern musst du dein DB-Update ja nicht. Was der vorhandene CommandButton ausführen soll, entzieht sich meiner Vorstellungskraft.

cu
Chris

Betrifft: AW: Aus Excel herau Access Prozedur ausführe
von: Steven
Geschrieben am: 20.10.2020 10:53:51

Hi Chris,

erstmal vielen Dank für deine Antwort. Ich werde mir das anschauen.

Zu deiner Frage bezüglich des CommandButtons.
Bei klicken wird ein Ordner in einer bestehenden Ordnerstruktur für die Bestellung erstellt und dort andere auftragsspezifische Unterlagen generiert, die dort abgelegt werden.
Und eben hinter eines dieser Dokumente ist ein PrintOut Befehl.

Beiträge aus dem Excel-Forum zum Thema "Aus Excel herau Access Prozedur ausführe"