Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / вылетает из метода при обращении к ячейке другой книги, помогите / 5 сообщений из 5, страница 1 из 1
28.07.2016, 07:43
    #39281615
jonikoone
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вылетает из метода при обращении к ячейке другой книги, помогите
проблема - не хочет драться значение из ячейки в переменную, есть аналогичный макрос в котором все хорошо работает.
вот нерабочий:


Sub СканированиеПокраска(BookPath As String)

Dim Book As Workbook
Set Book = Workbooks.Open(BookPath, ReadOnly:=True) ' книга открывается, все хорошо

Dim NSpec As String
Dim NN As Integer
Dim str As String
Dim Itogo As String
Dim ItogoKras As String

Dim Mass As New Collection
On Error GoTo err1:

Dim n As Integer
n = 3

NSpec = Book.Worksheets(1).Cells(4, n) ' на этой строке все ломается, и переходит к err1
NN = InStr(NSpec, "№")
str = WorksheetFunction.Trim(Mid(NSpec, NN + 1, Len(NSpec) - NN))

Dim flag As Boolean
flag = True
Dim strItogo As String
Dim i As Integer
Dim j As Integer
i = j = 1
'Do While flag
' j = 1
' Do While flag
' strItogo = UCase(Book.Sheets(1).Cells(i, j).Text)
' If InStr(strItogo, "ИТОГО") <> 0 Then
' ItogoKras = Book.Sheets(1).Cells(i, j + 1)
' Itogo = Book.Sheets(1).Cells(i, j + 2)
' flag = False
' End If
' If i > 50 And j > 50 Then
' flag = False
' End If
' j = j + 1
' Loop
' i = i + 1
'Loop
n = 10
Do While Book.Sheets(1).Cells(n, 40) <> "Итого:"
n = n + 1
Loop

ItogoKras = Book.Sheets(1).Cells(n, 41)
Itogo = Book.Sheets(1).Cells(n, 42)

Book.Close False

Mass.Add NSpec
Mass.Add ItogoKras
Mass.Add Itogo

ЗаписьПокраска Mass
Exit Sub
err1:
MsgBox "Проихошла ошибка во время прочтения книги"
Book.Close False
Exit Sub

End Sub


этот работает исправно:


Sub СканированиеГибка(BookPath As String)
Dim Book As Workbook
Set Book = Workbooks.Open(BookPath)

Dim Mass As New Collection

Dim NOrder As String
Dim RowITOGO As Integer
Dim Itogo As String
Dim NDetal As Integer
Dim k As Integer
k = 1
NDetal = 1

With Book.Sheets("Спецификация с гибки")

NOrder = .Cells(5, 4)
'номер спецификации
Do While .Cells(k, 1) <> "№ п/п"
k = k + 1
Loop
k = k + 2
Do While .Cells(k, 1) <> ""
k = k + 1
NDetal = NDetal + 1 ' количество деталей
Loop
NDetal = k

k = 1
Do While InStr(.Cells(k, 1), "ИТОГО") = 0 And k < 150
k = k + 1
Loop
RowITOGO = k


Itogo = .Cells(RowITOGO, 6)

End With
Book.Close False
Mass.Add NOrder
Mass.Add NDetal
Mass.Add Itogo
ЗаписьГибка Mass

End Sub

...
Рейтинг: 0 / 0
28.07.2016, 07:47
    #39281617
jonikoone
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вылетает из метода при обращении к ячейке другой книги, помогите
jonikooneпроблема - не хочет браться значение из ячейки в переменную, есть аналогичный макрос в котором все хорошо работает.
вот нерабочий:


Sub СканированиеПокраска(BookPath As String)

Dim Book As Workbook
Set Book = Workbooks.Open(BookPath, ReadOnly:=True) ' книга открывается, все хорошо

Dim NSpec As String
Dim NN As Integer
Dim str As String
Dim Itogo As String
Dim ItogoKras As String

Dim Mass As New Collection
On Error GoTo err1:

Dim n As Integer
n = 3

NSpec = Book.Worksheets(1).Cells(4, n) ' на этой строке все ломается, и переходит к err1
NN = InStr(NSpec, "№")
str = WorksheetFunction.Trim(Mid(NSpec, NN + 1, Len(NSpec) - NN))

Dim flag As Boolean
flag = True
Dim strItogo As String
Dim i As Integer
Dim j As Integer
i = j = 1
'Do While flag
' j = 1
' Do While flag
' strItogo = UCase(Book.Sheets(1).Cells(i, j).Text)
' If InStr(strItogo, "ИТОГО") <> 0 Then
' ItogoKras = Book.Sheets(1).Cells(i, j + 1)
' Itogo = Book.Sheets(1).Cells(i, j + 2)
' flag = False
' End If
' If i > 50 And j > 50 Then
' flag = False
' End If
' j = j + 1
' Loop
' i = i + 1
'Loop
n = 10
Do While Book.Sheets(1).Cells(n, 40) <> "Итого:"
n = n + 1
Loop

ItogoKras = Book.Sheets(1).Cells(n, 41)
Itogo = Book.Sheets(1).Cells(n, 42)

Book.Close False

Mass.Add NSpec
Mass.Add ItogoKras
Mass.Add Itogo

ЗаписьПокраска Mass
Exit Sub
err1:
MsgBox "Проихошла ошибка во время прочтения книги"
Book.Close False
Exit Sub

End Sub


этот работает исправно:


Sub СканированиеГибка(BookPath As String)
Dim Book As Workbook
Set Book = Workbooks.Open(BookPath)

Dim Mass As New Collection

Dim NOrder As String
Dim RowITOGO As Integer
Dim Itogo As String
Dim NDetal As Integer
Dim k As Integer
k = 1
NDetal = 1

With Book.Sheets("Спецификация с гибки")

NOrder = .Cells(5, 4)
'номер спецификации
Do While .Cells(k, 1) <> "№ п/п"
k = k + 1
Loop
k = k + 2
Do While .Cells(k, 1) <> ""
k = k + 1
NDetal = NDetal + 1 ' количество деталей
Loop
NDetal = k

k = 1
Do While InStr(.Cells(k, 1), "ИТОГО") = 0 And k < 150
k = k + 1
Loop
RowITOGO = k


Itogo = .Cells(RowITOGO, 6)

End With
Book.Close False
Mass.Add NOrder
Mass.Add NDetal
Mass.Add Itogo
ЗаписьГибка Mass

End Sub

...
Рейтинг: 0 / 0
28.07.2016, 09:56
    #39281675
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вылетает из метода при обращении к ячейке другой книги, помогите
jonikoone,

а с какой целью Вы себя цитируете? :)
По факту - Вы бы хоть текст ошибки привели. Сидеть и гадать мало желания. Скорее всего в ячейке Book.Worksheets(1).Cells(4, n) значение ошибки. Вот и вылетает, т.к. не может присвоить типу String тип error. Плюс желательно указывать свойство, которое хотите получить от ячейки. Хоть и назначается по умолчанию Value, лучше не рисковать:
Код: vbnet
1.
NSpec = Book.Worksheets(1).Cells(4, n).Value


Посмотрите что у Вас в этой ячейке и при необходимости обходите ошибку:
Код: vbnet
1.
2.
3.
If Not Iserror(Book.Worksheets(1).Cells(4, n).Value) Then
    NSpec = Book.Worksheets(1).Cells(4, n).Value
end if


Больше советовать нечего.
...
Рейтинг: 0 / 0
28.07.2016, 12:51
    #39281831
jonikoone
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вылетает из метода при обращении к ячейке другой книги, помогите
The_Prist,

ошибки не вылетает, в этом то вся загадочность.
в принципе разобрался, спасибо за помошь с Iserror.
...
Рейтинг: 0 / 0
28.07.2016, 14:35
    #39281944
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вылетает из метода при обращении к ячейке другой книги, помогите
jonikooneошибки не вылетает, в этом то вся загадочность.
Я может чего-то не понимаю, но как это ошибки нет, если сами пишитеjonikoone NSpec = Book.Worksheets(1).Cells(4, n) ' на этой строке все ломается, и переходит к err1
уберите On Error GoTo err1: и загадочность уйдет, уступив место стандартному показу ошибки. Кажется, это очевидно. Чтобы увидеть ошибку, надо убрать обработчик...Или хотя бы добавить в конец:
Код: vbnet
1.
2.
err1:
MsgBox "Проихошла ошибка во время прочтения книги. Описание ошибки: " & err.Description
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / вылетает из метода при обращении к ячейке другой книги, помогите / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]