Консультация № 171491
20.08.2009, 17:00
0.00 руб.
0 3 0
при открытии документа через макрос (в excel) на некоторых компьютерах всё работает, а на некоторых выдаёт ошибку Run time error 9 subscript out of range

строчка на которой останавливается приложение:

Sub zadolgDate(wBook, wList1, wList2)
Dim wb As Excel.Workbook
Set wb = Excel.Workbooks(wBook) 'получаем экземпляр книги1

Обсуждение

давно
Модератор
137394
1850
20.08.2009, 19:06
общий
Колесников Алексей Николаевич:
А чему равно wBook? Нельзя ли получить значение с помощью, например, MsgBox после Sub там, где это не получается. А также количество Ваших открытых книг.
Похоже, у Вас не открыты по какой-то причине все нужные Вам книги (например, для некоторых пользователей не хватает прав доступа), или wBook<1 - об этом и говорит сообщение, что указанная книга вне допустимого диапазона 1<=wBook<=Excel.Workbooks.Count.

Попробуйте вставить отладочное сообщение.

MsgBox (" Книга=" + CStr(wBook) + " Всего Книг=" + CStr(Excel.Workbooks.Count))
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
Неизвестный
21.08.2009, 08:16
общий
вот что выдаёт MsgBox:

Книга=601z Всего Книг=3

на одих компьютерах работает на др.нет. ОС на всех одинаковая. excel тоже одинаковые.
Неизвестный
21.08.2009, 09:06
общий
Sub test()
'запрашиваем полное имя txt файла
fZ = Application.GetOpenFilename("Расшифровка задолженности (*.txt), *.txt)")
Call Zadolg(fZ)
'получяем имя файла без пути
fZ = Mid(fZ, InStrRev(fZ, "") + 1)
fZ = Mid(fZ, 1, InStr(fZ, ".") - 1)
Call zadolgDate(fZ, fZ)

End Sub

Sub Zadolg(zFile)
Workbooks.OpenText Filename:=zFile, Origin:=866, StartRow:=1, _
DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 2), Array(12, 1), Array(20, 2), Array(41, 1), Array(53, 1) _
, Array(65, 2), Array(73, 2), Array(81, 1)), DecimalSeparator:=".", TrailingMinusNumbers:=False
Cells.EntireColumn.AutoFit
End Sub

Sub zadolgDate(wBook, wList1)
Dim wb As Excel.Workbook
Set wb = Excel.Workbooks(wBook) 'получаем экземпляр книги1

MsgBox ("OK")
End Sub
Форма ответа