![]() |
Formularkopf in Word exportieren
Hallo, ich habe versucht einen Adressverwalter zu schreiben, der mir die Daten in der Datenbank speichert und wiedergibt.
hat alles auch wunderbar geklappt. Nun habe ich versucht einen Export zu erstellen, der mir ermöglicht den Kopf ( Adresse,Name usw.) als ganzes in einem Worddokument wiederzugeben und es leider nicht auf die Reihe gebracht :( :? :? ich habe auf diversen Seiten über GOOGLE recherchiert, aber war nicht in der Lage etwas brauchbares zu finden. Hat einer von euch vielleicht einen Tipp, oder eine Idee parat? Schon mal im vorraus danke für eure Bemühungen. :dp: :dp: ps : nutzt denk ich mal nix den code mitanzugeben, wiel ich nämlich keinen vernünftigen ansatz habe. |
Re: Formularkopf in Word exportieren
oh entschuldigung. hab es glaub ich im falschen bereich geöffnet.
bin neu hier weiß nicht wie ich de n verschiebe |
Re: Formularkopf in Word exportieren
Du selbst kannst ihn nicht verschieben, aber einen Moderator darum bitten.
|
Re: Formularkopf in Word exportieren
Was genau möchtest du machen? Willst du ein Word-Dokument erstellen und dort etwas aus deinen Adress-Daten hereinschreiben? Dazu könntest du Word fernsteuern und dazu würde dir hier eine Suche nach
![]() Wenn du eine "richtige" Datenbank benutzt (das geht aus deiner Frage nicht so ganz hervor) und wissen willst, wie Word sich selbst die Daten aus der Datenbank rausziehen kann, um etwa einen Serienbrief zu erstellen, dann könnte dir eine Google-Suche zum Thema ODBC weiterhelfen. Bis denn Bommel ...der leider auch nix verschieben darf... :) |
DP-Maintenance
Dieses Thema wurde von "fkerber" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Sonstige Fragen zu Delphi" verschoben.
Dieser impliziten Bitte komme ich dann doch gleich mal nach ;) |
Re: Formularkopf in Word exportieren
ja genau ich möchte ein word doc öffnen wenn ich auf einen knopf drücke und daraus soll dann sich zb der briefkopf ergeben, also sprich
der name und das datum usw. je nachdem was ich angegeben habe. ich habe schon einen versuch gemacht, ich habe einen button erstellt, der , wenn ich drauf klicke , ein word öffnet, aber leider noch nichts hineinschreibt gewscheige denn direkt an den kopf meine gewünschten daten angibt. HIER MEIN VERSUCH : procedure TForm1.Button_BriefClick(Sender: TObject); var WordApplication, WordDocument: Variant; begin try WordApplication := CreateOleObject('Word.Application') ; WordApplication.Visible := true; except ShowMessage('Microsoft Word kann nicht starten.'); Screen.Cursor := crDefault; exit; end; WordDocument := WordApplication.Documents.Add; WordApplication.Selection. WordApplication.Selection.TypeText('Memo_Daten.Lin es') ; WordDocument.SaveAs(FileName := 'C:\Dokumente und Einstellungen\topak\Eigene Dateien\Doc.Doc', AddToRecentFiles := False) ; //WordApplication.Quit(False) |
Re: Formularkopf in Word exportieren
Was passiert denn bisher überhaupt? Wird dein bisheriger Versuch überhaupt kompiliert? Mich wundert zum Beispiel, dass bei der Zeile
Delphi-Quellcode:
nicht vom Compiler gemeckert wird. Richtiger wäre (ohne, dass ich jetzt nachgeschaut habe, ob die Parameter generell die richtigen sind) etwa das hier:
WordDocument.SaveAs(FileName := 'C:\Dokumente und Einstellungen\topak\Eigene Dateien\Doc.Doc', AddToRecentFiles := False) ;
Delphi-Quellcode:
Und an der Stelle hier:
WordDocument.SaveAs('C:\Dokumente und Einstellungen\topak\Eigene Dateien\Doc.Doc', False);
Delphi-Quellcode:
Gibst du nicht die Zeilen deines Memos aus, sondern genau den Text "Memo_Daten.Lines". Richtiger wäre sowas wie:
WordApplication.Selection.TypeText('Memo_Daten.Lines');
Delphi-Quellcode:
Ggf. könntest du auch eine Schleife über die einzelnen Zeilen verwenden, aber als erster Test sollte das reichen.
WordApplication.Selection.TypeText(Memo_Daten.Lines.Text);
Vielleicht hast du damit schon mal ein paar Ansätze, wo du suchen kannst, ansonsten bräuchten wir ein paar Tipps, was genau nicht klappt. :) Bis denn Bommel |
Re: Formularkopf in Word exportieren
also ich habe ja vorher versucht zu erklären, das das verwaltungsprogramm einen button hat, ''der brief öffnen'' heißt.
wenn ich diesen , mit dem quellcode, den ich gepostet habe, drücke, dann öffnet der mir die word.exe aber nicht das, was in meinem memofeld angezeigt wird. ich habe deine methode grade eben ausprobiert, jetzt gibt er mir den angezeigten text aus. das ist super dankeschön. jedoch wollte ich, zb wenn ich einen eigenen briefkopf anfertige, mit datum und anschreiben, das er mir die aus dem memofeld ausgegebenen daten genau in die angegebene zeile ausdruckt. ZUM BEISPIEL FutureSOFT Deutschland, den 17.12.2098 - - - - <EMPFÄNGERKOPF> sehr geehrter blabla, wir danken ihne für ihren... dh das im empfängerkopf mein memofeld ausgegeben wird. entschuldigung wenn ich mich vorher zu undeutlich ausgedrückt habe danke für eure zeit PS: ich habe grade eben gelesen das man sowas wie einen anker setzen soll, jedoch wüsste ich nicht, was das sein soll. eventuell ein merkal` in delphi , damit er weiß wo genau er das memofeld im wordkopf anzeigen muss.??? |
Re: Formularkopf in Word exportieren
Uff, also wie du nun genau zu einem Anker springst (den du vorher in Word setzen kannst), kann ich dir nun auch nicht sagen. Aber vielleicht hilft dir noch folgender Trick, um an die richtigen Befehle zu kommen:
Es hilft oftmals, in Word ein Marko aufzuzeichnen, beim Aufzeichnen ungefähr das zu tun, was nachher automatisiert werden soll und sich dann im Visual Basic-Editor von Word (nach dem Aufzeichnen dann unter Extras->Makro->Makros->Bearbeiten) anzuschauen, was daraus für ein VBA-Code erstellt wurde. Dieser ist in der Regel schon sehr ähnlich zu dem, was man dann auch in Delphi machen muss. In deinem Fall könntest du zum Beispiel in deinem Dokument einen Platzhalter setzen, der durch dein Programm durch die richtige Adresse ersetzt wird. Du suchst also in Word nach diesem Platzhalter (schreibst also irgendwo ein "***EMPFAENGERADRESSE***" oder so) und gibst dann dort eine Adresse ein. Diese Aktion zeichnest du als Marko auf und guckst sie dir im Editor an. Der Rest ist dann sicherlich noch ein bisschen Frickelei, aber so kommt man auf die richtige Spur. So, jetzt musst du das nur noch programmieren. ;) Bis denn Bommel |
Re: Formularkopf in Word exportieren
Ach so, noch eine Ergänzung: Anstatt nach dem Platzhalter zu suchen, kannst du natürlich auch diesen Anker setzen. In Word im Menü Einfügen->Textmarke, dann einen Namen geben und die Textmarke ist gesetzt.
Im Menü "Bearbeiten" findest du dann den Befehl "Gehe zu", mit dem du zur Textmarke springen kannst. Wenn du das aufzeichnest, kommt dabei folgender VBA-Befehl raus:
Code:
(Ich hab meine Textmarke einfach mal "huhu" genannt)
Selection.GoTo What:=wdGoToBookmark, Name:="huhu"
Wahrscheinlich wäre das in Delphi dann sowas wie
Delphi-Quellcode:
...ist aber ungetestet.
WordApplication.Selection.Goto(wdGoToBookmark,'huhu')
Ach ja: Bei mir bezieht sich alles auf Word 2003, sollte ich vielleicht auch mal erwähnen... Bis denn Bommel |
Re: Formularkopf in Word exportieren
vielen dank werd ich gleich mal ausprobieren.... meld mich bei ergebnissen
|
Re: Formularkopf in Word exportieren
so. hab jetz lang dran gesessen. hab des makro gesetzt und meinen vorgang aufgezeichnet
das kam dabei, mehr oder weniger raus: WordApplication.Selection.TypeText''Empfänger'' habe versucht den in delphi einzubinden, aber nicht auf die reihe bekommen. zeigt bei mir fatale fehler an, nicht einmal mehr die exe kann gestartet werden.^^ naja. falls irgendwer drüberstößt und des weiß und mir dabei helfen mag, würd ich mich freuen. ich habe hiermit offiziell aufgegeben und beschäftige mich mit etwas anderem weiter^^ haha aber trotzdem dankeschön für die hilfen falls ich darauf komme meld ich mich |
Re: Formularkopf in Word exportieren
Hallo future01,
nicht gleich die Flinte ins Korn werfen! Ich hab's zwar nur überflogen, aber der Aufruf von word (und das Beenden) sollte wohl funktioniern. Wenn du Textmarken füllen willst/anspringen willst, versuch's mal hiermit:
Delphi-Quellcode:
Wobei bookmark den Namen des bookmarks enthält (bookmark=Textmarke).
bkmkcnt:=msword.ActiveDocument.Bookmarks.count;
if bkmkcnt>0 then begin try msword.activedocument.bookmarks.item(bookmark).select; msword.activedocument.selection.text:=inhalt; except end; hiermit kannst du die namen der bookmarks auslesen:
Delphi-Quellcode:
Ich hoffe es hilft Dir.
type
ll : tstringlist; bkmkcnt: integer; ..... i:=1; bkmkcnt:=msword.ActiveDocument.Bookmarks.count; ll.add(' Word-Dokument:'+msword.activedocument.name+' '+wfile); ll.add(' Anzahl Bookmarks:'+inttostr(bkmkcnt)); if bkmkcnt>0 then repeat ll.add(inttostr(i)+') '+msword.activedocument.bookmarks.item(i).name); inc(i,1); until i>bkmkcnt; Grüße K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz