Home |
Search |
Today's Posts |
#17
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
RTF Mail Merge Fields
Peter,
OK - I understand and I figured out why the bullet character was incorrect. It seems the problem is that I need to set a font before inserting the bullet character. I started out thinking I could have a routine that would massage the rtf and fix whatever was causing the problem. I could never get this to work so my solution now is to use Dev Ashish's MySendkeys code and insert a bullet character when setting up a bullet list. The user interface looks the same so when bullets are turned on it simply inserts a bullet character each time the enter key is pressed. Pressing the bullet list button turns it off. I believe this is a problem with all versions of Word because I have not been able to setup a mail merge in Word and use another Word Document containing a table that contains bulleted lists. So my work-around is now working just fine which contains all of the functionality that I need for this application. Vic "Peter Jamieson" wrote in message ... Unfortunately a miss can be as good as a mile in this area. Can you spell out at what point you are making the Alt-7 change and where you are doing it? The thing is that setting selBullet to true is something you would set in the Richtext editor control's properties - selBullet isn't (AFAIK) something in the RTF spec. What I'm interested in is a. whether in fact by using Alt-7 you are inserting a bullet character (whereas a bulleted list does not actually have a bullet character in the RTF for the paragraph) b. what the resulting RTF is in each case. c. what your options are with regard to generating/re-using the RTF? e.g., - if you are generating it in the first place, can it usefully be generated in a different way? - would trying to detect bulleted paragraph paragraphs in the rtf and "fixing" them by inserting a bullet character instead, at some point between the data source and the merge operation, be an option? Peter Jamieson http://tips.pjmsn.me.uk Vic wrote: Peter, Well, I have it pretty much working using Word Tables and I'm using Ref fields. I'm able to specify bold, underline, italics and I'm able to change fonts and font sizes. These will all merge fine from the data source. The only problem is that bullet lists causes a problem because it changes the bullet character to 1 - 2 - 3 etc. and causes problems in the paragraph sequencing. What I'm doing now to get around this is when a bulleted list is setup on the merge source I am inserting ALT 7 (.) instead setting selBullet to true per the rtf spec. While on the VB screen it shows as a heavy veritcal mark, it comes through as a . on the merged document. Vic "Peter Jamieson" wrote in message ... Yes, we are back to here... The problem with trying to include RTF text via merge fields is that merge fields only insert character data, with no formatting information from the data source. If you copied your Access data to a Word document, used that as the data source, and used REF fields instead of MERGEFIELD fields to insert data, some of the formatting gets through, but it's all rather arbitrary. The only way I know to get the RTF text from Access to Word that has any hope of working is to export the contents of each Access RTF field to a .rtf file on disk, then insert t using an INCLUDETEXT field. This is of course non-trivial, but I quote an earlier message that has some ideas... In other words, using MERGEFIELD fields loses the most formatting, using REF fields with a Word format data source loses less formatting, using INCLUDETEXTed RTF files generated on the fly /may/ lose less than that (but I wouldn't count on it, because at that point you face all the difficulties of merging two files, each of which may reference its own set of "format definitions" (cf. styles), which may clash in various ways). (and in that case, it may not matter /how/ you insert the RTF, but I guess you have a better chance of controlling the outcome using VB(A)+Word object model than MERGEFIELD/REF fields). Peter Jamieson http://tips.pjmsn.me.uk Vic wrote: Peter, I think there is just an inherent problem in Word (and I've also tried Word 7) with merging a data source that contains a table with a bulleted list. If you can just create 2 documents and the source contains a column that includes a bulleted list and merge that into a second word document. I have not been able to get this to work simply using the buttons on the menu for a mail merge. Vic "Peter Jamieson" wrote in message ... Vic, OK, I think it's going to be difficult to start from where you are and achieve a reliable result. It seems to me that there are two main considerations: a. do you have full control over the formatting that is in the data source? b. even if you do, is there a way to ensure that Word honours the formatting that you applied? Most of the following is guesswork as I have not even attempted to follow all the steps you are likely to be using... As far as (a) is concerned, if you are using the Richtext control in VB6 to generate the RTF in the data source, then c. From your previous messages it seems that the control is generating {\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fc harset0 MS Sans Serif;}{\f1\fnil\fcharset2 Symbol;}} \viewkind4\uc1\pard\lang1033\f0\fs17 OK - We need to change these text boxes so that we can \b set strings of words to BOLD\b0 , change fonts, do underlines and we also need to do bullets: \par \par \pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnin dent0{\pntxtb\'B7}}Oranges \par {\pntext\f1\'B7\tab}Apples \par {\pntext\f1\'B7\tab}Pears \par \pard \par This all seems to work but when it gets merged into word, all of the formatting characters show as text! \par \par \par } d. my guess is that Word 2002 will ignore the formatting specified as {\pntext\f1\'B7\tab} (which is "direct formatting"), because Word 2002 is supposed to know how to honour {\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}} which specifies bullet formatting for the list as a whole. e. in other words, it is possible that if you could avoid generating that {\*\...} stuff, Word would just take the bullets you provided and insert them However, if you are going via an intermediate Word file as my previous posts suggested, it is possible that even if you were able to remove that {\*\ } RTF code, Word might well re-introduce it if you programmatically use Word Save-As to save your data source. Finally, if you have control over what is in the database, the chances are that you would be much better off avoiding this approach to a merge - perhaps generating th necessary bullets by direct programming of the word object model rather than going via mailmerge. If you do not, then the only way is if something can be done about (b) As for (b), it is probably a question of whether the paragraph(s) containing the { REF memofield } field could be formatted using a particular "listformat" that overrides anything in the RTF. I simply do not know whether that can be done or not. Peter Jamieson http://tips.pjmsn.me.uk Vic wrote: Peter, OK - Here's what I'm doing. I am using VB6 program to do a mail merge where the both the merge source and the main document are rtf files. For the merge source the app creates the word document with a word table which contains the merge data from an Access database. The problem I'm having is when the merge source contains a bulleted list, the merged documents are formatted as 1. 2. 3. etc. instead of a bullet (.). I have checked the merge source and the column containing the bullet list is correctly formatted. I also tried doing the merge in word and the results are the same as when the merge is done in my program. So my question is how do I a merge where the source contains bulleted lists and maintain the correct style of the bullets. Vic "Peter Jamieson" wrote in message ... Vic, For one thing, you are probably now way ahead of me! Also - I've rather lost the plot here, but if you can spell out what you are using in the RTF, what you are using in the mail merge main document, what results you are trying to achieve and what you are actually getting, I can certainly have another look. Peter Jamieson http://tips.pjmsn.me.uk Vic wrote: Peter, What I've found is that I can enter the bullet character using ALT 7 (.) for each item instead of setting selBullet = true per the rtf spec and it works correctly in the merge. Also the paragraph sequencing is not affected. Any ideas ? Vic "Peter Jamieson" wrote in message ... Ypur best bet here is probably to avoid using automatic numbering in the main document - although it may be possible to prevent "interference" between the numbering in the RTF and the numbering in the main document by specifying a named list template or some such in the main document, that stuff is hard to tame. What you coud try is SEQ-based numbering in the main document, e.g. where you use { SEQ } fields, the \r switch to reset numbering for each sequence, \h to hide the result when you do that, and the \c switch to re-use the existing number, e.g. { SEQ level2 \r0 \h }{ SEQ level1 }. { SEQ level1 \c }.{ SEQ level2 } { SEQ level1 \c }.{ SEQ level2 } { SEQ level1 \c }.{ SEQ level2 } { SEQ level2 \r0 \h }{ SEQ level1 }. { SEQ level1 \c }.{ SEQ level2 } { SEQ level1 \c }.{ SEQ level2 } { SEQ level1 \c }.{ SEQ level2 } to give you a sequence like 1. 1.1 1.2 1.3 2. 2.1 2.2 2.3 I don't know if that approach fits your requirement, but it's the best I can do right now. Peter Jamieson http://tips.pjmsn.me.uk Vic wrote: Another thing the bullets cause is to change the paragraph numbering that follows the bulleted list i.e. (The following data is from the merge source) Text Box Facility Info: OK - We need to change these text boxes so that we can set strings of words to BOLD, change fonts, do underlines and we also need to do bullets: This all seems to work but when it gets merged into word, all of the formatting is lost. No bolding, underlines, bullets etc. 1. Apples 2. Oranges 3. Bananas This seems to be changing the paragraph number in the rest ot the document (the main document starts here) INTRODUCTION 3.1. PURPOSE The 3.1 PURPOSE should be 1.1. After the merge it became 3.1. Perhaps if I could get the bullet character to change to something else may have some sort of impact on the numbering but so far I haven't found a way to specify the bullet character. Vic "Peter Jamieson" wrote in message ... The problem with trying to include RTF text via merge fields is that merge fields only insert character data, with no formatting information from the data source. If you copied your Access data to a Word document, used that as the data source, and used REF fields instead of MERGEFIELD fields to insert data, some of the formatting gets through, but it's all rather arbitrary. The only way I know to get the RTF text from Access to Word that has any hope of working is to export the contents of each Access RTF field to a .rtf file on disk, then insert t using an INCLUDETEXT field. This is of course non-trivial, but I quote an earlier message that has some ideas... ---------------------- Using Mailmerge without code, you have to export the content of each field containing rtf text to a disk file, then use INCLUDETEXT to insert it. Typically you would need to export the text to a filename that is somehow related to a unique identifier (e.g. the primary key field(s)) in the table you are merging. So suppose you have a autonumber primary key called k containing 1,2,3,... and your column is called mycolumn, you might create a file called c:\myrtfs\mycolumn1.rtf for the rtf for mycolumn in record 1 Then you would use a nested INCLUDETEXT field in your mail merge main document, e.g. { INCLUDETEXT "c:\\myrtfs\\mycolumn{ MERGEFIELD k }" } Alternatively, you might be able to use Word MailMerge events: for each Access record, the event handler (probably MailMergeBeforeRecordMerge) would need to use e.g. ADO to export the RTF, then insert it into the document. I do not know how feasible that is. I can't say I recommend this, but for a small number of records you could consider the following: a. create an Access User-defined (VBA) function that exports the RTF for a specified field into a file b. create an Access query that returns the other data you want and calls that function. Ideally the function would return the pathname of the file it created, with backslashes doubled up. c. In Word, connect to that query using the DDE connection method (there is another possibility) Here's a how-to I wrote in 2001, slightly modified: Suppose the function is called rtfx b. create a query that has columns k, r and rtfx c. use the query as the datasource for your merge. For example, the following Access function should do the necessary Function rtfx(n As Integer, s As String) As String dim r as String Dim t As String * 1 ' Generate the file name you want rtfx = "c:\myrtfs\rtf" & Trim(Str(n)) & ".rtf" ' and return a doubled-backslash version ias the function result rtfx = "c:\\myrtfs\\rtf" & Trim(Str(n)) & ".rtf" Open r For Binary As 1 Len = 1 For i = 1 To Len(s) t = Mid(s, i, 1) Put #1, i, t Next Close 1 End Function Then your query might have columns k, r, and rtfx(k,r) e.g. Run the query in Access and Access will modify the text in column 3 to something like Expr1: rtfx([k],[r]) You can then change Expr1 to a more helpful name such as "filepath" Then create your Word mailmerge main document and set up the query as the data source - Word should offer k,r and filepath as the possible mergefields. Your INCLUDETEXT field would then need to look like { INCLUDETEXT "{ MERGEFIELD filepath }" } Worth a try? ---------------------- Of course, that assumes that you are using the MailMerge mechanism, but faced with this problem for real, I would probably avoid MailMerge and use Access VBA code to generate each Word document in turn (assuming you're not going for a catalog/directory), saving each RTF field to disk as needed and inserting it directly using the relevant Word Insert file method. However, I cannot provide you with code for that. Yes, it probably is something that lots of people want to do, but there are non-trivial problems to solve when attempting this, no matter how you encode your formatted text (e.g., you encode it using XML, but using which vocabulary/ies?). And I don't suppose anyone on the development side has wanted to solve it for RTF-encoded text ever since RTF became a "legacy format", which you could argue is over a decade ago. Peter Jamieson http://tips.pjmsn.me.uk Vic wrote: Doug, Thanks for the reply but I'm having a problem understanding how to implement these switches. The rtf fields are inserted in an Access database using a VB program and contain data such as: {\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fc harset0 MS Sans Serif;}{\f1\fnil\fcharset2 Symbol;}} \viewkind4\uc1\pard\lang1033\f0\fs17 OK - We need to change these text boxes so that we can \b set strings of words to BOLD\b0 , change fonts, do underlines and we also need to do bullets: \par \par \pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnin dent0{\pntxtb\'B7}}Oranges \par {\pntext\f1\'B7\tab}Apples \par {\pntext\f1\'B7\tab}Pears \par \pard \par This all seems to work but when it gets merged into word, all of the formatting characters show as text! \par \par \par } It appears to me from the use of these switches I can use /*charformat to bold, underline and italics. So where are these switches implemented? I tried as a test to press ctl F9 and inserted Graham's bold example { REF chapter2_title \* Charformat } would display "Whales of the Pacific" but it only displayed this as plain text without formatting. I need to be able to have this done programmatically so I would assume I'd need some sort of word macro. The VB program invokes the mail merge and turns the document into a PDF which then gets merged with other PDF documents to produce a final document as a PDF. So I suppose I'd have to invoke the word macro to massage the word document after the mail merge is completed. Would that be correct? I don't see that bullets, indenting and font changes are supported with switches. Are there any examples of using templates with docvariable fields. There are about 20 merge fields that are inserted in this document. Would you provide a bit of guidance on where to go from here? Are there some examples somewhere for doing this. It would seem to me to be a quite common occurance but I'm finding limited information on using switches and merge fields that contain rtf data. Vic "Doug Robbins - Word MVP on news.microsoft.com" wrote in message ... For any more than the formatting that can be applied by use of Word field formatting switches, I think that you would have to use a "roll-your-own" equivalent to mailmerge where in place of a mail merge main document containing mergefields, you would use a template containing docvariable fields and then you would run a macro that would create a new document from that template for each record in data source, setting the values of variables in the document to the value of corresponding field for that record in the data source and making use of the formatting information in the data source to apply the required formatting. For information on Word field formatting switches, see "Formatting Word fields with switches" on fellow MVP Graham Mayor's website at: http://www.gmayor.com/formatting_word_fields.htm -- Hope this helps. Please reply to the newsgroup unless you wish to avail yourself of my services on a paid consulting basis. Doug Robbins - Word MVP, originally posted via msnews.microsoft.com "Vic" wrote in message ... Hello, I am trying to setup a mail merge and use rtf text fields from a database. These rtf fields contain the formatting instructions for bolding, bullets, font settings etc. However, the problem I am having is word does not recognize these formatting characters and prints everything as plain text. My main document is an rtf file. How can I get word to interpretate these instructions? I am using Word 2002. Thank you, Vic |
Thread Tools | |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
Word 2007 Mail Merge Labels skips fields using update fields | Mailmerge | |||
Using if fields in mail merge to ignore empty fields | Mailmerge | |||
MS Word form fields versus mail merge fields | Mailmerge | |||
Form fields versus mail merge fields | Microsoft Word Help | |||
mail merge some fields leave other as form fields | Mailmerge |