MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Word
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 10.01.2017, 18:24   #1
Metro_82
Neuer Benutzer
Neuer Benutzer
Standard Word 2013 - Auswahlmenü und Datenfüllung in Word

Hallo Zusammen,

ich habe jetzt vieles versucht aber leider nichts akzeptables hinbekommen.
Folgende Aufgabe versuche ich umzusetzen:

Ich möchte in ein Word Dokument eine Auswahlbox integrieren in der ich 5 bis 10 Namen auswählen kann. In Abhängigkeit des Names sollen Daten automatisch ausgefüllt werden.

Layout:

Auswahl: Name

Wiedergabe:
Name, Vorname
Telefon
Fax
Email

Vielen Dank für eure Hilfe und Gruß
Metro
Metro_82 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.01.2017, 22:14   #2
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Metro,

wenn du deine Mitarbeiterdaten in einer Excel-Tabelle pflegst, kannst du so vorgehen wie im angehängten Beispiel. Zum Testen beide Dateien in den gleichen Ordner kopieren.

Zur Orientierung: Die Prozedur Sub Document_New() liest die Excel-Tabelle in eine Array-Variable ein (diese ist im Modul.1 deklariert)und bestückt die Combobox mit den Namen. Die Prozedur Sub ContentControl_OnExit springt nach erfolgter Auswahl aus der Combobox an und füllt dir restlichen Felder.
Angehängte Dateien
Dateityp: dotm BriefMitCombobox.dotm (38,0 KB, 30x aufgerufen)
Dateityp: xlsx mitarbeiterliste.xlsx (10,8 KB, 26x aufgerufen)

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2017, 13:11   #3
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo nochmal,

ich vergaß zu erwähnen, dass du alternativ, wenn du deine Mitarbeiterdaten in Excel pflegst, das ganze Vorhaben vermittels Serienbrief vollkommen makrofrei und unaufwändig hinkriegen würdest. Du müsstest halt statt aus einer Combobox auszuwählen, über Sendungen > Empfängerliste bearbeiten jeweils einen Datensatz herfiltern.

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2017, 18:36   #4
Metro_82
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Gerhard,

vielen Dank für deine Hilfe. Ich habe heute schon etwas damit gespielt aber leider noch nicht in mein Vorhandenes Dokument übertragen können.
Ich möchte es noch etwas probieren um es zum Laufen zu bringen.
Falls möglich würde ich eventuell nochmal auf dich zukommen um deine Hilfe zu erfragen :-)

Schönen Abend
Guido
Metro_82 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 18.01.2017, 09:21   #5
Metro_82
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Ich habe nun folgendes beobachtet:

wenn ich die Formatvorlage öffne, wird ein DOK1.doxm erstellt, indem ich die Auswahl drop-down mit den richtigen Daten habe. Sobald ich diese Datei speicher, schließe und erneut öffne bekomme ich dann bei Auswahländerung die Fehlermeldung " Laufzeitfehler'13': Typen unverträglich.

Wenn ich in den Debug Modus gehe, springt er in die Zeile:
For i = 1 To ContentControl.DropdownListEntries.Count
If ContentControl.Range.Text = ContentControl.DropdownListEntries(i).Text Then
Exit For
End If
Next i

MsgBox Config(i, 1) & ": Telefon " & Config(i, 2)


With ActiveDocument
.SelectContentControlsByTag("Telefon").Item(1).Range.Text = Config(i, 2)
.SelectContentControlsByTag("Fax").Item(1).Range.Text = Config(i, 3)
.SelectContentControlsByTag("Email").Item(1).Range.Text = Config(i, 4)
End With

End Sub


Den Quelltext in ein neues Dokument einbinden funktioniert garnicht. Hierbei kommt sofort der Fehler '13'.
Vielleicht kann man mir hier nochmal helfen.

Danke und Gruß
Guido

Geändert von Metro_82 (18.01.2017 um 09:23 Uhr).
Metro_82 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 18.01.2017, 12:24   #6
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Guido,

der Fehler passiert, wenn du versuchst, ein schon gespeichertes Dokument erneut zu öffnen um eine andere Auswahl zu treffen. Das geht schief, weil meine Lösung als Ausgangsdokument ein neues Dokument auf Basis der Dokumentvorlage (also des Dokuments mit der Endung *.dotm erwartet.

Ich beschreibe deshalb noch einmal den korrekten Weg, den du gehen musst, damit mein Lösungsvorschlag funktioniert:

1. Ausgangslage
Du hast in einem Ordner deine Dokumentvorlage (*.dotm) mit den Makros aus meiner Beispiel-Vorlage liegen. Im gleichen Ordner liegt auch die Datenquelle (in meinem Beispiel eine Excel-Mappe.

2. Neues Dokument erstellen
Du doppelklickst nun die Dokumentvorlage. Damit erzeugst du ein Dokument namens "Document1". In diesem Dokument triffst du nun deine Auswahl. Danach speicherst du es als ganz normales Dokument (Endung *.docx). Dieses Dokument kannst du drucken, ändern, oder was auch immer du möchtest. ABER:

3. Neues Dokument mit geänderter Auswahl erstellen
Um ein weiteres Dokument mit einer anderen Auswahl zu erzeugen, bearbeitest du NIE NICHT ein schon gespeichertes Dokument, sondern führst Schritt 2 erneut aus.

Sollte damit das Proble nicht behoben sein, dann hab ich zwei Fragen an dich:

"wenn ich die Formatvorlage öffne..."
Damit meinst du vermutlich eine Dokumentvorlage. Und da es eine Vorlage ist, muss sie die Endung *.dotm haben. In meinem Beispiel die BriefMitCombobox.dotm. Wie heißt dein Ausgangsdokument genau?

"...wird eine DOK1.doxm erstellt"
Sowas gibts es erstens nicht. Meinst du DOK1.docx? Oder DOK1.docm? Und meinst du wirklich DOK1 und nicht Document1?

Noch eine Bemerkung zu der Variablen "Config": Ich würde eine Variable nie so nennen, denn das ist ein reservierter Begriff, wenn auch nicht in VBA, dann doch auf Windows-Ebene. Bringe deinen Computer nicht unnötig durcheinander!

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.02.2017, 13:44   #7
Metro_82
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Gerhard,

ich hatte heute die Gelegenheit mich wieder mit dem Thema zu beschäftigen.
Dank deiner Anleitung habe ich jetzt verstanden, wie das Prinzip funktioniert.
Ich habe mir jetzt auch eine Dokumentenvorlage erstellt und die Mitarbeiterauswahl implementiert. Fazit Funktioniert.

Jetzt eine weitere Frage:
Ist es möglich in die Dokumentenvorlage eine zweite Auswahl aus der selben Excel-Datei aber einem anderen Blatt zu implementieren?
Die Auswahl soll einen Nachnamen wiedergeben und in zwei weiteren Feldern die Anrede und den Vornamen.

Vielen Dank
Guido
Metro_82 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.02.2017, 14:47   #8
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Guido,

du meinst: ein zweites Dropdown mit Daten aus einem anderen Tabellenblatt zu füllen, z.B. Kundendaten? Ich denke schon, dass das möglich ist. Aus dem hohlen Bauch heraus, ohne es getestet zu haben:

Du müsstest in deiner Vorlage eine weitere Combobox einfügen, sowie weitere Inhaltssteuerelemente für die Namensbestandteile mit entsprechenden Tags.

Im Modul1 müsstest du eine weitere Public-Variable für die Aufnahme dieser Daten erstellen, z.B. Public Kundendaten.

In Thisdocument müsstest du den Bereich, der bisher für Tabelle 1 gilt, darunter nochmal für das andere Tabellenblatt wiederholen, z.B. so:
Code:

Set excelsheet = excelmappe.sheets("tabelle2")

    'letzte Zeile / letzte Spalte feststellen
    With excelsheet
        letztezeile = .Cells(.Rows.Count, 1).End(-4162).Row
        letztespalte = .Cells(1, .Columns.Count).End(-4159).Column
        kundendaten = .Range(.Cells(2, 1), .Cells(letztezeile, letztespalte))
     End With
    
    'Dropdown bestücken
    With ActiveDocument.SelectContentControlsByTag("Kundendaten").Item(1)
    .DropdownListEntries.Clear
        For i = 1 To UBound(kundendaten)
            .DropdownListEntries.Add kundendaten(i, 1)
        Next i
    End With
In ContentControlOnexit müsstest du auch einen Teil verdoppeln, nämlich so:
Code:

If ContentControl.Tag = "Mitarbeiter" Then 
 
'Hier der bisherige Code...

End If
    
If ContentControl.Tag = "Kundendaten" then

'... hier nocheinmal das gleiche, unter Verwendung der Tags für die Kundendaten.

End If
Falls du nicht zurecht kommst, erweitere die Musterdateien aus Beitrag 2 um das neue Tabellenblatt und die gewünschten ContentControls und lade sie hoch.

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 27.02.2017, 10:16   #9
Metro_82
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Gerhard,

nachdem ich alles eingefügt und angepasst habe, bekomme ich leider die Fehlermeldung "Das angeforderte Element ist nicht in der Sammlung vorhanden. - 5941"

Die Schreibweise des Reiters ist aber korrekt und der Aufbau ist wie in dem ersten Reiter. Der erste Datensatz wird ja auch gefüllt, nur der zweite nicht.

Ich hoffe die Dateien helfen hierbei weiter.

Danke schon mal
Guido
Angehängte Dateien
Dateityp: dotm BriefMitCombobox.dotm (38,4 KB, 6x aufgerufen)
Dateityp: xlsx Input.xlsx (12,1 KB, 9x aufgerufen)
Metro_82 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 27.02.2017, 11:07   #10
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Guido,

Die Fehlermeldung bezieht sich auf folgende Zeile in Sub document_New():
Code:

With ActiveDocument.SelectContentControlsByTag("varEngineering").Item(1)
zu Deutsch: Nimm das ContentControl mit dem Tag "varEngineering"... Das gibt es aber nicht in deinem Dokument. Das was gemeint ist, hat den Tag "Mitarbeiter". Analog weiter unten "varDemand". Das gibt es auch nicht. Der Tag dort heißt "Empfänger".

Ich würde übrigens einen Tag nicht genau so benennen wie eine Variable. Ich hab also folgende Änderungen vorgenommen:

In der Dokumentvorlage:
Den Tag des ersten Dropdowns ("Mitarbeiter") in "Engineering" umbenannt, den Tag des Dropdowns "Empfänger" in "Demand". Ferner hab ich diese drei Steuerelemente, die du vermutlich versehentlich ineinander verschachtelt hast, wieder auseinander gedröselt.

In den Makros:
Die beiden Zeilen wie folgt geändert:
Code:

With ActiveDocument.SelectContentControlsByTag("Engineering").Item(1) 
With ActiveDocument.SelectContentControlsByTag("Demand").Item(1)
Entsprechende Änderungen hab ich auch in der Sub Document_ContentControlOnExit() vorgenommen. Schau es dir an, es sollte selbsterklärend sein.

Bei mir geht es jetzt. Geändertes Word-Dokument im Anhang.
Angehängte Dateien
Dateityp: dotm BriefMitCombobox.dotm (45,5 KB, 19x aufgerufen)

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.02.2018, 16:45   #11
Peerli
Neuer Benutzer
Neuer Benutzer
Standard Word mit Excel Tabelle verknüpfen

Hallo Gerhard.

Ich bastle gerade an deinem Beispiel und komme leider nicht zu den erhofftem Ergebnis.
Ich wollte es an meine Vorstellungen anpassen.
Dabei habe ich ein Word Dokument (Teilnahme) mit einer Tabelle, bei der ich Daten aus einer Excel-Tabelle (Teilnehmer.xlsx) untereinander auswählen möchte. Es soll beim Öffnen von Teilnahme.docm die "Verküpfung" mit der Tabelle (ähnlich wie bei der Serienbrieffunktion) hergestellt werden. Nach dem Schließen soll nach dem Speichern gefragt werden. Hier sollte ein Vorschlag aus einem Datumtextfeld und den Teilnehmern (23.02.18_(Teilnehmer1+Teilnehmer2).docx vorgeben werden. Wenn weitere Teilnehmer hinzukommen, dann soll die Datei demnach erweitert werden.

Kannst du mir vielleicht helfen, was ich falsch mache?

Danke im Voraus.

LG
Peer
Angehängte Dateien
Dateityp: zip Teilnahmeliste.zip (114,8 KB, 2x aufgerufen)
Peerli ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 26.02.2018, 09:01   #12
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Peerli,

in den Beispielen, auf die du dich beziehst geht es in erster Linie darum, die Daten eines einzigen Teilnehmers aus der ersten Spalte einer Exceltabelle in ein Inhaltssteuerelement-Combobox einzulesen und die restlichen Daten desselben Teilnehmers auf andere Inhaltssteuerelemente zu verteilen.

Das ist was völlig anderes als das, was du vermutlich vorhast, nämlich Teilnehmerlisten für jeweils einen bestimmten Kurs zu erstellen. Dazu bräuchtest du aber in deiner Teilnehmertabelle eine entsprechende Info , z.B. als weitere Spalte, in der die jeweilige Kursnummer eingetragen wird. Weil diese fehlt, bin ich mir nicht sicher, ob ich mit meine Vermutung richtig liege.

Wenn ja, könnte man für jeden geplanten Kurs eine halbautomatische Teilnehmerliste mittels DataBase-Feld generieren. Für jeden neuen Kurs müsstest du dieses Teilnehmerlistendokument nur mehr geringfügig ändern. Dieser Vorgang wäre zunächst vollkommen makrofrei, könnte aber weiter automatisiert werden.

Dabei könnte ich dir helfen. Aber zunächst bitte ich dich, meine Vermutung zu bestätigen, zu korrigieren oder zu konkretisieren. Falls ich nämlich danebenliege, könnte es sein, dass dein Vorhaben in eine Auftragsarbeit unbestimmten Umfangs ausartet. Davon würde ich Abstand nehmen.

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 26.02.2018, 18:31   #13
Peerli
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Gerhard.
Vielen Dank, das du dich bemühst, mir helfen zu wollen.

Die Teilnehmer-xl-Liste wird für viele weitere Word-Dokumente benötigt. Deshalb hatte ich gedacht, sie als Grundlage zu nehmen, um z.B eine Kurs-Teilnehmerliste zu erstellen und in einem anderen Formular die und andere Daten (Pers.Nr.) aus der Teilnehmer-xl-Liste für eine sogenannte Teilnahme-Bescheinigung zu nutzen, wo nur jeder Teilnehmer eingetragen wird und am Ende diese Bescheinigung ausgedruckt wird. Hier dachte ich an die Serienbrieffunktion. Eleganter wäre natürlich eine VBA -Version.
Es werden jedes Jahr mehrmalig Kurse abgehalten für fast jeden Teilnehmer. Eine weitere Spalte in dem xl-Sheet würde ins Unermessliche gehen, oder nicht?
Und am Ende wären die Kurse "abgehakt" und sie sind nach dem Ausdruck nicht mehr relevant.
Die Kurse ändern sich auch jedes Jahr, auch die Kursnummern und alle weiteren Angaben.
Hier hoffe ich, dass ICH dich richtig verstanden habe.
Bleibt am Ende nur Access? Da habe ich leider noch weniger Ahnung.

LG
Peerli
Peerli ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 26.02.2018, 22:09   #14
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Peerli,

"Eine weitere Spalte in dem xl-Sheet würde ins Unermessliche gehen, oder nicht?"
Irgendwo musst du doch in deiner Datenquelle vermerken, wer welchen Kurs besuchen soll? Oder hast du das schon getan und ich hab es übersehen?

Das mit der zusätzlichen Spalte hab ich mir so gedacht: Angenonmmen, am 2.03. fängt der Kurs Nummer 33400 an. Also tippst du in eine Spalte Kursnummer hinter jedem Teilnehmer, der diesen Kurs besuchen soll, diese Nummer. Für den nächsten Kurs löscht du diese Einträge wieder und trägst bei den vorgesehenen Teilnehmern die aktuelle Nummer ein. Es würde also bei dieser einen zusätzlichen Spalte bleiben.

Aus der so ergänzten Teilnehmerliste und der Kursliste könnte man dann ein Mischdokument erstellen, in dem die Kursnummer und Kursbezeichnung per Makro aus der Kursliste geholt wird, und die Teilnehmer aus der Teilnehmerliste in ein DataBase-Feld eingelesen werden.

Damit du es dir besser vorstellen kannst, häng ich deine Dateien an, die ich zur Kurzform eingedampft habe. In der Excel-Teilnehmerliste sind zwei verschiedene Kursnummern eingetragen. Aus denen kannst du je eine Word-Teilnehmerliste machen, indem du die Wordvorlage doppelklickst und in der Userform eine der beiden Nummern eintippst. Die Word-Vorlage enthält bereits ein Database-Feld mit der letzten von mir getesteten Nummer. Dieses Feld wird mit den neuen Teilnehmern überschrieben.

Dass sich die Kursnummern und Kurse jedes Jahr ändern, wäre kein Problem, denn die Daten werden ja bei jedem Start der Word-Vorlage von neuem aus der Excel-Mappe ausgelesen. Nur die Struktur der Tabellen (Reihenfolge der Spalten) sollte gleich bleiben.

Steck zum Testen die beiden Dateien in denselben Ordner.

Wenn das in deine gewünschte Richtung geht, könnte man ja noch weiter dran überlegen. Letztlich kann dabei natürlich immer noch rauskommen, dass ihr lieber einen Datenbankmenschen beauftragt.
Angehängte Dateien
Dateityp: xlsx TN_MFkurz.xlsx (9,7 KB, 2x aufgerufen)
Dateityp: dotm Teilnahmeliste.dotm (42,3 KB, 3x aufgerufen)

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 27.02.2018, 14:39   #15
Peerli
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Gerhard.
Vielen Dank für deine Mühe.

für mich ist zwar interessant, wie du das gelöst hast, aber leider für mich nicht ganz praktikabel. Oder ich kann damit nicht umgehen.

Ich möchte gern das Word-Dokument als sogenanntes "Ausgangsformular" nutzen. Bei deiner Lösung wird gleich ein neues Dokument erstellt.
Wenn ich eine falsche Kurznummer eingebe, habe ich keine Möglichkeit, vorhandene Nummern auszuwählen oder bei dem Dokument zu ändern. Auch könnte ich nachträglich keine weiteren Teilnehmer hinzufügen oder zu ändern. Ich müsste das Dokument neu erstellen.

Die Tabellen "Teilnehmer" und "Kurse" müssen keine Beziehung haben.
Ich hatte vor, sie als "zwei Serienbriefe" einzufügen. Beide Tabellen sind nur als Referenz gedacht und von einander unabhängig.
Vielleicht wäre hier eine Vorlage nicht erstrebenswert, sondern ein normales Word-Dokument und ich speichere es am Ende als "neues" Dokument ab.

Anbei nochmal ein Dokument meiner Vorstellung.
Vielleicht kannst du damit etwas anfangen.

LG
Peer
Angehängte Dateien
Dateityp: docx Kursnummer_Schema.docx (113,0 KB, 1x aufgerufen)
Peerli ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:12 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.