Word Control in Excel

S

Stuart

Using Office 2000, I open Word and in a new document
I insert a Textbox. I then copy and paste it into a worksheet.

I cannot find a way to programmatically refer to it.

Sub Test()
Dim oleObj As OLEObject, rng As Range
For Each oleObj In ActiveWorkbook.Sheets _
("Contract Master Order").OLEObjects
If TypeOf oleObj.Object Is MSForms.TextBox Then
Set rng = oleObj.TopLeftCell
rng.Value = "Bingo"
End If
Next
End Sub

The 'If' statement gives the error:
User defined type not defined

How do I control the Textbox, please?
 
D

Dave Peterson

Try adding a reference to "microsoft forms 2.0 object library"

I'm not sure how this'll work with your Word problem, though.
 
S

Stuart

Thanks for that.
It now runs to the line "For Each etc" and then
immediately jumps to "End Sub"

Regards.
 
N

Norman Jones

Hi Stuart,

Try:

Sub Test()
Dim myShape As Shape, rng As Range

For Each myShape In ActiveWorkbook.Sheets _
' ("Contract Master Order").Shapes
If myShape.Name Like "Text*" Then
Set rng = myShape.TopLeftCell
rng.Value = "Bingo"
End If
Next
End Sub
 
S

Stuart

Thanks for that.
It steps through without an error, but no values appear
in the textboxes.
Any ideas, please?

Regards.
 
N

Norman Jones

Hi Stuart,
It steps through without an error, but no values appear
in the textboxes.

No value will appear *IN* the textbox. As written,. the routine enters Bingo
in the worksheet cell that corresponds to under the upper-left corner of the
text box. Depending on the precise positioning of the textbox, this cell
may be hidden (entirely covered). You can confirm this by changing;

Set rng = myShape.TopLeftCell

to;

Set rng = myShape.TopLeftCell(1,0)

which will enter Bingo in the cell one column to the left of the
TopLeftCell.


---
Regards,
Norman
 
T

Tom Ogilvy

I did what you described and ran the code from Norman (modified to refer to
the activesheet)

Sub Test()
Dim myShape As Shape, rng As Range

For Each myShape In ActiveSheet.Shapes
If myShape.Name Like "Text*" Then
Set rng = myShape.TopLeftCell
rng.Value = "Bingo"
End If
Next
End Sub

and it worked fine. However, the textbox in word was drawn from the drawing
toolbar and came into excel as a member of the textboxes collection. I
then put in a textbox in word from the control toolbox toolbar and in design
mode, selected it and copied it. Pasted into Excel, it worked with the
original code you posted (modified to refer to the activesheet)

Sub AATest()
Dim oleObj As OLEObject, rng As Range
For Each oleObj In ActiveSheet.OLEObjects
If TypeOf oleObj.Object Is MSForms.TextBox Then
Set rng = oleObj.TopLeftCell
rng.Value = "Bingo"
End If
Next
End Sub
 
S

Stuart

Got it, thanks.
If the textbox is set to wraptext, and the user has entered
their data, is there a way to assign the value (data) in the
textbox to the same range in the sheet covered by the
textbox, and such that the data displays correctly?

Or do I just leave the textbox Visible but Disabled
before the file is saved?

Basically user opens the book, and the Open Event
sets up the single sheet, enabling textboxes, etc

User enters their data and then prints a single A4
range. The print should also include the textbox data
(that is untested).

When they Save the file, the Before Save Event creates
a new single sheet book, copies the range into the new
sheet (thus no code is copied) then saves the new book.

The original book is closed.

Regards and thanks.
 
S

Stuart

Many thanks.

That was my error. I had forgotten that the two types
of Control are different. My textbox was not an
ActiveX control.

Regards.
 
N

Norman Jones

Hi Stuart,
If the textbox is set to wraptext, and the user has entered
their data, is there a way to assign the value (data) in the
textbox to the same range in the sheet covered by the
textbox

Yes, use the textbox TopLeftCell propert as Tom Ogilvy showed you. You can
do this for all your textboxes in one fell swoop, as in Tom's code, or
individully using (say) Textbox LostFocus event code.
and such that the data displays correctly?

Reading another of your threads:
http://tinyurl.com/ywpx5


which I had not previously read, I think that Tom has already covered this
issue.
Or do I just leave the textbox Visible but Disabled
before the file is saved?

This confuses me. If this were the other way round, it would still confuse
me - but less!
 

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