Excel Liste mit vba auslesen und drucken
Hallo miteinander,
Folgendes Problem:
Ich habe eine Mitarbeiterliste mit Unterweisungsplan. Jetzt möchte ich einzelne MA markieren evtl. durch ein X in einer Zelle und durch drücken auf einen Button sollen die Namen des MA nacheinander in ein Formular für Arbeitssicherheit oder Brandschutz an einer bestimmten Stelle eingefügt werden und sofort ausgedruckt werden. Also MA Max Muster wird mit einem X versehen und durch drücken auf den Button wird der Name evtl. noch Abteilung übernommen, im Formular an der entsprechenden Stelle eingetragen und sofort gedruckt. Danach der nächste MA usw. bis alle markierten ausgedruckt sind.
Habe bisher in Word einen Serienbrief erstellt und da die MA festgelegt. Aber es müsste doch auch in Excel möglich sein mittels vba dieses hinzubekommen.
Kann mir da jemand helfen….???
Herzlichen Dank
Folgendes Problem:
Ich habe eine Mitarbeiterliste mit Unterweisungsplan. Jetzt möchte ich einzelne MA markieren evtl. durch ein X in einer Zelle und durch drücken auf einen Button sollen die Namen des MA nacheinander in ein Formular für Arbeitssicherheit oder Brandschutz an einer bestimmten Stelle eingefügt werden und sofort ausgedruckt werden. Also MA Max Muster wird mit einem X versehen und durch drücken auf den Button wird der Name evtl. noch Abteilung übernommen, im Formular an der entsprechenden Stelle eingetragen und sofort gedruckt. Danach der nächste MA usw. bis alle markierten ausgedruckt sind.
Habe bisher in Word einen Serienbrief erstellt und da die MA festgelegt. Aber es müsste doch auch in Excel möglich sein mittels vba dieses hinzubekommen.
Kann mir da jemand helfen….???
Herzlichen Dank
Please also mark the comments that contributed to the solution of the article
Content-Key: 264305
Url: https://administrator.de/contentid/264305
Printed on: April 26, 2024 at 14:04 o'clock
27 Comments
Latest comment
Moin,
klar geht das alles, aber MS Access ist für solche Sachen (Reports) eigentlich wesentlich besser geeignet ...
Gruß jodel32
klar geht das alles, aber MS Access ist für solche Sachen (Reports) eigentlich wesentlich besser geeignet ...
Gruß jodel32
Hallo speedy132, Willkommen auf Administrator.de!
Hier ein einfaches Beispiel an dem du dir die Vorgehensweise ab schauen kannst: create_word_reports_from_excel_264305.zip (Das Beispiel besteht aus einer Excel-Datei und einer Word-Vorlage, beide Dateien in ein Verzeichnis entpacken und die Excel-Datei öffnen)
Im Beispiel wählst du die Mitarbeiter aus, und klickst dann auf einen Button um daraus die Reports in Word zu drucken. Dazu wird der Status der Zeile durch das "X" ausgewertet, dann ein Word Dokument anhand eines Vorlagendokuments erstellt, darin die Textmarken durch die Daten aus Excel ersetzt und zum Schluss ausgedruckt.
Das ganze erfolgt unsichtbar für den User, bei Bedarf z.B. für Debugzwecke kannst du dies sichtbar schalten (siehe Code)
Weitere Kommentare sind im Code hinterlegt.
Wird zusätzliche Hilfe benötigt, kann dies nach Absprache via PM gegen eine Aufwandsentschädigung erfolgen.
Viel Erfolg.
Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Hier ein einfaches Beispiel an dem du dir die Vorgehensweise ab schauen kannst: create_word_reports_from_excel_264305.zip (Das Beispiel besteht aus einer Excel-Datei und einer Word-Vorlage, beide Dateien in ein Verzeichnis entpacken und die Excel-Datei öffnen)
Im Beispiel wählst du die Mitarbeiter aus, und klickst dann auf einen Button um daraus die Reports in Word zu drucken. Dazu wird der Status der Zeile durch das "X" ausgewertet, dann ein Word Dokument anhand eines Vorlagendokuments erstellt, darin die Textmarken durch die Daten aus Excel ersetzt und zum Schluss ausgedruckt.
Das ganze erfolgt unsichtbar für den User, bei Bedarf z.B. für Debugzwecke kannst du dies sichtbar schalten (siehe Code)
Weitere Kommentare sind im Code hinterlegt.
Wird zusätzliche Hilfe benötigt, kann dies nach Absprache via PM gegen eine Aufwandsentschädigung erfolgen.
Viel Erfolg.
Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Bei diesem Beispiel werden die Textmarken nach dem Befüllen entfernt, deswegen das Verhalten. Es gibt ja zwei Arten von Textmarken (Position und Range). Entweder du setzt das Bookmark erneut wie z.B. hiermit
oder du nutzt stattdessen Formularfelder, welche sich mit der .Formfields() Collection ansprechen lassen. Diese lassen sich ebenfalls über Feldfunktionen verknüpfen.
Grüße Uwe
Dim rngBM As Range, strBookmark As String
'Name des Bookmarks
strBookmark = "NamederTextmarke"
'Range des Bookmarks speichern
Set rngBM = Bookmarks(strBookmark).Range
'Text des Bookmarks setzen
rngBM.Text = "BlaBla"
'Bookmark neu mit gleichem Namen erstellen
Bookmarks.Add strBookmark, rngBM
FormFields("NameDesFeldes").Result = "Daten"
Zitat von @speedy132:
allerdings bekomme ich das damit überhaupt nicht hin. Weiss nicht wie ich das in dem bestehenden Code einbauen soll.
Funktioniert nicht.....
ok, na dann mal wieder zu Fuß allerdings bekomme ich das damit überhaupt nicht hin. Weiss nicht wie ich das in dem bestehenden Code einbauen soll.
Funktioniert nicht.....
Hier der Ausschnitt aus dem Code ... / Zeilen 8 bis 11
'.....
'...
For Each cell In rngSelection
If LCase(cell.Value) = "x" Then
'Neues Dokument von der Vorlage erstellen
Set objDoc = objWord.Documents.Add(REPORT_TEMPLATE)
'Textmarken durch Daten der Spalten in Excel ersetzen
strBMName = "Name"
Set rngBM = objDoc.Bookmarks(strBMName).Range
rngBM.Text = .Range("A" & cell.Row).Value
objDoc.Bookmarks.Add strBMName, rngBM
' ... usw für die anderen Bookmarks
'Dokument drucken
objDoc.PrintOut
'Dokument nicht speichern und schließen
objDoc.Close False
End If
Next
'....
'...
Zitat von @speedy132:
also habe entsprechend daas ganze 4 mal in den code eingebaut für die 4 Textmarken.
Diese werden jetzt auch gefüllt, allerdings werden die Textmarken jetzt beim 2.ten Aufruf in Word doppelt beschrieben
Ich weiß hier ja gar nicht was du genau machen willst bzw. vorhast. Und warum du ein Dokument mehrfach öffnest. In meinem Codebeispiel werden keine Dokumente gespeichert sondern nur zum Drucken befüllt und dann verworfen !!also habe entsprechend daas ganze 4 mal in den code eingebaut für die 4 Textmarken.
Diese werden jetzt auch gefüllt, allerdings werden die Textmarken jetzt beim 2.ten Aufruf in Word doppelt beschrieben
Du lieferst einfach zu wenig Infos was du wie angepasst hast.
Für mehr Support siehe den Hinweis in meinem ersten Post.
Grüße Uwe
In Word habe ich Textmarken erstellt und diese in den Tabellenzellen mit Hilfe des Querverweise zugeordnet.
bis auf das jetzt bei den Textmarken die Daten dann 2x bzw 3x drin stehen
D.h du möchtest jetzt alle Mitarbeiter in ein einzelnes Dokument einfügen ?? Dann muss das nämlich anders aufgebaut werden und kann so in der Art nicht funktionieren.bis auf das jetzt bei den Textmarken die Daten dann 2x bzw 3x drin stehen
Für diesen Fall hier noch ein Beispiel: create_report_all_in_one_template_264305.zip
In deinem Eingangspost war ich davon ausgegangen das für jeden Mitarbeiter ein extra Dokument erstellt wird.
Zitat von @speedy132:
im Formular an der entsprechenden Stelle eingetragen und sofort gedruckt. Danach der nächste MA usw. bis alle markierten ausgedruckt sind.
im Formular an der entsprechenden Stelle eingetragen und sofort gedruckt. Danach der nächste MA usw. bis alle markierten ausgedruckt sind.
Und normalerweise werden Textmarken eine Position zugewiesen und nicht nur einfach erstellt, damit ließe sich das Verhalten erklären, wenn du alle an der selben stelle erstellt hast... Sieh dir einfach mein Demo-Dokument mal an und lass dir unter Einfügen > Texmarken die Markenpositionen anzeigen.
OK das ist mal eine vernünftige Erklärung, warum nicht gleich so
Ohne viel Worte zu verlieren ,sieh dir dazu diese Demo an ...(Druckfunktion etc. habe ich zur Demo mal auskommentiert, so dass du dir die Reports ansehen kannst)
excel_create_word_report_with_links_264305.zip
Grüße Uwe
Ohne viel Worte zu verlieren ,sieh dir dazu diese Demo an ...(Druckfunktion etc. habe ich zur Demo mal auskommentiert, so dass du dir die Reports ansehen kannst)
excel_create_word_report_with_links_264305.zip
Grüße Uwe
Zitat von @speedy132:
Wie geht es, dass beim drücken der linken Maustaste in dieser Spalte ein x automatisch erscheint???
indem du folgenden Code in den Codeabschnitt des Arbeitsblattes einfügst (Rechtsklick auf den Tab des Arbeitsblattes > Code anzeigen). Der Range bei dem das passieren soll, ist natürlich in Zeile 2 an deine Spalte anzupassen ...Wie geht es, dass beim drücken der linken Maustaste in dieser Spalte ein x automatisch erscheint???
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Range("D3:D10000"), Target) Is Nothing Then
If Target.Cells(1).Value = "" Then
Target.Cells(1).Value = "X"
ElseIf Target.Cells(1).Value = "X" Then
Target.Cells(1).Value = ""
End If
End If
End Sub
im letzten Post geändert müssen das hier ja nicht bis zum Exzess mit Code zuschütten ....
Eigentlich gehört das dann auch in einen neuen Thread...
Kürzer kannst du es dir machen, indem du die wiederkehrenden Elemente entweder in eine zwischenzelle oder einen Namen mit den Formeln definierst.
=TAG(A1-WOCHENTAG(A1;3))&"."&MONAT(A1-WOCHENTAG(A1;3))&"."&JAHR(A1-WOCHENTAG(A1;3))&" - "& TAG(A1-WOCHENTAG(A1;3)+4)&"."&MONAT(A1-WOCHENTAG(A1;3)+4)&"."&JAHR(A1-WOCHENTAG(A1;3)+4)