Parameterabfrage -> Parameter ,,automatisch" wählen und Ergebnisse nach XLS exportieren.
Hallo zusammen,
folgendes Problem.
Ich habe eine Abfrage, welche folgende (relevante) Felder und Gruppierungsmerkmale enthält:
Organisationseinheit (gruppiert) und Parameter WIE [Einheit eingeben]
Name (gruppiert)
Tätigkeit (gruppiert)
Aktenzeichen (Anzahl)
Die Felder Organisationseinheit und Name kommen aus einer Tabelle und Tätigkeit und Aktzeichen aus einer anderen. Verbunden alle über die (nicht angezeigte) ID des Mitarbeiters.
Als Ergebnis gibt es dann eine Tabelle, welche wie folgt aussieht
Org.-einheit / Name / Tätigkeit / (Anzahl Aktenzeichen) -> für jeden MA dieser Org.-einheit mehrere Einträge.
Diese Tabelle wird dann als XLS exportiert und den Leitern der jeweiligen Org.-einheit geschickt. Nur ich arbeite an der DB.
Diese Abfrage aber jetzt für jede Org.-einheit laufen zu lassen ist aufwändig – und ich würde das gern irgendwie automatisieren.
Kann ich daher eine Art Makro erstellen, welches
die Abfrage mit jedem möglichen Parameter (=Org.-einheit) durchführt (die Liste der möglichen Org.-einheiten könnte ich ja in eine andere Tabelle schreiben)
und diese dann als einzelne XLS wegspeichert oder per Mail an einen definierten Kreis (eine XLS = ein Empfänger) wegschickt?
Hallo Sumpfeule,
hier ein Beispiel, wie man so etwas machen könnte. Anstatt einer "echten" Paramameter-Query wird hierbei eine Tempvar als Where-Condition verwendet, wodurch dann die Abfrage beeinflußt werden kann, z.B.
SELECT * FROM tblData WHERE ID = [TempVar]![SendID]
Der Code für das Versenden kann dann so ablaufen, wobei die Mailempfänger fest vorgegeben sind.
Sub SendXLSperMail()
Dim rst As DAO.Recordset
Dim vntTo As Variant
Dim vntCC As Variant
vntTo = "Annabelle_Six@outlook.ms"
vntCC = "Kay_Berger@outlook.ms; Christine_Eggers@outlook.ms"
Set rst = CurrentDb.OpenRecordset("SELECT ID FROM tblDemo")
Do Until rst.EOF
Debug.Print rst!ID, MailTo
' Assign the wherecondition for the query
TempVars!SendID = rst!ID.Value
' Open the query and send the object to the recipient(s)
DoCmd.SendObject acSendQuery, "qryDataByID", acFormatXLSX, _
To:=vntTo, _
CC:=vntCC, _
Subject:="MySubject", _
MessageText:="MyMessage", _
EditMessage:=True
Loop
' Close recorset and cleanup
If Not rst Is Nothing Then rst.Close
Set rst = Nothing
TempVars.Remove "SendID"
End Sub
Die Datensätze werden hier über die ID selektiert und aus der tblDemo ausgelesen.
Das ist nur natürlich ein Beispiel und das mußt du noch an deine Wünsche anpassen.
Gruß Ulrich
Hallo Ulrich,
danke für die Antwort! Ich vermute, obiges ist der SQL einer Abfrage und unteres ein VBA-Code (mit letzterem habe ich noch nicht gearbeitet - muss ich mich einfuchsen).
Ich schaue es mir morgen im Büro mal an und melde mich dann.
VG
Ronny