Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1788to1792
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Aus Excel herau Access Prozedur ausführe

Aus Excel herau Access Prozedur ausführe
20.10.2020 10:15:07
Steven
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

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

Betreff
Datum
Anwender
Anzeige
AW: Aus Excel herau Access Prozedur ausführe
20.10.2020 10:47:35
ChrisL
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
Anzeige
AW: Aus Excel herau Access Prozedur ausführe
20.10.2020 10:53:51
Steven
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.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige