Runtime error 1004 application-defined or object-defined error

  • Thread starter Thread starter Alan
  • Start date Start date
A

Alan

I tried to pose this on another group, MS Excel and VBA, but it
still has not been posted, and I realize now that this group is much
more active and accessible. . . .

I am getting the error: "Runtime error 1004 application-defined or
object-defined error" in the code provided below at this line of
code:

.Cells(StartRow + n - 1, 5).Value = _
WordDoc.Comments(n).Scope


It is processing comments in a Word document and outputting them into
Excel cells. It works fine on another document, but not on this
particular document. However, the debug statements I inserted prior
to this (see code below) output fine.


Anyone have any idea what might cause this?


Thanks, Alan


Public Sub Extract(WordApp As Object, WordDoc As Object)


Const StartRow = 2
Dim CommentWorkbook As Workbook, CommentSheet As Worksheet
Dim nCount As Long
Dim n As Long


' Set up access to the Excel worksheet
Set CommentWorkbook = ActiveWorkbook
Set CommentSheet = CommentWorkbook.Worksheets("Comments")


' Make sure the right worksheet can be accessed
If CommentSheet Is Nothing Then
Error.ShowErrorMsg "Unable to find the worksheet named
'Comments'", "Excel Worksheet Error"
GoTo SafeExit
End If


' Determine how many comments are in the Word document
nCount = WordDoc.Comments.Count


' If no comments are found, exit
If nCount = 0 Then
Error.ShowErrorMsg "The active document contains no
comments!", "No Comments Found", "ExtractWordComments.Extract"
GoTo SafeExit
End If


' Application.ScreenUpdating = False


'Get info from each comment in WordDoc, and insert in spreadsheet
For n = 1 To nCount
With CommentSheet
' Comment number
.Cells(StartRow + n - 1, 1).Value = n
' Author name
.Cells(StartRow + n - 1, 2).Value = _
WordDoc.Comments(n).Author
' Page number
.Cells(StartRow + n - 1, 3).Value = _


WordDoc.Comments(n).Scope.Information(Word.wdActiveEndPageNumber)
'The text marked by the comment\
Debug.Print "Comment # " & n & " - Cell(" & StartRow
+
n - 1 & ", 5)"
Debug.Print "Cell value: " & .Cells(StartRow + n - 1,
5).Value
Debug.Print "Comment scope: " & WordDoc.Comments(n).Scope
Debug.Print "--- reached end of scope"
.Cells(StartRow + n - 1, 5).Value = _
WordDoc.Comments(n).Scope
'The comment itself
Debug.Print "Getting the comment itself . . ."
.Cells(StartRow + n - 1, 6).Value = _
WordDoc.Comments(n).Range.Text
End With
Next n


' Application.ScreenUpdating = True
' Application.ScreenRefresh


CommentSheet.Activate
MsgBox nCount & " comments found. Finished creating comments
document.", vbOKOnly, "Success!"


SafeExit:
Set CommentWorkbook = Nothing
Set CommentSheet = Nothing
End Sub
 
Alan,
this may be a long shot. The debug.Print statement that works
transforms the Scope value into a string:
Debug.Print "Comment scope: " & WordDoc.Comments(n).Scope
Your code that chokes tries to assign it to the value property of the cell.
I would try something like:
.Cells(StartRow + n - 1, 5).Value = _
CStr(WordDoc.Comments(n).Scope)
or
.Cells(StartRow + n - 1, 5).Value = _
"" & WordDoc.Comments(n).Scope

I'm not familiar with the Word Objects so I don't know what data/data type
Scope can contain, but if this is the problem one of the above should solve it.

Helmut.
 
Helmut,

Thanks for the suggestion. Unfortunately, that did not fix it.
It`s odd that this happens with one particular document, which does
not appear to have any other problems.

Alan
 
Back
Top