ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   How to modify contents of TextFrame? (https://www.excelbanter.com/excel-programming/279386-how-modify-contents-textframe.html)

Robert Stober

How to modify contents of TextFrame?
 
Hi,

I've got a shape that has an asscoiated TextFrame that contains some text.
I'd like to replace that text using VBA code. But I can't get it to work.
based on the oputput of the macro recorder, this should work:

With Sheets("Start").Shapes(7).TextFrame
.Characters.Text = "AAAAA"
End With

But it doesn't. I've also tried to use delete and insert methods of the
characters class, but these methods seem to belong to a different charaters
class than the one provided by the Shape.TextFrame object.

Does anyone know how to do this?

Thank you very much,

Robert Stober



Tom Ogilvy

How to modify contents of TextFrame?
 
your code worked fine for me. Perhaps your shape doesn't support text.

--
Regards,
Tom Ogilvy

Robert Stober wrote in message
...
Hi,

I've got a shape that has an asscoiated TextFrame that contains some text.
I'd like to replace that text using VBA code. But I can't get it to work.
based on the oputput of the macro recorder, this should work:

With Sheets("Start").Shapes(7).TextFrame
.Characters.Text = "AAAAA"
End With

But it doesn't. I've also tried to use delete and insert methods of the
characters class, but these methods seem to belong to a different

charaters
class than the one provided by the Shape.TextFrame object.

Does anyone know how to do this?

Thank you very much,

Robert Stober





Paul

How to modify contents of TextFrame?
 
Is your shape locked and protected?
or
Were you in break mode in the middle of another procedure?

"Robert Stober" wrote in message
...
Hi,

I've got a shape that has an asscoiated TextFrame that contains some text.
I'd like to replace that text using VBA code. But I can't get it to work.
based on the oputput of the macro recorder, this should work:

With Sheets("Start").Shapes(7).TextFrame
.Characters.Text = "AAAAA"
End With

But it doesn't. I've also tried to use delete and insert methods of the
characters class, but these methods seem to belong to a different

charaters
class than the one provided by the Shape.TextFrame object.

Does anyone know how to do this?

Thank you very much,

Robert Stober





Robert Stober

How to modify contents of TextFrame?
 
Paul,

Yes, actually the entire page is protected, but I think the macros should
still be able to operate on... wait I see DrawingObjects:=True... I'll
change that and then let you know...

' the cells on the "Start" worksheet cannot be selected, but macros will
work
Sheets("Start").Protect DrawingObjects:=True, Contents:=True, _
Scenarios:=True, UserInterfaceOnly:=True

Thank you,

Robert


"Paul" wrote in message
...
Is your shape locked and protected?
or
Were you in break mode in the middle of another procedure?

"Robert Stober" wrote in message
...
Hi,

I've got a shape that has an asscoiated TextFrame that contains some

text.
I'd like to replace that text using VBA code. But I can't get it to

work.
based on the oputput of the macro recorder, this should work:

With Sheets("Start").Shapes(7).TextFrame
.Characters.Text = "AAAAA"
End With

But it doesn't. I've also tried to use delete and insert methods of the
characters class, but these methods seem to belong to a different

charaters
class than the one provided by the Shape.TextFrame object.

Does anyone know how to do this?

Thank you very much,

Robert Stober







Robert Stober

How to modify contents of TextFrame?
 
Tom and Paul,

I found the problems(s) and thought that I'd pass them on:

1. Yes, my page was protected. I overcame this by adding some unprotect
code, then reprotected making sure to set UserInterfaceOnly:=True so my code
can still operate on the sheet.

Sheets("Start").Unprotect

.... chart generating code here

Sheets("Start").Protect DrawingObjects:=True, & _
Contents:=True, & _
Scenarios:=True, & _
UserInterfaceOnly:=True

2. I've determined that there's a 255 character limit on shape.TextFrame
objects. So I switched to a TextBox thinking thatI'd be able to put more
characters in there. But I soon found out that a "textBox is really a shape,
and so I still can't get more than 255 characters in it.

But interestingly, I also learned that there is only one Characters class -
it's just *how* I call it that makes the difference. For instance if I code
this:

With Sheets("Start").Shapes(7).TextFrame
.Characters.Text = "mytext" ' better not exceed 255 characters
End With

I can only use the "Text" property. But if I code:

Sheets("Start").Shapes(7).Select
With Selection
' works now, but still no more than 255 characters!
.Characters.Insert String:="mytext"
End With

Maybe there is two Characters classes, and in the latter form I'm using the
one that inherits from Range, and in the former I'm using the one for
TextFrame. I'll admit to being *slightly* confused on this...

The bottom line:

How can I get more than 255 characters of text onto my worksheet? I'm
willing to use *any* technique...

Thank you,

Robert Stober
"Robert Stober" wrote in message
...
Hi,

I've got a shape that has an asscoiated TextFrame that contains some text.
I'd like to replace that text using VBA code. But I can't get it to work.
based on the oputput of the macro recorder, this should work:

With Sheets("Start").Shapes(7).TextFrame
.Characters.Text = "AAAAA"
End With

But it doesn't. I've also tried to use delete and insert methods of the
characters class, but these methods seem to belong to a different

charaters
class than the one provided by the Shape.TextFrame object.

Does anyone know how to do this?

Thank you very much,

Robert Stober





[email protected]

How to modify contents of TextFrame?
 
This is a generic routine that I use to fill TextBoxes with strings
255 characters. Just pass the string and a reference to the shape.

Sub FillTextBox(strText As String, shpTB As Shape)
'' Generic routine to fill a text box with more than 255 characters.

Dim intI As Integer
Dim strChunk As String

intI = 1

Do While intI < Len(strText)
strChunk = Mid(strText, intI, 250)
shpTB.TextFrame.Characters(intI).Insert String:=strChunk
intI = intI + 250
Loop

End Sub

Sub Test
'' Assumes that there is already a Text Box 1.

Dim strPctPos as String
Dim shpSS as Shape

strPctPos=String(1000, "*")
Set shpSS = ActiveSheet.Shapes("Text Box 1")
Call FillTextBox(strPctPos, shpSS)

End Sub

HTH
Paul
--------------------------------------------------------------------------------------------------------------
Be advised to back up your WorkBook before attempting to make changes.
--------------------------------------------------------------------------------------------------------------
The bottom line:

How can I get more than 255 characters of text onto my worksheet? I'm
willing to use *any* technique...

Thank you,

Robert Stober




Robert Stober

How to modify contents of TextFrame?
 
Paul,

This is GREAT stuff! I had just about given up on it...

Will the TextBox have a scrollbar so the user can access all the text?

Thank you,

Robert

wrote in message
...
This is a generic routine that I use to fill TextBoxes with strings
255 characters. Just pass the string and a reference to the shape.

Sub FillTextBox(strText As String, shpTB As Shape)
'' Generic routine to fill a text box with more than 255 characters.

Dim intI As Integer
Dim strChunk As String

intI = 1

Do While intI < Len(strText)
strChunk = Mid(strText, intI, 250)
shpTB.TextFrame.Characters(intI).Insert String:=strChunk
intI = intI + 250
Loop

End Sub

Sub Test
'' Assumes that there is already a Text Box 1.

Dim strPctPos as String
Dim shpSS as Shape

strPctPos=String(1000, "*")
Set shpSS = ActiveSheet.Shapes("Text Box 1")
Call FillTextBox(strPctPos, shpSS)

End Sub

HTH
Paul
--------------------------------------------------------------------------

------------------------------------
Be advised to back up your WorkBook before attempting to make changes.
--------------------------------------------------------------------------

------------------------------------
The bottom line:

How can I get more than 255 characters of text onto my worksheet? I'm
willing to use *any* technique...

Thank you,

Robert Stober






[email protected]

How to modify contents of TextFrame?
 
Watch for linewrap. Adds a TextBox with scrolling capability. This
adds a TextBox from the Control Toolbox. Controls added to worksheets
from the Control Toolbox are more phinicky(?), but I haven't have much
problem with TextBoxes.

I add them programmatically, but you don't have to. With those from
the Control Toolbox (versus the Forms Toolbar), you don't have to deal
with the 255 character limitation (I had a link from Googel that
explained the differences but I can't find it). I usually delete them
when I'm done loading a file or whatever into the TextBox.

Sub DeleteTextBox(Optional varName As Variant)
'' Deletes a text box from the Control Toolbar.

ActiveSheet.Shapes("MyTextBox").Delete

End Sub

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

Sub FileIntoTextBox()
'' Adds a text box which has a scroll bar.

Dim txtBox As MSForms.TextBox
Dim oleTB As OLEObject
Dim wSht As Worksheet
Dim wBk As Workbook

Application.ScreenUpdating = False

[a1].Select

Set wBk = ActiveWorkbook
Set wSht = wBk.ActiveSheet

Set oleTB = wSht.OLEObjects.Add(ClassType:="Forms.TextBox.1",
link:=False, _
DisplayAsIcon:=False, Left:=1, Top:=1, Width:=600,
Height:=150)
With oleTB
.Visible = True
.Name = "MyTextBox"
End With
Set txtBox = oleTB.Object

With txtBox
.Top = ActiveWindow.VisibleRange.Top + 100
.Left = ActiveWindow.VisibleRange.Left + 100
.MultiLine = True
.ScrollBars = 2
.EnterKeyBehavior = True
.Font.Name = "Courier New"
.Font.Size = 8
.SelStart = 1
End With

End Sub

Tested using Excel 97SR2 on Windows 98SE,

HTH
Paul
--------------------------------------------------------------------------------------------------------------
Be advised to back up your WorkBook before attempting to make changes.
--------------------------------------------------------------------------------------------------------------
Paul,

This is GREAT stuff! I had just about given up on it...

Will the TextBox have a scrollbar so the user can access all the text?

Thank you,

Robert




All times are GMT +1. The time now is 10:18 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com