A Bug I Think in Word 2000

G

Greg

Enter a simple table and add a bit of text to a few cells.

Put a check in: Tool>Options>Edit>Use smart cut and paste

Type a few words after the table and copy it to the clipboard.

Now run:

Sub Test()
Dim tbl As Word.Table
Dim cel As Word.Cell
Dim rng As Word.Range
Set tbl = ActiveDocument.Tables(1)
For Each cel In tbl.Range.Cells
Set rng = cel.Range
rng.MoveEnd wdCharacter, -1
rng.Collapse wdCollapseEnd
rng.Paste
Next
End Sub


This has interesting results.
1. If you selected and copied a complete word or phrase (without the
leading space). The result is the text is pasted to all cells as
expected, but a run time error is generated.

Run Time Error '5825' Object has been deleted. :-(

2. If you copied only part of a word or a word/phase including a
leading
space, all is well.

I have discovered that the cause of this behaviour is
Tools>Options>Edit>Use smart cut and paste. With that option off, the
procedure works as expected with no run time error. That is the cause,
but I don't really understand the why.

I suppose that knowing this you could use an error handler:

Sub Test()
Dim tbl As Word.Table
Dim cel As Word.Cell
Dim rng As Word.Range
Set tbl = ActiveDocument.Tables(1)
On Error GoTo Handler
For Each cel In tbl.Range.Cells
Set rng = cel.Range
rng.MoveEnd wdCharacter, -1
rng.Collapse wdCollapseEnd
rng.Paste
Next
Exit Sub
Handler:
End Sub

Does anyone know if this bug, as I have called it, is documented, why
it happends, or a more appropriate workaround?

Thanks.
 
J

Jezebel

Must be something more to it, Greg. I tried it exactly as you describe and
can't create the problem. What are your Smart cut and paste settings?
 
G

Greg Maxey

Jezebel,

I don't know if you noticed the complete subject, but the error only occurs
in Word2000(well I don't know about Word97, or 2002). It doesn't occur in
Word2003.

When Tools>Option>Edit>Smart cut and paste is checked the error occurs if I
select and copy a complete word or phrase to the clipboard. It doesn't
occur if I select and copy the middle part of a word, the tail end of a
word, or a complete word including a leading space.

If Tools>Options>Edit>Smart cut and paste is uncheck, then the error doesn't
occur.

I have only tested on my Word2000 machine at work, so the problem could be
isolated to that machine.

Cheers.
 
J

Jezebel

You're right, I didn't notice that. As for a workaround: perhaps instead of
collapsing the cell range and pasting, try using Range.InsertAfter ?
 
G

Greg Maxey

Jezebel,

I forgot, I already tried that and it works fine:

Sub Test3()
Dim MyData As DataObject
Dim myString As String
Dim tbl As Word.Table
Dim cel As Word.Cell
Dim rng As Word.Range

Set MyData = New DataObject
MyData.GetFromClipboard
myString = MyData.GetText
Set tbl = ActiveDocument.Tables(1)
For Each cel In tbl.Range.Cells
Set rng = cel.Range
rng.MoveEnd wdCharacter, -1
rng.InsertAfter myString
Next
End Sub



Any thoughts on why it happens? I mean I know it happens because smart cut
and paste is enabled, but why do you suppose that is?
 
J

Jezebel

Any thoughts on why it happens? I mean I know it happens because smart
cut and paste is enabled, but why do you suppose that is?

Are you able to identify the line that throws the error?

To hazard a guess as to cause: from your account, all cells are actually
processed, so the error comes at the end of the loop. Perhaps the smart
cut-and-paste, in trying to deal with the superfluous space, is shifting an
internal range pointer, so that on the final iteration it thinks there is
another cell to process, then throws the error when it finds there isn't
one.
 

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