Тема: Почему не допускается перебор документов через AcadApplication.Documents.Item(i)?

Вот написал такой примерчик, он при отладке выдаёт ошибку, когда происходит обращение к первому же НЕактивному чертежу (ессно, открыто несколько документов сразу).
Сообщение такое: "Method ITEM failed bla-bla-bla". При отладке, повторяю, первый (активный) документ проходит нормально, а при i=2 - сразу ошибка.

Public Sub aaa()
  Dim n As Integer, i As Integer, s As String
  n = AcadApplication.Documents.Count
  For i = 1 To n
    s = s & AcadApplication.Documents.Item(i).Name
  Next i
  MsgBox s
End Sub

Re: Почему не допускается перебор документов через AcadApplication.Documents.Item(i)?

Активный, не активный.... Не в этом дело. Номера элементов в коллекции начинаются с 0.

Public Sub aaa()
Dim i As Integer, s As String
For i = 0 To AcadApplication.Documents.Count - 1
    s = s & AcadApplication.Documents.Item(i).Name
Next
MsgBox s
End Sub

Re: Почему не допускается перебор документов через AcadApplication.Documents.Item(i)?

Впрочем также как и в LISP.

Re: Почему не допускается перебор документов через AcadApplication.Documents.Item(i)?

> bender
Спасибо!
(Так же, как и в Лиспе, в Бейсике имеется дикая путаница в нумерации - иногда с нуля, иногда - с единицы. Се ля Ви.:)

Re: Почему не допускается перебор документов через AcadApplication.Documents.Item(i)?

Свои массивы Вы можете начинать с 1. Все остальное - 0.

Re: Почему не допускается перебор документов через AcadApplication.Documents.Item(i)?

может проще и без головной боли насчет когда =0 а когда=1
Option Explicit
Sub showDocs()
Dim oDoc As AcadDocument
For Each oDoc In AcadApplication.Documents
     Debug.Print oDoc.Name
Next
End Sub

Re: Почему не допускается перебор документов через AcadApplication.Documents.Item(i)?

Господа, кстати, я тут нашел прямо в хелпе АКАДа чудный сэмплик прямо по теме, все-таки хелп в АКАДе классный! Но ... читать надо. Называется Documents Example в разделе Code Examples, ActiveX and VBA reference.
Sub Example_Documents()
    ' This example obtains a reference to the Documents collection
    ' and displays information about the loaded documents.
    Dim Document As AcadDocument
    Dim msg As String
    msg = vbCrLf
    ' Cycle through the Documents collection and retrieve the names
    ' of the loaded documents
    For Each Document In Documents
        msg = msg & Document.name & vbCrLf
    Next
    ' Display loaded document information
    If Documents.count > 0 Then
        MsgBox "The loaded documents are: " & msg
    Else
        MsgBox "There are no loaded documents!"
    End If
End Sub