Ich muss aus Access jeweils genau einen gefundenen Datensatz in eine Excel-Datei kopieren und zwar in die erste freie Zeile, also anhängen.
Den gefundenen Datensatz in Access markiere ich mit [F8], kopiere ihn mit [STRG]+[c] um schliesslich mit [ALT]+[TAB] zu Excel zu wechseln, um ihn dort mit [STRG]+[v] einzufügen.
Wie kann ich diesen Vorgang automatisieren?
Leider gibt es in Access keinen Makroaufzeichner. Idealerweise stelle ich mir vor, in Access nur eine Tastenkombination für die geschilderte Prozedur auszuüben, ohne Access dabei zu verlassen, dass also im Hintergrund in die Excel-Datei angehangen wird.
Vielleicht habe ich sie nicht richtig verstanden, aber woher soll die zu Verknüpfende Excel-Tabelle wissen, welchen Datensatz ich aus der Abfrage auswählen werde, bzw. ausgewählt habe?
Wenn die Abfrage nur einen Datensatz enthalten würde, könnte man sich mit Deinem Vorschlag sicher der Lösung nähern.
Schönen Gruss,
Hans [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
die Exceltabelle muss es nicht „wissen“, die „Arbeit“ wird ja von der Anfügeabfrage erledigt.
Wenn die Abfrage nur einen Datensatz enthalten würde, könnte
man sich mit Deinem Vorschlag sicher der Lösung nähern.
du hast ein Tabelle mit allen Datensätzen
du erstellst eine Abfrage (als Filter) mit dem gewählten Datensatz, der dann von der Abfrage in die eingebundene Exceltabelle übertragen wird.
Vielleicht könnte man das noch anders lösen, wenn du mal genauer beschreiben könntest, WAS du WARUM so machst. Bitte immer mit Angabe der Access-Version.
ich habe eine gute Nachricht für dich: du benötigst kein Excel, keine Exceltabellen etc.!
Als Datenbasis kannst du in Word auch eine Tabelle und/oder Abfrage in Access angeben
Frage daher: ist diese Serienbriefauswahl immer einmalig, oder soll die Auswahl für später (Ewigkeit) gespeichert bleiben?
Für Einmalig wäre ein zusätzliches Feld mit dem Namen SerBrief und Feldtyp JA/NEIN sinnvoll.
Für „Ewig“ wäre ein zusätzliches Feld mit dem Namen SerBrief und Feldtyp Text (255 Zeichen) oder MEMO sinnvoll. Dort könnte man dann Serienbriefkürzel für Aktionen hinterlegen, die dann später über eine Abfrage (die dann als Datenquelle für den SB dient) ausgewertet werden.
Man kann dann dort ein Kürzel wie „WK“ (bedeutet bei mir Weihnachtskarte) eintragen, getrennt z.B. durch ein Semikolon ( dann „GK“ (Geburtstagskarte) usw…
Im Grunde genau so wie die Kategorien in Outlook. Dessen Kontakte man übrigens auch als Datenquelle für Serienbriefe nutzen kann
die gute Nachricht klingt wirklich gut auch wenn ich sie noch nicht umgesetzt habe.
Die Serienbriefauswahl erfolgt immer einmalig, da sie immer nach anderen Kriterien erfolgt.
Jedoch besteht noch immer ein Problem, welches ich als das grundlegendste sehe, das wie folgt aussieht:
Suche ich beispielsweise die Person Meyer aus X, und finde ihn nicht, obwohl sie existieren müsste, weiss ich, dass ich eine falsche Information für die Suchabfrage erhalten habe.
Demnach suche ich die Person „M*“ aus X.
Angezeigt werden dann alle Mayers, Maiers, Meiers und sonstige Meiereien. Aus diesen Datensätzen treffe ich folglich eine Sichtauswahl. Ich müsste also den Datensatz markieren und genau eben nur diesen markierten Datensatz dem Sereinbrief zufügen.
Genau da liegt der Hund begraben.
Wie kann ich diesen markierten Datensatz der Serienbriefauswahl hinzufügen?
Grüsse,
Hans
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Wie kann ich diesen markierten Datensatz
der Serienbriefauswahl hinzufügen?
wie ich dir schon geschrieben habe:
Für Einmalig wäre ein zusätzliches Feld mit dem Namen SerBrief
und Feldtyp JA/NEIN sinnvoll.
erstelle in deiner Adressen-Tabelle ein zusätzliches Feld, dass du einfach als Auswahl für den Serienbrief nutzt.
Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)
BTW: könntest du bitte das Fullquote lassen, oder immer oben antworten? Es ist lästig, immer nach unten scrollen zu müssen, um deine Antwort zu lesen.
Außerdem weiß ich, was ich geschrieben habe
Danke!
das Feld habe ich wie beschrieben in die Tabelle eingefügt. Ebenso habe ich es mit ins Abfrageformular eingefügt, die Abfrage dahingehend erweitert und die Datenquelle in den Seriendruckdokumenten entsprechend aktualisiert.
Klappt wunderbar für die verschiedenen Seriendrucke.
Nur bleibt in dem neuen Ja/Nein Feld, für jeden Datensatz den ich markiert habe, „Ja“ stehen. Vielleicht habe ich ja was falsch gemacht oder vergessen einzufügen?
So aber muss ich leider mit dem Formular noch mal gesondert nach allen Datensätzen suchen, die mit „Wahr“ (Ja) von mir markiert wurden und dann alle Häkchen einzeln manuell löschen, da sie ja für den nächsten Seriendruck nicht mehr benötigt werden.
Zudem muss ich in der Abfrage, an dem das Formular gebunden ist, jedes mal in das Feld für den Serienbrief das Kriterium „wahr“ eintragen, nach dem ich alle Datensätze markiert habe und anschliessend für die neue Suche, aus der ein neuer Sereindruck gestartet werden soll, wieder entfernen.
Da es sich um über 5000 Datensätze mit mindestens 50 verschiedenen Einträgen handelt, wahr meine Lösung zwar „zu Fuss“, wie Du das formuliert hast aber in Punkto Datensicherheit finde ich Deine Lösung nicht so gut. Denn das manuelle „Häkchen“ entfernen birgt das Risiko, das ein Datensatz nicht mehr gefunden wird.
Aber vielleicht gibt es dafür ja auch eine Lösung?
Nur bleibt in dem neuen Ja/Nein Feld, für jeden Datensatz den
ich markiert habe, „Ja“ stehen. Vielleicht habe ich ja was
falsch gemacht oder vergessen einzufügen?
ja, logisch…einen Button/Taste die die Häkchen wieder zurück setzt. Kann man auch beim Ereignis „Formular laden“ erledigen lassen:
DoCMD.RunSQL „UPDATE MeineTabelle SET MeineTabelle.MEIN_JN_FELD = False;“
Zudem muss ich in der Abfrage, an dem das Formular gebunden
ist, jedes mal in das Feld für den Serienbrief das Kriterium
„wahr“ eintragen, nach dem ich alle Datensätze markiert habe
wenn du das Kontrollkästchen [] statt eines Textfeldes verwendest, musst du nur einen Klick [X] machen
erstelle dir eine Taste auf deinem Formular (Ereignis = beim Klick):
UPDATE MeineTabelle SET MeineTabelle.MEIN_JN_FELD = True
WHERE ([Formulare]![MeinFormular].[Filter]);
damit werden alle Häkchen gesetzt, je nach dem, was du gefiltert hast.
Der Formularkopf bzw. der Formularfuß sind gute Plätze dafür
aber in Punkto
Datensicherheit finde ich Deine Lösung nicht so gut. Denn das
manuelle „Häkchen“ entfernen birgt das Risiko, das ein
Datensatz nicht mehr gefunden wird.
Aber vielleicht gibt es dafür ja auch eine Lösung?
siehe oben…
mit zwei Zeilen Code und zwei Tasten ist dein Problem gelöst
sorry, ich dachte du kannst VBA und weißt, wie man den
VBA-Editor aufruft. Das ist VBA Code und KEIN Makro.
Ne, bin blutiger Anfänger, aber der Einäugige unter den Blinden und „EDV zu Fuss“ huldigt man hier als Wunder des Fortschritts. Denn diese „DB“ an der ich arbeite ist eigentlich nur eine riesige Tabelle die alle mit [STRG]+[f] durchsuchen und zu der keiner Schreibrechte besitzt.
Zurück zum Thema
Also das mit den Häkchen wieder löschen klappt prima, so wie ich es mir vorgestellt habe.
Nur das mit dem Button funktioniert nicht. Ich habe in die Ereignisprozedur, so wie Du es zuvor beschrieben hast,
UPDATE Mitglieder SET Mitglieder.SerBrief = True
WHERE ([Formulare]![abfr_deckblatt_seriendruck].[Filter]);
geschrieben.
Darauf erscheint eine Fehlermeldung mit Syntaxfehler.