Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Word Automation, cr/lf not respected
Message
From
22/02/2007 15:34:39
Cetin Basoz
Engineerica Inc.
Izmir, Turkey
 
General information
Forum:
Visual FoxPro
Category:
COM/DCOM and OLE Automation
Environment versions
Visual FoxPro:
VFP 9
OS:
Windows XP SP2
Network:
Windows 2003 Server
Database:
Visual FoxPro
Miscellaneous
Thread ID:
01197789
Message ID:
01198114
Views:
11
I'm lost with this code:) Why not simply ^p for paragraph and execute a replace? I would use document variables or bookmarks. Anyway if it's working for your case then it's correct:)
Cetin

>Thanks all for the input, after researching, most still did not respect the formatting of the cr/lf... So, I went deeper into the automation and came up with a solution that appears to work each time CORRECTLY...
>
>After the Word document is loaded, and active document, I was able to process via the following
>
>lcFind = "{{SOMETHING TO LOOK FOR}}"  && example
>lcRep  = "Whatever you " + chr(13)+chr(10) + "want to replace with"
>
>*/ loWord is object pointer to Word application
>loWordSel	= loWord.Selection
>WITH loWordSel.Find
>   .ClearFormatting()
>   .Text = lcFind
>   .Replacement.Text = ""
>   .Forward = .t.
>   .Wrap = 1  && wdFindContinue
>   .Format = .f.
>   */ The MATCH criteria can really be optional from defaults as needed
>   .MatchCase = .f.
>   .MatchWholeWord = .f.
>   .MatchWildcards = .f.
>   .MatchSoundsLike = .f.
>   .MatchAllWordForms = .f.
>   .Execute()
>EndWith
>
>*/ NOW, break lines on the chr(13) + CHR(10)  cr/lf
>lnFR = ALINES( laFR, lcRep, .t., CHR(13)+CHR(10))
>FOR lnLines = 1 TO lnFR
>   loWordSel.TypeText( laFR[ lnLines ] )
>   IF lnLines < lnFR
>      loWordSel.TypeParagraph()
>   ENDIF
>ENDFOR
>
>
>It appears to work, even with LONG strings beyond the 255 character limit, and by pre-splitting on cr/lf into an array, forcing a TYPEPARAGRAPH() makes it work correctly.
>
>Thanks again for input, just a stronger solution
>
>
>
>
>>>Hi all,
>>>
>>>I'm sure someone has an answer for me here.
>>>
>>>I have a Word document that I have to do some automation with... So, I have some place-holders in there like {{SOMEFIELD}} where I need to do some inserting of stuff and can successfully do using find/replace automation.
>>>
>>>Here's the problem. If the text I have has ANY cr/lf (such as a multi-line address), the Word document doesn't properly reflect that, almost like the cr/lf is treated as a non-printable character and doesn't advance to the next line.
>>>
>>>Am I missing something stupid???
>>>
>>>Thanks,
>>>
>>>Don
>>
>>Don,
>>If instead of such placeholders you use document variables or bookmarks then you don't need to do find/replace at all.
>>Set document variable's value, or insert into bookmark directly. It'd also be faster than a find/replace.
>>
>>PS: If you'd use find/replace then you should use special characters for things like line feed (ie: ^p).
>>Cetin
Çetin Basöz

The way to Go
Flutter - For mobile, web and desktop.
World's most advanced open source relational database.
.Net for foxheads - Blog (main)
FoxSharp - Blog (mirror)
Welcome to FoxyClasses

LinqPad - C#,VB,F#,SQL,eSQL ... scratchpad
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform