Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Word / Document Management / May 2008

Tip: Looking for answers? Try searching our database.

userform question

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Erik Witkop - 09 May 2008 21:48 GMT
I built my own userform in VBA. And it works by populating bookmarks
in the word document. But I find I can only have 1 bookmark named
"customer" for example. So this does not scale well at all for my VBA
script. So how can I populate data with a userform where I can reuse a
variable in the document. I want to populate 'customer' in 5 different
places in the doc. And bookmarks don't cut it.

Can anyone suggest a better way to get this done?

Thanks.
Suzanne S. Barnhill - 09 May 2008 22:43 GMT
Once you've inserted Customer at a bookmark (without overwriting it; see
http://word.mvps.org/FAQs/MacrosVBA/InsertingTextAtBookmark.htm), you can
use a REF field to repeat the content elsewhere. Or you can use five
bookmarks named Customer1, Customer2, etc. It's not that much more trouble
for your UserForm code to insert the field five times.

Signature

Suzanne S. Barnhill
Microsoft MVP (Word)
Words into Type
Fairhope, Alabama USA

>I built my own userform in VBA. And it works by populating bookmarks
> in the word document. But I find I can only have 1 bookmark named
[quoted text clipped - 6 lines]
>
> Thanks.
Doug Robbins - Word MVP - 12 May 2008 05:06 GMT
Use Document Variables and DOCVARIABLE fields instead of bookmarks

Signature

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

>I built my own userform in VBA. And it works by populating bookmarks
> in the word document. But I find I can only have 1 bookmark named
[quoted text clipped - 6 lines]
>
> Thanks.
Erik Witkop - 13 May 2008 00:53 GMT
On May 12, 12:06 am, "Doug Robbins - Word MVP"
<d...@REMOVECAPSmvps.org> wrote:
> Use Document Variables and DOCVARIABLE fields instead of bookmarks
>
[quoted text clipped - 18 lines]
>
> - Show quoted text -

Thanks Doug. That is a much better solution that bookmarking. Working
with bookmarks is a pain.

Do you have  any basic code to take a textfield from a userform and
populate a docvariable? I couldn't find any code that worked in
conjuction with userforms?

Thanks.
Jay Freedman - 13 May 2008 14:49 GMT
> On May 12, 12:06 am, "Doug Robbins - Word MVP"
> <d...@REMOVECAPSmvps.org> wrote:
[quoted text clipped - 29 lines]
>
> Thanks.

The exact form of the code depends on where you place it (within the
userform's code, such as in the _Click procedure of the OK button; or in the
macro that declares and shows the userform).

If it's in the userform code, it could be something like this:

  ActiveDocument.Variables("NameOfVariable").Value = TextBox1.Text

If it's in the calling macro, the left side is the same but "TextBox1" must
be addressed as a property of the userform:

  Dim UF As UserForm1
  Set UF = New UserForm1
  UF.Show
  ActiveDocument.Variables("NameOfVariable").Value = UF.TextBox1.Text

Don't take the latter as production code; at the very least, there's more
that needs to be done to make it error-resistant.

Signature

Regards,
Jay Freedman
Microsoft Word MVP        FAQ: http://word.mvps.org
Email cannot be acknowledged; please post all follow-ups to the newsgroup so
all may benefit.

Erik Witkop - 15 May 2008 16:07 GMT
> > On May 12, 12:06 am, "Doug Robbins - Word MVP"
> > <d...@REMOVECAPSmvps.org> wrote:
[quoted text clipped - 59 lines]
> Email cannot be acknowledged; please post all follow-ups to the newsgroup so
> all may benefit.

Thanks Jay,

But for the life of me I cannot get this working. This is my code.

1. one form with one field. The form name is UserForm1. The field name
is customer_field.
2. one variable in the word doc named 'customer_var'

My code is this:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Private Sub CommandButton1_Click()
With ActiveDocument

  .Variables("customer_var").Value = customer_field.Text
  .Fields.Update

End With
End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

What is not happening, is the docvariable in the word doc never gets
populated. I don't get any debug errors, it simply does not populate
the docvariable in my word doc.

Any thoughts?

Thanks for all your help. There is very little flaming here as long as
you follow the rules. I like that.
Jay Freedman - 15 May 2008 17:38 GMT
> Thanks Jay,
>
[quoted text clipped - 26 lines]
> Thanks for all your help. There is very little flaming here as long as
> you follow the rules. I like that.

You need three pieces, and I suspect you have only two of them.

1. The "field" customer_field is a text entry control on the userform. I
assume that works.
2. The document variable customer_var is only a storage location -- by
itself it's invisible. The code you showed is correct, and it works here.
3. The piece that I think you're missing is a DOCVARIABLE field in the body
of the document to display the value of the document variable. Open the
Insert > Field dialog, select the DocVariable field type, and enter
customer_var in the "New name" box.

Signature

Regards,
Jay Freedman
Microsoft Word MVP        FAQ: http://word.mvps.org
Email cannot be acknowledged; please post all follow-ups to the newsgroup so
all may benefit.

Erik Witkop - 16 May 2008 01:03 GMT
> > Thanks Jay,
>
[quoted text clipped - 46 lines]
>
> - Show quoted text -

Jay,

I just made a new fresh word doc and added the variable and it works
like a charm. I must have something bad in my original doc.

Thanks for your patience and your help!!!
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.