Do you want to truncate (chop off) the extra text or try to "shrink to fit"?
The first can be done with a change in layout format that does not use a merge field on your label layout.
The second can be approximated with a conditional format that specifies a smaller font size when the number of characters is more than a specified amount.
Truncate. How do I change the layout format? I want to limit to 25 characters....
1. get wider labels.
2. Like Phil said cut the Company Name off at Label width - 2, that gives you a space on each side of the company name when it prints.
3. Go to an optional extra line(4 line address becomes 5), that is a little tricky in that you need to find the first blank before the width-2 of the label and then put the company name up to that point -1 on line 1 and the remainder on line 2
4. Phil's idea of shrinking the font is really good, I would love to see the code to figure the change in font size from your default (whatever that is 10 or 12 or proportional)
Personally I would go with #1 or 3. Companies (and people) are proud of their name so showing it correctly is a good move.
You can open the layout in layout mode and use the field tool to add this field to your layout without it being a merge field. You can edit the merge text to remove the <<Table::FieldName>> entry that is currently used for this data. This won't limit your text to 25 characters, it will limit the text to those that will show in the field given the width, font and size you specify.
With regards to shrinking the text, please note that I said that this "approximates" the needed change in size by counting the number of characters. It does not take into account the fact that iiiiiiiiii and WWWWWWWWWW are both the same number of characters, so it works but not perfectly as it may shrink text that didn't need to be sized smaller.