Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1876to1880
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten Textfeldern zuordnen + Word-Export

Daten Textfeldern zuordnen + Word-Export
03.04.2022 18:11:46
Kalle
Hallo liebe Excel`perten,
im Zuge der Weiterentwicklung (m)eines fortgeschrittenen Tools zum Diagnostik-Management, bin ich wieder auf Hilfe und Hinweise angewiesen.
Der Zusammenhang: Es werden streng wissenschaftliche Tests und normfreie Tests durchgeführt und nach Durchlauf mit "e" makiert. Die Psychologen sollen in Spalte AD nun die Möglichkeit bekommen, die Auswertungstextvorlagen für jeden "e"-markierten Test des ausgewählten Klienten in ein Worddokument zu eportieren. Die Textbausteine für die Tests sind im Sheet "Textbausteine" namensgleich hinterlegt (hier als Platzhalter). Die Vorbereitung des Vorhabens ist weitgehend abgeschlossen, aber mir fehlt die Kenntnis, die Abfrage und den Export zu scripten ...
Hier die extrem gekürzte Projektdatei: https://www.herber.de/bbs/user/152208.xlsm
Bin auf Eure Anregungen und Ideen gespannt.
Viele Grüße
Kalle

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten Textfeldern zuordnen + Word-Export
03.04.2022 20:30:40
Alwin
Hallo Kalle,
anbei eine Beispielkombination Excel zu Word. Pfad der Worddatei musst du anpassen. Den Code kannst du deinen Erfordernissen in deiner Originaldatei anpassen.
Die Worddatei enthält ein Textfeld in der eine Textmarke (Bookmarks) enthalten ist, welche aus Excel erkannt und überschrieben wird.
https://www.herber.de/bbs/user/152210.zip
Gruß Uwe
AW: Daten Textfeldern zuordnen + Word-Export
03.04.2022 23:14:17
Kalle
Guten Abend Uwe,
Danke für den Ansatz, wenngleich ich mich meiner Frage damit eher "von hinten" nähere. Denn wie ermittle ich im Einzelfall je Zeile, welche Test "e"reledigt sind? Es sollen ja nur zutreffende Textbausteine in die Word-Vorlage fließen und nicht alle ... Muster: Wenn "e" in Spalte x und y und z, dann exportiere Textbausteine von x und y und z in die Word-Datei ...
Viele Grüße
Kalle
Anzeige
AW: Daten Textfeldern zuordnen + Word-Export
04.04.2022 08:50:24
Alwin
Hallo Kalle,
Es gibt 2 Wege dies zu erreichen.
1. Weg ordne die Textmodule entsprechend der Abfragefolge aus "Testbedarf BvB" dann kann man sehr einfach mit Zahlen in Abfrageschleifen arbeiten.
2. Ohne Umbau wäre der deutlich aufwendigere Weg mittels Methode .Find.
In for / next Schleifen kann mittels If/Else Abfrage der Wert e dann das zu übergebende Textmodul einer String Variable zugeordnet werden. In einer letztlichen Schleife können die gefüllten Variablen den Textmarken in den Textfeldern zugeordnet/übertragen werden.
Sinnvoll, weil weniger Code, wäre der 1. Weg.
Gruß Uwe
Anzeige
AW: Daten Textfeldern zuordnen + Word-Export
04.04.2022 08:56:38
Alwin
Wichtig:
Lade bitte eine Datei mit allen Textbausteinen entspechend der abgefagten Werte der Spalten J bis AB/(AC).
Gruß Uwe
AW: Daten Textfeldern zuordnen + Word-Export
04.04.2022 11:44:36
Kalle
Hallo Uwe,
Danke für Deine Ideen! Anbei die Datei mit allen Textbausteinen, die vertikal von oben nach unten der Leserichtung aus "Testbedarf BvB" folgen. Damit müsste die einfache Variante möglich sein. Mit .find habe ich mich heute Nacht nur mal kurz beschäftigt, bin aber nicht so richtig dahintergestiegen (v.a. bei der Rückgabe der Werte).
Übergeordnetes Ziel: Wir Psy wählen "psychometrisch", "normfrei" oder "alle" aus und die mit "e" markierten Tests fließen als entsprechende Textbausteine in ein erzeugtes Word-Dokument mit dem Dateinamen des Klienten.
https://www.herber.de/bbs/user/152217.xlsm
Viele Grüße
Kalle

Anzeige
AW: Daten Textfeldern zuordnen + Word-Export
04.04.2022 21:15:41
Alwin
Hallo Kalle,
anbei eine erste Lösung. Diese Tabelle kann man, falls ein corporate Design nötig ist auch nach Word übergeben. Da braucht es eigentlich nur eine oder keine Textmarke wo die Tabelle anfangen soll.
derzeitige Funktionsweise zwecks Weiterbau: klicke in Zeile, welche ausgegeben werden soll.
Schau mal, ob das schon ein brauchbarer Lösungsweg wäre.
https://www.herber.de/bbs/user/152253.xlsm
Gruß Uwe
AW: Daten Textfeldern zuordnen + Word-Export
04.04.2022 23:01:56
Kalle
Guten Abend Uwe,
eigentlich wollte ich gerade ins Bett ... aber nun kam noch Dein Lösungsansatz, den ich mir nicht entgehen lassen möchte. Zunächst sieht das schonmal alles sehr sehr gut aus! ... wenngleich mir ein paar DInge ins Auge fallen:
- im Word-Sheet werden Test-Titel und Test-Art jeweils um eine Zeile versetzt ausgegeben; liegt das am Counter? (habs noch nicht experimentiert ..)
- Du hast in meinen DropDown-Abfragen keine Befehle eingesetzt sondern nur ein kleines SelectionChange Event eingefügt ... es arbeitet korrekt, aber die Performance der ganzen Mappe ist beträchtlich gesunken; jede beliebige Eingabe erzeugt harte Delays was bei 18 Psychologen, die die Liste tgl. simultan nutzen mühsam wird ... (btw.: überwacht das SC-Event auch die DropDowns in Spalte A? ... was ja unnötig wäre ...)
- apropos 18: angenommen Kollege A exportiert und holt sich die Textfelder aus dem Sheet als Vorlage in seinen Gutachten, um die (verschlüsselten) Testergebnisse dazuzupacken und Kollegen B und C starten derweil den selben Vorgang ... wird dann der Export im Sheet von Kollege A durch den ClearContent Befehlt entfernt oder bleibt der für Kollege A sichtbar?
Wäre die .find Lösung evtl. ressourcenschonender? Eine Übergabe an Word scheint mir zudem auch geeigneter, da der exportierte Content dann bei allen separat verfügbar wird. Was meinst Du? Bin Dir für Dein Engagement wirklich außerordentlich dankbar. Auf jeden Fall die absolut richtige Richtung.
Viele Grüße
Kalle
Anzeige
AW: Daten Textfeldern zuordnen + Word-Export
05.04.2022 10:33:41
Alwin
Hallo Kalle,
anbei die Korrektur des Zeilenversatzes in der Ausgabe. Die Steuerung mittels Klicks auf Zeile ist nur Testhalber von mir gemacht worden.
Was die Multiuserverwendung angeht, ist Excel nicht sonderlich gut dafür geeignet. Das was ich dir geliefert habe ist, da es nicht über Array läuft, etwas träge.
Den Umbau über Array mache ich heute Abend, da ich nachher auf Arbeit muss und diese hat nichts mit Programmieren zu tun.

Sub TextMarker1()
Dim i As Long, lz As Long
Tabelle20.Range("A3:C22").ClearContents
With Tabelle1
For i = 10 To 29
lz = Tabelle20.Cells(Tabelle20.Rows.Count, 1).End(xlUp).Row + 1
If .Cells(mz, i) = "e" Then
Tabelle20.Cells(lz, 1) = Tabelle9.Cells(i - 6, 1)
Tabelle20.Cells(lz, 2) = Tabelle9.Cells(i - 6, 2)
Tabelle20.Cells(lz, 3) = Tabelle9.Cells(i - 6, 3)
End If
Next i
End With
End Sub
Gruß Uwe
Anzeige
AW: Daten Textfeldern zuordnen + Word-Export
05.04.2022 11:08:39
Alwin
schnellerer Weg über Array:

Sub TextMarker1()
Dim i As Long, lz As Long, arrAusgabe, j As Long, k As Long
Tabelle20.Range("A3:C22").ClearContents
With Tabelle1
For i = 10 To 29
lz = Tabelle20.Cells(Tabelle20.Rows.Count, 1).End(xlUp).Row + 1
If .Cells(mz, i) = "e" Then
k = k + 1
End If
Next i
ReDim arrAusgabe(k - 1, 2)
For i = 10 To 29
If .Cells(mz, i) = "e" Then
arrAusgabe(j, 0) = Tabelle9.Cells(i - 6, 1)
arrAusgabe(j, 1) = Tabelle9.Cells(i - 6, 2)
arrAusgabe(j, 2) = Tabelle9.Cells(i - 6, 3)
j = j + 1
End If
Next i
Tabelle20.Range("A3").Resize(UBound(arrAusgabe), UBound(arrAusgabe, 2) + 1) = arrAusgabe
End With
End Sub
Was du dann zwecks Auslösung der Prozedur verwenden willst, kannst du dir selbst schon was überlegen. Es muss nicht die Auswertung eines Ereignisses in der Tabelle sein, das war ja nur testhalber.
Gruß Uwe
Anzeige
AW: Daten Textfeldern zuordnen + Word-Export
05.04.2022 21:13:13
Kalle
Guten Abend Uwe,
endlich finde ich die Zeit, Dir die verdiente Rückmeldung zu geben. Deine letzten Zugaben haben das Projekt um Längen vorangebracht - wirklich sensationell, wie sich das alles langsam fügt. Ich habe mich mit Deinem Array-Code vertraut gemacht, die Events und Abfragen (die Schleifen differenzieren jetzt die Test-Arten) angepasst, den Text-Output etwas aufgehübscht. Die Mappen-Performanz profitiert erheblich von der B-Variante, so kann das auf jeden Fall bleiben. Das Multi-User Format ist leider ein Sachzwang, der nicht zu vermeiden ist ... leidlich, dass dadurch natürlich viele Ansätze im Keim ersticken bzw. in Sackgassen führen (intelligente Tabelle; dynamische Objekte etc.)
Hier mein Zwischenstand: https://www.herber.de/bbs/user/152277.xlsm
Meine nächste Frage:
Ich würde gerne das Feature mit Word-Datei Erzeugung ala "Klientenname.Testexport.doc" mal fahren in einem Subordner :\\Export\ ... gerne automatisch oder qua Button im Vorschau-Sheet. Ich prüfe nochmal Deinen ersten Post ...ginge das und wenn ja, was muss ich tun oder anpassen?
Viele Grüße
Kalle
Anzeige
AW: Daten Textfeldern zuordnen + Word-Export
05.04.2022 22:28:40
Alwin
Hallo Kalle,
es waren noch Fehler drin, die habe ich beseitigt. Die Dimension des arrAusgabe habe ich den Erfordernissen angepasst. Wie du die Übergabeprozedur "AusgabeInWord" einbindest überlasse ich dir.
Übergabepfad musst du anpassen.
https://www.herber.de/bbs/user/152278.zip
Gruß Uwe
AW: Daten Textfeldern zuordnen + Word-Export
05.04.2022 23:47:24
Kalle
Hallo zurück,
er meckert leider beim Ansprechen der Word-Sub "Laufzeitfehler 13 Typen unverträglich" ... Pfad ist angepasst. Apropos meckern - wenn Du erlaubst - eine kurze Nebenfrage zur Schreibweise von DATWERT / DATEVALUE in VBA (für Formel Filldown):

With ThisWorkbook.Worksheets("Testbedarf BvB")
'Range("AF5").Formula = "=SUMPRODUCT(--(H5>DATEVALUE("01 / 10 / 2021"))"
'Range("AF5:AF" & Cells(Rows.Count, "A").End(xlUp).Row).FillDown
End with
Da hängt er auch leider, doch was ist daran falsch? Muss ich erst DIM abc As Date definieren?
LG Kalle
Anzeige
AW: Daten Textfeldern zuordnen + Word-Export
06.04.2022 07:08:25
Alwin
Hallo Kalle,
Excel nach Word exportieren geht nicht. Was unter Beachtung der Zuweisungen an richtiger Stelle machbar ist, sind copy/paste Vorgänge von Texten und Elementen.
Packe bitte beide Dateien, wo der Fehler für mich auslesbar ist, in eine Zip Datei und lade Diese hoch. Mal sehen was ich / ob ich was machen kann, um über Umwege vielleicht was zu erreichen. Ich habe heute Vormittag etwas mehr Zeit als gedacht, da ein Schüler sich krankgemeldet hat. Die Kombi, welche ich dir geschickt habe arbeitet ohne Fehler.
Das ist mir eben beim genaueren Lesen deiner angepassten Prozeduren aufgefallen:
So wie du das Einlesen der Zeilen machst entstehen Leerzeilen. Folge sind Unsauberkeiten in der Ausgabe der Tabelle. Ändere es so in den anderen Prozeduren adäquat:

Sub TextMarker_psy()
Dim i As Long, lz As Long, j As Long, k As Long
Tabelle2.Range("A2:C30").ClearContents
With Tabelle1
For i = 12 To 14
lz = Tabelle2.Cells(Tabelle2.Rows.Count, 1).End(xlUp).Row + 1
If .Cells(mz, i) = "e" Then
k = k + 1
End If
Next i
For i = 17 To 22
lz = Tabelle2.Cells(Tabelle2.Rows.Count, 1).End(xlUp).Row + 1
If .Cells(mz, i) = "e" Then
k = k + 1
End If
Next i
For i = 24 To 29
lz = Tabelle2.Cells(Tabelle2.Rows.Count, 1).End(xlUp).Row + 1
If .Cells(mz, i) = "e" Then
k = k + 1
End If
Next i
ReDim arrAusgabe(k, 1)
For i = 12 To 14
If .Cells(mz, i) = "e" Then
arrAusgabe(j, 0) = Tabelle9.Cells(i - 6, 1)
arrAusgabe(j, 1) = Tabelle9.Cells(i - 6, 2)
j = j + 1
End If
Next i
For i = 17 To 22
If .Cells(mz, i) = "e" Then
arrAusgabe(j, 0) = Tabelle9.Cells(i - 6, 1)
arrAusgabe(j, 1) = Tabelle9.Cells(i - 6, 2)
j = j + 1
End If
Next i
For i = 24 To 29
If .Cells(mz, i) = "e" Then
arrAusgabe(j, 0) = Tabelle9.Cells(i - 6, 1)
arrAusgabe(j, 1) = Tabelle9.Cells(i - 6, 2)
j = j + 1
End If
Next i
Tabelle2.Range("A2").Resize(UBound(arrAusgabe) + 1, UBound(arrAusgabe, 2) + 1) = arrAusgabe
End With
End Sub
Gruß Uwe
Anzeige
AW: Daten Textfeldern zuordnen + Word-Export
06.04.2022 08:05:37
Kalle
Guten Morgen Uwe,
bevor ich gleich zur Arbeit aufbreche, kann ich Entwarnung geben. Der Word-"Export" klappt; ich weiß nicht, was ich gestern übersah (ich schiebe es mal auf die Uhrzeit). Momentan kopiert er die mit dem Array gefüllte Tabelle hinein, was schonmal exzellent ist. Nach Erzeugen der Word-Vorlage sollte sie als normales Dokument mit Klienten-Namen in einem Sub-Ordner gespeichert werden. Natürlich kann ich dazu auch einen neuen Thread aufmachen, weil die Ursprungsfrage ja eigentlich hinreichend geklärt ist.
Muss mir erstmal Gedanken machen, wie es Dank der Fortschritte jetzt weitergehen könnte.
Bis später und viele Grüße
Kalle
P.S. Hast Du eine Idee wegen der Nebenfrage zur Schreibweise des Formel Filldowns DATEVALUE?
AW: Daten Textfeldern zuordnen + Word-Export
06.04.2022 08:40:26
Alwin
du musst wenn " in Formeln enthalten sind diese doppeln. Ändere alles so:

With ThisWorkbook.Worksheets("Testbedarf BvB")
Range("AF5").FormulaLocal = "=SUMMENPRODUKT(--(H5>DATWERT(""01 / 10 / 2021"")))"
Range("AF5:AF" & Cells(Rows.Count, "A").End(xlUp).Row).FillDown
End with
Gruß Uwe
AW: Daten Textfeldern zuordnen + Word-Export
06.04.2022 11:10:52
Kalle
Hi Uwe,
anbei der aktuelle Stand: https://www.herber.de/bbs/user/152284.xlsm
Der Schreibfehler Hinweis war super ... auch der Filldown und Startsortierung läuft jetzt (ist wichtig wenn Kollegen ganze Zeilen entfernen/löschen und die Bezüge stimmig bleiben, da die Formatierung als dynamische Tabelle im Multiuse bekanntermaßen nicht geht).
Der "Export" läuft klasse. Allerdings entstehen beim "NachWordKopieren" der Tabelle insgesamt 110 Seiten, was Performance kostet und unnötig ist. Aus dem Code erschließt sich mir nicht, wo man die Zeilen begrenzen oder den Ausgabe-Bezug festsetzen könnte. Ich brauche maximal 20 - 30 Zeilen (je nach CI-Design am Ende).
LG Kalle
AW: Daten Textfeldern zuordnen + Word-Export
06.04.2022 11:41:27
Alwin
ändere so:

Sub AusgabeInWord()
Dim Pfad As String, WdApp As Object, wdDok As Object
Pfad = "\\fs02\user$\jaeger\Eigene Dateien\__Excel_DEV\Testexport.docx"
Tabelle2.Range("A1:B" & UBound(arrAusgabe) + 1).Copy
Set WdApp = CreateObject("Word.Application")
Set wdDok = WdApp.Documents.Open(Filename:=Pfad, ReadOnly:=False)
WdApp.Visible = True
WdApp.Selection.PasteExcelTable False, False, False
Set wdDok = Nothing
Set WdApp = Nothing
End Sub
Range("A1:B" & UBound(arrAusgabe) + 1) definiert die Anzahl der Tabellenzeilen, welche in Word eingefügt werden. bei ausgelesener Zeile6 je nach Voreinstellungen in Word 2 bis 3 Seiten.
Gruß Uwe
AW: Daten Textfeldern zuordnen + Word-Export
06.04.2022 12:19:12
Kalle
... läuft auf Anhieb! Spitze. Jetzt zum Thema Datei-Output mit Namen des betreffenden Klienten. Diese soll bei mehrfacher Erzeugung jeweils überschrieben werden, damit immer nur 1 Fassung mit dem Namen vorliegt (die Tests kann man ja jederzeit im Reha-Prozess neu rollen, daher ist eine Verlaufsversionierung hier nicht nötig).
Sobald das steht, kann das Projekt (nach CI-Zeugs) live gehen. Bin auf Deine/Eure Ideen gespannt. Macht wieder so eine Laune hier und man lernt stets dazu ...
Viele Grüße
Kalle
AW: Daten Textfeldern zuordnen + Word-Export
06.04.2022 12:35:49
Alwin
Hallo Kalle,
den Klienten Namen kann man auf 2 Wegen nach Word bekommen.
1. Weg man nutzt die Serienbrief Funktion in Word und holt sich die Klienten Liste aus Excel.
2. Weg man übergibt unsichtbar (kleine Schrift Weiß) an eine Textmarke im Worddokumentenkopf.
In Word legt man ein Makro an, welches dann den Speicherstring zum Speichern der Worddatei ausführt.
Das Makro aus der Excelprozedur aufzurufen ist simpel. WdApp.Run "MakroZumSpeichernOderSo"
Gruß Uwe
AW: Daten Textfeldern zuordnen + Word-Export
06.04.2022 22:31:02
Kalle
Hi Uwe,
ich probiere Deine Ansätze in Kürze aus und melde mich dazu in einem neuen Thread, wenn es Fragen/Probleme geben sollte (wegen Thema VBA Dateimanagement). Als ich mit Neopa, Chris, Boris, Rainer und Sigi Anfang des Jahres viel zu tun hatte - wegen anderer beruflicher Zwecke - habe ich erstmal so richtig die hiesige Forenphilosphie verstanden. Ok, die Usability ist etwas eckig, aber der Content ist hochkarätig.
Viele Grüße und bis bald
Kalle

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige