Link to home
Start Free TrialLog in
Avatar of BETTY
BETTYFlag for Spain

asked on

VB-to-Word data sending.

I need to learn how to send data from VB databases to a Word document.

The exact way I want to make it is: I navigate a VB database, I find the exact data (i.e. a person and the associated address and birth date), and I press a CommandButton "Send".

Then I want to open a pre-existing Word document (I know the exact document and its path) to insert the data. Some data will be in the middle of a phrase, and has to be at an exact place, as it will print to a pre-printed form.

Have I to put in the Word doc "marks" at the exact places to substitute them with the data? How is it made overstriking? (If I insert, the rest of the document will be displaced, I think, and I don't want it to move).

I need a little code sample, not hints. It would be enough if you tell me how to connect to Word ("Word.Application", Word.Document", both?), how to send a text from a variable or a field, how to insert this text at a specific location without displacing the rest, and how to print the document directly from VB without having to go to Word's File:Print.

A final little collateral question: If I wanted to reformat the whole document after inserting data (i.e. a personalized mailing with the name in the middle of the phrase) to re-justify it, how it would be made?

I own VB 5 Enterprise and Office 97 Pro, and I know VB for Applications is the common gateway between them.

Thank you in advance, and greetings from Spain, Europe.
Avatar of BETTY
BETTY
Flag of Spain image

ASKER

Edited text of question
Avatar of mithomas
mithomas

Since you want actual code, and I don't have time to develop some, I'll just mark this a comment.  Hopefully you'll accept hints for free.

One of the best ways to learn how to interact with word is to use its macro recorder features.  Try doing the things in Word that you want to automate, with the macro recorder on.  The recorder will write the commands to a word document.  These are the commands that you will send to word from your VB app.

To attach VB to word, you basically do a CreateObject() on the ProgId for word, storing the returned reference in an object variable.  You then make the calls to word:

'This code is fake.  It's been
'a long time since I did this!
Dim Word as Object
Set Word = CreateObject("Word7") 'This is not the correct progid
Word.OpenDocument "MyTemplate.doc"
Word.Document.InsertText "Bookmark1", "TheText"
Word.Document.Print
Set Word = Nothing

We used bookmarks and word templates to create "forms" to fill in.  You can use the bookmarks to indicate places where text must be filled in.  Name the bookmarks appropriately (such as "Name", or "Country"), and your code will make a lot of sense.

You DON'T need VBA to do this.  You DO need to read the help on CreateObject, and the Word object model (available from Word).

As an alternative to using CreateObject and just an Object variable thus requiring you to guess at how to interact with Word -- perhaps by now, MS has provided a type library so that you can add a reference to Word in your VB project and see all of the methods as you're writing your code.

Good luck...
ASKER CERTIFIED SOLUTION
Avatar of jjmartin
jjmartin

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of BETTY

ASKER

I would want to give jjmartin 50 additional points from my account, as his/her hint is nearly as helpful as the accepted answer from the other expert.

So, if you can do it directly, you have my authorization. If not, please tell me how can I do it.
Avatar of BETTY

ASKER

Sorry, I made a mistake when I wrote the last comment on November 25, 06:46 PST. Where I wrote "give jjmartin 50 additional points", I meant "give mithomas ...".

The reason is he/she made me a comment that helped me nearly the same that the accepted answer from jjmartin. Then, the A grade (100 points) goes to jjmartin, and I want to give a "gift" of 50 points to mithomas for the comment.

Thanks, and sorry again for the mistake.
Thanks, Betty, even if I don't get the points.  I appreciate the thought!

 :-)