AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Serienbrieffelder auslesen

Ein Thema von Nightjacket · begonnen am 28. Feb 2013 · letzter Beitrag vom 1. Mär 2013
Antwort Antwort
Benutzerbild von Nightjacket
Nightjacket

Registriert seit: 28. Feb 2013
7 Beiträge
 
Delphi 7 Professional
 
#1

AW: Serienbrieffelder auslesen

  Alt 28. Feb 2013, 15:16
Ja du hast Recht, Bookmarks sind etwas anderes. MailMerge-Felder kann man entweder über MailMerge.Fields ansprechen oder nur über Fields, wobei letzteres nicht wirklich nur Serienbrieffelder zählt, daher nicht zu empfehlen.

Die Enumeration befindet sich in der Eigenschaft Item

BookMarks.Item(i).Name
Ja auch das stimmt, nur wie oben beschrieben, bekomme ich eine Meldung, dass Item nicht bekannt ist (weder als Eigenschaft noch als Methode). Genau da liegt nun mein Problem. Ich weiß nicht wie ich meine MailMerge-Fields ansprechen kann um ihren "Namen" zu erhalten.

Sagen wir in der Vorlage steht:

"Sehr geehrter Herr <<Name>>,"

In diesem Fall soll mein Programm mir (ursprünglich geplant) über word.ActiveDocument.MailMerge.Fields(i).Result (bzw. Name/Text/..) den Namen des Feldes, also <<Name>>, ausgeben.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#2

AW: Serienbrieffelder auslesen

  Alt 28. Feb 2013, 16:48
versuch mal
Code:
.MailMerge.DataSource.DataFields('myMMfield').Value
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Nightjacket
Nightjacket

Registriert seit: 28. Feb 2013
7 Beiträge
 
Delphi 7 Professional
 
#3

AW: Serienbrieffelder auslesen

  Alt 1. Mär 2013, 07:21
Leider bekomme ich auch dabei wieder folgende Meldung:

Es ist eine Exception der Klasse EOleException aufgetreten. "'DataFields' ist keine Methode."

Was mir jetzt dabei "ins Auge stach", war EOleException. Laut Quellcode weise ich dem Variant 'word' ein Ole-Objekt zu:
Code:
word := CreateOleObject('Word.Application');
Könnte es vielleicht damit zu tun haben und es gibt noch eine andere einfache Möglichkeit auf Word zuzugreifen (ohne OLE)?

Geändert von Nightjacket ( 1. Mär 2013 um 07:25 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: Serienbrieffelder auslesen

  Alt 1. Mär 2013, 08:11
Mailmerge.Datafields gehört zu Documents.

http://msdn.microsoft.com/en-us/libr...ice.10%29.aspx
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Nightjacket
Nightjacket

Registriert seit: 28. Feb 2013
7 Beiträge
 
Delphi 7 Professional
 
#5

AW: Serienbrieffelder auslesen

  Alt 1. Mär 2013, 08:49
Ja das stimmt, löst aber leider mein Problem nicht, dass ich Fields bzw. DataFields keinen Namen oder Index übergeben darf ohne einen Fehler zu erhalten.
Trotzdem dank' ich dir erstmal!

Ich hab es zwischenzeitlich noch auf andere Weise, nach diesem Beispiel hier, versucht und stoße auch dabei wieder auf Probleme:
Code:
procedure testMerge2();
var
  wordApp: TWordApplication;
  dir: OleVariant;
begin
  wordApp := TWordApplication.Create(nil);
  wordApp.Connect;
  dir := edtUser.Text;
  wordApp.Documents.OpenOld(dir,EmptyParam,EmptyParam,EmptyParam,
  EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

  // ShowMessage(wordApp.ActiveDocument.Fields.Count); <-- Count nicht bekannt
end;
Eingebunden habe ich dafür OleServer und WordXP (um TWordApplication bekannt zu machen). Nun hatte ich gehofft, dass er damit vielleicht keine Probleme bekommt, aber angeblich gibt es für Fields kein Count! Er kennt lediglich ..ActiveDocument.Field.Application..
Wie im verlinkten Beispiel beschrieben sollte es aber genau so funktionieren:
Code:
cnt := wordApp.ActiveDocument.Fields.Count;
Ich verzweifel langsam daran und hab keine Ahnung wieso er die eigentlich vorhandene Funktion nicht kennt.

Danke an alle die bis hierher so geduldig mitgelesen haben und versuchen zu helfen.

EDIT - Problem gelöst!
Diesmal vergaß ich einfach IntToStr() um den Ausdruck in der ShowMessage... nunja ich verbuche das unter Anfängerfehler!
Vielleicht gab es bei der ersten Testfunktion ein ähnliches Problem, das werde ich jetzt überprüfen, aber zumindest klappt es mit der zweiten nun, den Namen der Felder auszugeben über
Code:
wordApp.ActiveDocument.Fields.Item(i).Result.Text
Also vielen Dank nochmal an euch!

Geändert von Nightjacket ( 1. Mär 2013 um 09:07 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:59 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