Accessing a TextBox

S

Stefan_B

Hello,

I have a textbox which sits in the header of a document, is their anyway I
can access the textbox, so that I may search the Header for particulars
pieces of text?

Thanks,
Stefan.
 
J

Jay Freedman

Stefan_B said:
Hello,

I have a textbox which sits in the header of a document, is their
anyway I can access the textbox, so that I may search the Header for
particulars pieces of text?

Thanks,
Stefan.

Hi Stefan,

The following code assumes that "the header" means the primary header of
section 1 (there could be first-page and/or even-page headers, or you could
want a different section), that the header actually contains at least one
shape object (a text box is a shape object), and that the first shape is the
textbox you want to search. If any one of these assumptions isn't true, the
On Error trap will be triggered and the macro will simply exit. In a real
macro, you should test each assumption in turn and handle any problems
appropriately.

It also assumes you're just searching for the first occurrence of the text
"find me" -- of course, that can be changed, and the search can be altered
to become a replacement. All the interesting stuff is in the Set oRg
statement.

Sub foo()
Dim oRg As Range

On Error GoTo Bye

Set oRg = ActiveDocument.Sections(1) _
.Headers(wdHeaderFooterPrimary).Shapes(1) _
.TextFrame.TextRange

With oRg.Find
.ClearFormatting
.Format = False
.Forward = True
.Wrap = wdFindStop
.Text = "find me"
If .Execute Then
oRg.Select
End If
End With

Bye:
End Sub
 
J

Jay Freedman

Hi Jim,

Need more details, please...

- Does the document contain more than one section? If so, which section is
the table in?
- Is the table in the primary footer, rather than the first-page or
even-page footer?
- Is it the only table in that footer?
- Which cell should the number be put into? Is it a particular cell in a
known row and column, or do you have to find it by searching for something
(if so, what?)
- Is the variable a number type (Integer, Single, etc.) or a String or a
Variant?
- Does it need to be formatted in any special way (leading zeros, etc.)?
- (least important) What's the name of the variable?
 
J

Jim

Jay,

In answer to your questions:
- Does the document contain more than one section? Yes If so, which section is
the table in? 2
- Is the table in the primary footer, rather than the first-page or
even-page footer? It is a primary footer
- Is it the only table in that footer? Yes
- Which cell should the number be put into? Let's say for talking purposes, the cell is (3, 4). If I am off, I can adjust the number. Is it a particular cell in a
known row and column, or do you have to find it by searching for something. No, I want to delete anything currently in this cell and replace it with the new number. (Actually a string such as T-12555).
(if so, what?) See above.
- Is the variable a number type (Integer, Single, etc.) or a String or a
Variant? String
- Does it need to be formatted in any special way (leading zeros, etc.)? This one has no leading zeros.
- (least important) What's the name of the variable? I think I called it rng1

Jay,

Thanks for the personal attention. I am not used to this. I do appreciate
it. I have been learning word macros one baby step at a time. Figuring out
how to apply the object model is much different from Access or Excel VBA.

Jim
 
J

Jay Freedman

Hi Jim,

Your answers to the first four questions lead to this (it's all one
statement, broken into separate lines with continuation characters):

ActiveDocument.Sections(2) _
.Footers(wdHeaderFooterPrimary).Range _
.Tables(1) _
.Cell(3, 4).Range _
.Text = rng1

The idea is that you "drill down" through successive layers of the
object model: the document consists of sections, so you choose the
second section; the section has a Footers collection, and you choose
the primary footer; that footer has a range, which in turn contains a
Tables collection...

The answers to the other questions rule out the need for other
complications, such as using the Format function to massage the
appearance of the text.

In formulating a statement like this, it helps to know which objects
contain which collections. But my primary guide in this is the popups
that list all the properties and methods of an object when you type
the period after its name. Also, put the cursor on any of the keywords
and press F1 to see its Help topic, which shows the parent-child
relationships in a little diagram at the top. (That diagram is
clickable and hyperlinks to the topics for those objects.)

Jay,

In answer to your questions:
- Does the document contain more than one section? Yes If so, which section is
the table in? 2
- Is the table in the primary footer, rather than the first-page or
even-page footer? It is a primary footer
- Is it the only table in that footer? Yes
- Which cell should the number be put into? Let's say for talking purposes, the cell is (3, 4). If I am off, I can adjust the number. Is it a particular cell in a
known row and column, or do you have to find it by searching for something. No, I want to delete anything currently in this cell and replace it with the new number. (Actually a string such as T-12555).
(if so, what?) See above.
- Is the variable a number type (Integer, Single, etc.) or a String or a
Variant? String
- Does it need to be formatted in any special way (leading zeros, etc.)? This one has no leading zeros.
- (least important) What's the name of the variable? I think I called it rng1

Jay,

Thanks for the personal attention. I am not used to this. I do appreciate
it. I have been learning word macros one baby step at a time. Figuring out
how to apply the object model is much different from Access or Excel VBA.

Jim
 
J

Jim

Jay,

Thanks for your prompt reply... this is just like I remember from the old
Compuserve days (a quick response). It looks like this is exactly what I
need, but I will post another response after I have tested it out.

Thanks again,

Jim
 
J

Jim

I made up a new demo document with a table in the second section footer and
this time the macro works great. Still not sure why the tables in my
original document weren't recognized... but I am pretty sure I can solve this
by recreating the document if I have to.

Thanks again.
-------------
 
J

Jim

Jay,

As it turns out, my table was in a text box (frame), so this is the final
code that works. I now have the residual problem that the cell is ending up
with a carriage return causing the cell to grow. How do I get rid of the
unwanted carriage return?

ActiveDocument.Sections(2) _
.Footers(wdHeaderFooterPrimary) _
.Shapes(1).TextFrame.TextRange _
.Tables(1) _
.Cell(3, 4).Range _
.Text = rng1

Thanks,

Jim
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top