Daten aus einer Abfrage in Access in eine vorgefertigte Excel-Tabelle exportieren
Hallo zusammen,
ich mache im Moment meine ersten Erfahrungen mit VBA und habe aber nun das Problem, dass ich aus einer Abfrage Daten in eine vorgefertigte Excel-TAbelle exportieren will.
Also wie sage ich, in welche Excel Tabelle geschrieben werden soll, wie sage ich, welche Zeilen benutzt werden sollen und wie kann ich Zeilen vergleichen, das heißt wie kann ich sagen wenn in A1 x steht schreibe y in B1
Wenn ihr mir helfen könntet wäre das meine Urlaubsrettung!
Antwort schreiben
Antwort 1 von RalfH vom 04.03.2020, 13:11 Options
Hallo Tara,
Könntest Du bitte eine wenig detalierter werden?
Gruß Ralf
Antwort 2 von Tara10 vom 04.03.2020, 13:25 Options
Also es geht um eine Auswertung von Tätigkeiten im Dienstleistungsbereich und die dazugehörige Stundenzahl.
In einer Excel-Tabelle habe ich ein Format erstellt, wo eine Kosten-Leistungsrechnung durchgeführt werden soll und die Stunden aus der Abfrage von Access in die Tabelle durch einen "Klick" auf einen Button im Formular der Datenbank in diese Tabelle importiert werden sollen. Dies soll aber an den richtigen Platz, sprich in die richtige Zeile passieren.
Denn in der Excel-Tabelle sollen alle Tätigkeiten aufgelistet sein, wärend ja bei der Abfrage nur Tätigkeiten aufgezeigt sind, wo es auch wirklich Stunden zu gibt.
Also meine Frage ist, wie bekomme ich die Stundenzahlen in die richtigen Positionen in der Excel-Tabelle.
Ich hoffe das war etwas besser als meine erste Ausführung und hilft euch etwas weiter.
Viele Grüße
Antwort 3 von derverzweifelte vom 04.03.2020, 22:35 Options
Hallo Tara,
ich nehme mal an, Excel muss sein wegen Pivot-Tabellen und bunter Balken? Denn eigentlich klingt ja Kosten-Leistung-Rechnung durchaus nach einer Datenbank-Fähigen Anwendung. Und ausserdem hast du wahrscheinlich eine Menge Arbeit in dein Excel-Sheet gesteckt, und scheust Dich davor, den ganzen Kram in die Tonne zu treten....
Excel ist ja so ein bisserl das Schweizer Taschenmesser unter der Software: Kann alles, aber es gibt für fast jede Anwendung ein Programm, das es besser kann.
Vielleicht ist es ja einfacher, nachdem dir Excel die mathematischen Zusammenhänge erklärt hat, das ganze in Access zu lösen. (kreuztabellen-Abfrage etc...)
Das dauert am Anfang vielleicht etwas länger, erzeugt aber sicher das mächtigere Werkzeug. Preise, die sich ändern, im Leistungszeitraum ändert sich die Mwst etc.
Quick & Dirty geht natürlich: Eine Abfrage generieren, die ein eigentlich nicht benötigtes Feld enthält, damit zu jeder Entität eine Zeile generiert wird. Die nicht gefunden eigentlichen Daten erzeugen dann eben einen Nullwert. Wenn Du das Dummy-Feld richtig wählst, ist vielleicht auch noch eine Sortierung drin, die die Reihenfolge definiert festlegt, unabhängig von irgendwelchen Abhängigen werten und die immer gleich bleibt.
Exportassistent anwerfen, Abfrage speichern, Schema (unter erweitert...) abspeichern, dann steht dir der Export als Makro bzw. als DoCmd unter VBA zur Verfügung und kann als Ereignisprozedur eines Formulars aufgerufen werden.
Stefan
Antwort 4 von Tara10 vom 05.03.2020, 08:55 Options
Das alles in Access zu machen ist natürlich gar keine schlechte Idee, da die Daten bist auf ein paar starre Werte eh daher kommen.
Danke dir.
Allerdings ist hier jetzt ein anderes Problem aufgetreten, nämlich wenn ich eine Abfrage erstelle um alle Werte nach denen ich selektiere zu erhalten (besonders das Datum) muss ich ja um alle Tätigkeiten angezeigt zu bekommen und nicht doppelte dabei zu haben eine Unterabfrage generieren. Dies ist bei mir nun die Kreuzabfrage.
Will ich aber in der Hauptabfrage bei den Kriterien nach einer Variablen in einem Formular selektieren (Datumseingabe)
und das Formular wieder öfnen sagt das System, das es den Wert nicht anerkennt.
Kann man das umgehen?
Danke und Grüße
Antwort 5 von Regnsburga vom 05.03.2020, 22:20 Options
Hmmm...
Datumsformate und Access sind in der Tat gerne mal ein Problem. Versuche die Datumseingabe am besten im Universalformat: #yyyy/mm/dd#
Ansonsten ist frust vorprogrammiert. gilt zum beispiel auch, wenn man ein Kalendersteuerelement.value direkt in ein sql-Statement einbinden will. Andere Möglichkeit ist das benutzen der Datevalue funktion in VBA; zum beispiel:
lquery = "Select * from logfile where [Username] = '" & user & "' AND [logofftime] = datevalue ('01.01.01 12:00:00')"
Beachte die Klammerung, die Hochkommata. Nicht gerade komfortabel, was ? Die Werte für den Select müssen in Hochkommata stehen, egal ob sie direkt(wie das Datum am Ende) oder über einen Variable (wie user) eingebunden werden
Stefan