Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Word Auto: Delete after bookmark deletes bookmark
Message
From
19/04/2008 05:36:46
Cetin Basoz
Engineerica Inc.
Izmir, Turkey
 
 
To
18/04/2008 16:36:09
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Environment versions
Visual FoxPro:
VFP 9 SP1
OS:
Windows XP SP2
Network:
Windows 2003 Server
Database:
Visual FoxPro
Miscellaneous
Thread ID:
01311800
Message ID:
01311846
Views:
18
>Hi all,
>
>More Word automation stuff: code loops through 3 bookmarks in a Word template and a) deletes all the text after the bookmark to the end of the line (it is just a label for "non-automation" use) and then b) inserts some data.
>
>Works mostly okay except for some reason the very 1st bookmark in the document gets deleted when I issued the Selection.Delete() (after extending the selection to the end of the line).
>
>I tried moving the selection 1 char to the right before extending it to the end of the line (so as to be "off" the bookmark) but this puts the insertion point a char 2 which is not correct.
>
>Bookmarks 2 and 3 work okay as somehow they are different.
>
>Ideas of a workaround?
>
>Albert

Albert,
Are you collapsing selection not to include bookmark? Check Selection.Collapse. ie:
#include wdconstants.h
#Define NL Chr(13)+Chr(10)
*** set the LOCALEID to English
nlLocaleId=Sys(3004)		&& Save local id
=Sys(3006,1033)				&& We will be sending instructions in English

Use employee		&& test table
oWordDocument=Createobject("word.application")	&& Create word object
With oWordDocument
  .Documents.Add && Create a new doc
  .Visible = .T.
  .Activate
  Scan
    .Selection.TypeText('Employee Info Start.'+NL)
    .Selection.TypeText(Transform(emp_id)+NL+First_Name-(' '+Last_Name)+NL)
    .Selection.Collapse(wdCollapseEnd)
    lnRangeStart = .Selection.Range.End && set range for notes text and bookmark
    .Selection.TypeText(Nvl(notes,'')+NL+NL)
    lnRangeEnd   = .Selection.Range.End
    .Activedocument.Bookmarks.Add('b'+Padl(Recno(),2,'0'),.Activedocument.Range(lnRangeStart,lnRangeEnd))
  Endscan

  firstBmkName = .Activedocument.Bookmarks(1).Name
  .Activedocument.Bookmarks(1).Select
  Messagebox('first bookmark selected',4096,'',3000)

  .Selection.Collapse(wdCollapseEnd)
  .Selection.Expand( wdParagraph )

  Messagebox('Deleting para after first bookmark',4096,'',3000)
  .Selection.Delete
  .Selection.TypeText( 'Para deleted' + NL )

  If .Activedocument.Bookmarks.Exists(firstBmkName)
    .Activedocument.Bookmarks(firstBmkName).Select
    .Selection.Font.Color = 0xFF
  Endif
Endwith

**** Set the LocaleId to the previous value
=Sys(3006,Val(nlLocaleId))
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