| |
|
|
- Seite 1 - |
|
CB | Hallo,
noch eine Frage an die Spezialisten: Gibt es eine Möglichkeit, Winword aus einem Profan-Programm heraus mit Übergabe eines Parameters zu starten?
Folgender Ablauf: Mein Programm sammelt eine Menge Daten über einen Patienten und legt diese in einer INI-Datei ab, die mit einer Nummer (vom Ordinationsprogramm vorgegeben) benannt wird. Die Datei heißt also zB 1234.ini. Das wäre auch gleichzeitig der einzige Parameter, den ich Word - und damit einem AutoNew-Makro übergeben möchte. Dieser liest dann die INI aus und setzt automatisch die ausgelesenen Werte in die entsprechenden Felder ein. Geht das überhaupt in dieser Form oder muß ich da einen Umweg wählen? Word kann ich mittels Switches dazu veranlassen, ein neues Dokument auf Basis einer bestimmten Vorlage zu öffnen (/tVORLAGE.DOT) und einen bestimmten Makro auszuführen (/mMAKRONAME), bloß über zusätzliche Startparameter konnte ich weder in den diversen Word-Hilfen noch im Internet was Brauchbares finden.
Christian |
|
|
| |
|
|
| |
|
- Seite 5 - |
|
|
CB | Hi, Normann! Kein Problem! Mit (WordBasic)Makros habe ich halt begonnen zu programmieren. Als das ganze Programm fertig war, waren das rund 80 Makros mit insgesamt knapp 400 DinA4-Seiten Code...
Ich habe in diesem thread etwas weiter vorne so ein Mustergutachten zum Download bereitgestellt. In diesem ist kein einziger Buchstabe geschrieben worden, alles automatisch ausgefüllt bzw. durch Anklicken eingetragen (keine 5 Minuten Arbeit!) Jetzt bin ich gerade dabei, das zu modernisieren. Ich wüßte nur (noch) nicht, wie ich ein derart komplexes Dokument anders als mit Word gestalten könnte, das sich automatisch selbst ausfüllt mitsamt allen Grafiken in den Tabellen bis hin zur automatischen Rechtschreibprüfung usw. Da habe ich sowieso ein funktionierendes Interface gebraucht. Ich weiß, daß das ein ziemlich kompliziertes Gebilde ist, das ich liebend gerne anders realisieren würde - mit OLE wärs sicher toll, bloß bin ich mit meiner Programmiererei noch nicht so weit, da wirklich mitreden zu können. Für mich ist aber die Möglichkeit, alle Patientendaten mit einem Profan-Programm erfassen, in einer gemeinsam mit Word verwendbaren INI zu speichern und dann Word veranlassen zu können, alles weitere automatisch zu machen, ein Riesenschritt.
Habe mir aber Deine Datei schon heruntergeladen und werde mir das natürlich in Ruhe ansehen. Danke jedenfalls für Deine Rückmeldung!
Mir ist in der Zwischenzeit noch etwas zu Word eingefallen: Da gibt es noch etwas sehr Praktisches: Dokumentvariable! Du kannst in Word auf einem leeren (!) Blatt Papier jede Menge Information unsichtbar speichern! Bloß mit dem Ausdrucken hättest Du ein Problem...
In meinem Programm habe ich das damals so gelöst, ohne INI o.ä. Jeder, der mein Programm verwendet hat, konnte auf sämtliche im Dokument gespeicherten Daten zugreifen, also auch zuhause oder am Laptop damit weiterarbeiten.
Gruß, Christian |
|
|
| |
|
|
|
CB | Hallo Normann!
Sagenhaft, ich bin ehrlich hin- und hergerissen, hätt ich nicht geglaubt, wie einfach das gehen kann, wenn man weiß, wie. Aus einem anderen thread (OLE-Strings) entnehme ich, daß Du Dich schon länger damit auseinandersetzt.
Um diese Methode in meinem Projekt verwenden zu können, wären noch ein paar Punkte zu klären: 1. Ich muß auch Grafiken in ein Word-Dokument an eine vordefinierte Stelle setzen können. Diese Grafiken sind nicht groß, lediglich Cursor - siehe Mustergutachten (die Pfeile in der Tabelle). Diese werden aus einer dll geladen und entsprechend den ausgelesenen Lungenfunktions-Parametern in meinem Profan-Programm angezeigt. (Wie) kann ich die dann dem Word-Dokument übergeben?
2. In meiner Vorlage sind eine Menge Felder definiert, darunter etliche Choiceboxen. Der Grundgedanke dabei: dem Anwender sollte auch beim Durchlesen des fertigen Gutachtens (da ist man nicht mehr so im Streß wie während des Patientenbetriebs) noch die Möglichkeit gegeben werden, ohne viel Zeitaufwand noch evtl. Korrekturen vornehemen zu können. Hast Du vielleicht damit auch irgendwelche Erfahrungswerte? Geht das überhaupt (ohne daß der ursprüngliche Inhalt der Choicebox zerstört wird?) oder: Der übergebene Text weicht von den vorgegebenen ab, wird dieser als zusätzliche Auswahl eingebunden?
3. Wenn ich das Ganze richtig verstanden habe, wird das Dokument genauso binär geschrieben wie eine gewöhnliche Textdatei. Kann ich damit auch längere Texte übergeben oder gibt es da eine Größenbeschränkung? (Theoretisch könnte es ja vorkommen, daß alleine die Anamnese eines Patienten mehrere DinA4-Seiten umfasst o.ä.) Muß ich dann den größtmöglich denkbaren Platzbedarf reservieren? Dann würde so eine Vorlage vielleicht 27 Seiten haben mit einer Menge leerer Seiten...und wenn dann die Anamnese mal nur 3 Zeilen benötigt...? Müßte ich den Rest erst mit Leerzeichen füllen und anschließend in Word wieder entfernen - oder?
Eine Frage konnte ich in der Zwischenzeit mehr oder weniger selbst beantworten: (Formular-)Felder können auf diese Weise leider nicht ausgefüllt werden - oder muß man das Verfahren anders ansetzen?
Ich weiß, das sind eine Menge Fragen, ich bin aber für jede Hilfe dankbar!
Gruß, Christian |
|
|
| |
|
|
|
Normann Strübli | Uff, ja äh...
kann Dir leider erst nachher ausführlich Antworten muß noch mal weg. |
|
|
| |
|
|
|
CB | Entschuldige - ja, ich weiß...!!
Aber das ist ein für mich wirklich sehr wichtiges Thema.... Ich muß das nur prinzipiell wissen, bevor ich in den derzeit vorhandenen 11.000 Zeilen alles umstelle oder nach einigen Wochen des Experimentierens draufkomme, daß es so ja doch nicht geht! Aber laß Dir mit der Antwort Zeit, 1. habe ich noch genügend andere Module zu ändern/entwickeln und 2. wir sind hier ja nur an der Arbeit und nicht auf der Flucht...
Wie gesagt, ich bin aber für jeden Hinweis dankbar!
Gruß, Christian |
|
|
| |
|
|
|
Normann Strübli | So dann wollen wirs mal angehen
Erstmal vielleicht was allgemeines zum Thema OLE: -Verbessert mich bitte falls ich groben Unsinn schreibe-
OLE (neudeutsch Object Linking and Embedding) bedeutet nichts anderes als die Möglichkeit Daten (z.B. auch Word-Dateien) in ein anderes Dokument einbetten zu können. Das Control mit dem das funktionieren soll muß natürlich OLE unterstützen wie z.B ein Richtextedit. Dabei handelt es sich im Prinzip um ein mehrzeiliges Bearbeitungsfeld mit dem Unterschied das verschiedene Absatz -und Zeichenformate erlaubt sind und wie gesagt OLE Objekte eingebettet werden können. Wird auf ein eingefügtes Objekt - z.B. ein Bild gedoppelklickt öffnet sich das assoziierte Programm. Das war im allgemeinen schonmal recht allgemein.
Mein kleines und primitives Beispiel hat also wirklich nix mit OLE zu tun - wie war noch die Frage?
Also mit OLE beschäftige ich mich noch nicht so lange (das mit den OLE-String war mal ne andere Geschichte), aber das Thema ist wirklich interessant und ich hoffe selbst bald alles verstanden zu haben damit ich mal ein Erfolgserlebnis habe. :roll: Wie schonmal erwähnt hat Uwe Pascal Niemeier sich schon ausgiebiger mit dem Thema beschäftigt aber ich denke er hat zu wenig Zeit auch etwas dazu zu sagen. Jedenfalls habe ich sein Beispiel weils so schön passt und er sicher nix dagegen hat als Anhang rangehängt.
Also um Deine 3 Fragen auf einen Schlag zu beantworten: NEEEEEINNN! ändere bloß nicht Dein Programm, die Lösung die ich für Mein Formular gefunden habe ist für mich einfach besser da im Prinzip immer die Gleichen Felder ausgefüllt werden und die auch eine maximale Länge haben. Und wie schon richtig von Dir bemerkt muß der Platz vorher in Word schon via Leerzeichen reserviert worden sein, die Datei einfach vergrößern iss nich. Ich wollte halt gerne eine in Profan realisierte Druckvorschau mit Druckfunktion im eigenen Fenster ohne Word laden zu müssen. Generell würde Dein Formular auch ohne Word auskommen (ohne Fremdprogramm is ja immer schöner zumal Word ja auch was kostet - JA ICH WEIß ES GIBT OO ) Hab also eine Seite Deiner Vorlage mal im RTF Format gespeichert - Öffne also das Beispiel im Anhang und lade die Datei Vorlage.rtf und du siehst grob wie das ganze Ohne Word aussehen könnte. Die Druckfunktion und das was unter Word Deine Makros erledigt haben z.B. die Auswahlmöglichkeit von alternativen Text müsste dann irgendwie zu Fuß programmiert werden.
Aber das ist alles auch nicht ma eben. Wenn Du also fast fertig bist dann laß es, oder spar dir das für eine neue Version. Ich kenn das - da hat man ein Programm fast fertig und da fällt einem ein wie mans doch viel besser machen kann und man fängt wieder von vorne an...
Also wenn mmmphhh!....... Gut ich komm jetzt zum SCHLUß!
Hoffe ich konnte Dir etwas weiterhelfen, in diesem Sinne gute Nacht! |
|
|
| |
|
|
|
CB | DANKE nochmals, Normann! Du hast mir enorm geholfen, auch wenn Pascals Beispiel wirklich genial ist, ich weiß jetzt, was ich (vernünftigerweise) machen werde - Du hast völlig recht. Aber Du kennst ja diesen Effekt: die wirklich tollen Ideen kommen immer erst, wenn man schon (fast) fertig ist...
Gruß, Christian |
|
|
| |
|
|
|
Uwe ''Pascal'' Niemeier | Hallo Leute!
Sorry, hab garnicht mitgekriegt, dass hier auch von meinem Kram die Rede war... Aber mit Word, Dokumenten und Macros hatte ich bisher wenig am Hut; meine Demos beziehen sich ja nur auf RTF-Controls & -Dateien. Was ich anbieten könnte wäre eine Möglichkeit, eine Bitmap direkt in ein RTF-Control einzufügen. Mit anderen Objekten müsste das auch gehen, habe ich aber noch nicht probiert. Falls euch das helfen sollte, bitte nochmal nachfragen!
Anbei der vollständige Quelltext der OLE-RTF-Demo (Das mit dem Einfügen-Dialog sollte ja nicht geheim sein; ich wollte das mit den Units bloss mal ausprobieren. Und alles habe ich davon auch nicht verstanden...)
SeeYou Pascal
Tötet Sweety! |
|
|
| |
|
|
|
Normann Strübli | Supi! Danke. [quote:98eea9c4c2]Was ich anbieten könnte wäre eine Möglichkeit, eine Bitmap direkt in ein RTF-Control einzufügen.[/quote:98eea9c4c2] Na das ist doch ein Angebot!, wenn das ohne den Einfügen-Dialog geht wäre das genial. [quote:98eea9c4c2]...alles habe ich davon auch nicht verstanden...[/quote:98eea9c4c2]Wie beruhigend Gruß Normann |
|
|
| |
|
|
|
Uwe ''Pascal'' Niemeier | Hallo Leute!
Hier das Beispiel zum Einfügen von bmps in RTF-Controls. Zur praktischen Nutzung muss es aber mit der Callback-Interface-Demo kombiniert werden, weil man das Bild sonst weder verschieben noch speichern kann. Wies mit anderen Objekten (vor allem solchen, die keine Dateien sind) aussieht, weiss ich nicht. Was wollt ihr denn überhaupt einfügen?
BTW: Ich habe noch eine Demo dabeigepackt, mit der sich ein simuliertes Copy & Paste durchführen lässt. Müsste sich auch auf Objekte anwenden lassen.
HTH Pascal |
|
|
| |
|
|
|
CB | Hi, Pascal! Also was mich angeht, müte ich eine Menge Texte in unterschiedlichster Länge (von 0 bis mehr oder weniger open end) und ein paar kleine Grafiken (eigentlich nur Cursor) von Profan nach Word transferieren - siehe in diesem thread ca 1 Seite zurück - ich glaube, das heißt Testgutachten.zip. So in etwa soll das Word-Dokument dann aussehen. Die Tabellen und Felder sind bereits in der Vorlage vorhanden mitsamt allen Textmarken. Ich habe eine Methode gefunden, das mit einem Word-Makro zu bewerkstelligen. Funktionieren tuts, ist nur relativ aufwendig und umständlich!
Bitte schau auch mal in einen anderen thread: Programm-Wettbewerb Ich hoffe aber, Du wirst mich danach nicht steinigen: Dort habe ich u.a. vorgeschlagen, daß Du als Hauptpreis eine Deiner genialen Torten fabrizieren könntest.... Die schaut ja wirklich seehhr nach Vernaschen aus!
Gruß, Christian |
|
|
| |
|
|
|
Uwe ''Pascal'' Niemeier | Hallo Christian!
Hmmm... Wie gesagt, mit Word und dessen Macros kenne ich mich nicht aus. Wenn der RTF-Kram dir helfen kann, sag einfach, was du brauchst und ich werde gucken, ob ich was passendes finde. Mit den bisherigen Demos wäre es auf jeden Fall schon mal möglich, aus verschiedenen Schnipseln ein RTF-Dokument zusammenzusetzen. Ich hatte auch mal was über Scraps (Dokumentenauszüge), aber ich finde es nicht wieder
[quote:7f3406f511] Bitte schau auch mal in einen anderen thread: Programm-Wettbewerb Ich hoffe aber, Du wirst mich danach nicht steinigen: Dort habe ich u.a. vorgeschlagen, daß Du als Hauptpreis eine Deiner genialen Torten fabrizieren könntest.... [/quote:7f3406f511] Wäre nicht das erste Mal... Fast wäre Rolf damals mit von der Partie gewesen, aber er hatte den Zug verpasst. Apropos Rolf: Falls es ihm bis dahin nicht besser geht, backe ich ihm ne Special Edition - Geschmacksrichtung Hustensaft/Menthol...
SeeYou Pascal |
|
|
| |
|
|
|
CB | Hi, Pascal!
Mein Leitspruch Wer für alles offen ist, kann nicht ganz dicht sein - ich gebs zu: Ich bin für alles offen - kann also ... ~~ ! Aber: Wer immer nur die ausgetretenen Pfade geht, wird nie Neuland sehen!
Ich hätte mit rtf kein Problem! Word-Makros waren und sind für mich nur ein Mittel zum Zweck. Mir gehts in erster Linie um die Formatierung, die ist in rtf gegeben. Formularfelder gehen in rtf genauso. Wenn damit eine direkte Übergabe von Texten und Grafiken aus Profan nach Word möglich wäre, ohne Word erst umständlich starten, dann einen Makro ausführen, der die Daten wieder hereinholt, das Ganze unter einem neuen Namen speichern und Word wieder schließen zu müssen, dann schmeiß ich diesen Müll sofort über Bord! Was ich nämlich bei meiner Methode nie ganz ausschließen kann: Was passiert, wenn ein im Hintergrund laufendes Programm bockt oder sich im entscheidenden Moment wichtig macht und ich schicke die SendMessage woandershin... Glaube mir, ich wäre sogar heilfroh und irrsinnig dankbar, falls Du mir da einen gangbaren Weg zeigen könntest - ich gehe sehr gerne Wege, wo sonst noch keiner war!
Nur zur Erläuterung - wegen Makros: Der Vorteil ist, daß einfache Makros selbst aufgezeichnet und b.B. verwendet werden können, ohne sich um den Code kümmern zu müssen. Ich habe da mal ein ganz simples Beispiel:
An der Textmarke Datum soll das aktuelle Datum eingefügt werden: Word 97 aufwärts (VisualBasic): KompilierenMarkierenSeparieren Und zum Vergleich Word 95 (WordBasic): KompilierenMarkierenSeparieren WordBasic war in der deutschen Version ein babylonisches Sprachen-Mischmasch (mal dt., mal engl. Befehle), ansonsten ziemlich pures Basic. Dann habe ich mir ein Buch zur Makro-Programmierung gekauft, weil ich mit dem Aufzeichnen schnell an unüberwindbare Grenzen gestoßen bin. Im Grunde gibts aber eine Menge Ähnlichkeiten zum Profan-Code, in WordBasic heißts halt MsgBox(...,...,16) und If...Then, dafür brauche ich mich nicht um Variablen-Deklarationen kümmern (in VB schon) VB mag ich aber einfach nicht, ist mir zu umständlich. Schau Dir mal das Beispiel an: 2 Zeilen zu .... für 2 simple Befehle! Und statt klar auszudrücken, was man will, muß man mitteilen, was man alles nicht will. Wenn ich so eine Pizza bestellen würde oder gar in einem China-Lestaulant ....
Gruß, Christian |
|
|
| |
|
|