Приветствую всех знатоков макросов!
Может кто-нибудь сталкивался с такой задачей. Есть 2 почти одинаковых файла. В каждом более 30 листов. Один находится на сервере, в общем доступе. В него еженедельно заносят информацию сотрудники. Другой - на моем компьютере. Задача - сравнить файлы и выявить изменения за неделю. Написал такой макрос:
Sub Сравнение()
Dim sPathOUT As String
Dim i As Integer
Dim iRow As Integer
Dim iCol As Integer
Dim a As Integer
Dim wsCount As Integer
iRowS = 1 'начальная строка
iRowF = 160 'конечная строка
iColS = 1 'начальный столбец
iColF = 36 'конечный столбец
sPathOUT = "\\ADMIN\Publik\ПРОЕКТЫ\ПРОЕКТЫ на iPub 2013.xlsm" 'путь к файлу
wsCount = Workbooks("Проекты 13 NEW").Worksheets.Count 'кол-во листов в книге
i = 2 'начальный лист
a = 2 'начальная строка листа "Сравнение"
Workbooks.Open (sPathOUT) 'открытие книги для сравнения
Workbooks("Проекты 13 NEW").Sheets("Сравнение").Activate
For i = 2 To (wsCount - 1) 'цикл по листам
For iRow = iRowS To iRowF 'цикл по строкам
For iCol = iColS To iColF 'цикл по столбцам
If Workbooks("Проекты 13 NEW").Sheets(i).Cells(iRow, iCol) <> _
Workbooks("ПРОЕКТЫ на iPub 2013").Sheets(i).Cells(iRow, iCol) Then
Cells(a, "B") = Sheets(i).Name
Cells(a, "C") = iRow
Cells(a, "D") = iCol
Cells(a, "E") = Workbooks("Проекты 13 NEW").Sheets(i).Cells(iRow, iCol).Value
Cells(a, "F") = Workbooks("ПРОЕКТЫ на iPub 2013").Sheets(i).Cells(iRow, iCol).Value
If Cells(a, "B") <> " " Then a = a + 1
End If
Next
Next
Next
Workbooks("ПРОЕКТЫ на iPub 2013").Saved = True 'закрытие книги
Workbooks("ПРОЕКТЫ на iPub 2013").Close
End Sub
Макрос выполняется и происходит заполнение сравнительной таблицы, но в конце выдает ошибку "Tipe mismatch" (Несоответствие типов). Прочитал справку, но не вижу в чем ошибка. Если бы переменные не соответствовали, то думаю, макрос вообще бы не запускался. А так вроде работает, но сравниваемую книгу в конце не закрывает. Сделал два тестовых файлика - макрос работает. И сравнивает, и таблицу заполняет, и 2-ю книгу закрывает.
Может кто-нибудь подскажет, что может вызывать "Tipe mismatch"? А то второй день не могу решить.
И еще. Время ожидания работы макроса - около минуты, хотя вроде диапазон небольшой (160 строк х 36 столбцов). Есть ли функции в VBA, к-рые позволят сравнить две книги быстрее, чем в циклах? Может сразу диапазоном? Только как - не знаю.
Заранее спасибо.
Любитель Excel.