Добрый день! Друзья, помоги пожалуйста, не совсем понимаю допущенную мной ошибку...дело в том что зада пере до мной стоит в в открытии из основного файла (xlsm) другого файла (xlsx) в скрытом режиме, и далее определенная обработка данных в данном файле. Проблема в том что в скрытом режиме макрос не обрабатывает, но когда делаю книгу видимой все работает... Код:
Код
Dim Kniga As String 'переменная с наименование пути к файлу для открытия в скрытом режиме
Dim ИЗча As Object ' переменная для файла открываемого в срытом режиме
Dim lRow As Long ' переменная для поиска первой заполненной строки + 1 в определенном столбце в скрытом файле
Dim lRow1 As Long ' переменная для поиска последней заполненной строки в скрытом файле
Dim lRow2 As Long ' переменная для поиска первой заполненной строки в определенном столбце в скрытом файле
Dim В As Object ' переменная для основного файла из которого будет запускаться макрос
Dim strName As String ' переменная для имени основного файла
Dim lngI As Long ' переменная для поиска последней заполненной строки в основном файле
strName = ThisWorkbook.Name
Set В = Workbooks(strName).Worksheets("Шаблон для заливки") ' основной файл
lngI = В.Cells(Rows.Count, 2).End(xlUp).Row ' последняя заполненная строка в основном файле
Kniga = "путь к файлу" ' указание пути для открытия файла в скрытом режиме
GetObject (Kniga) ' открытие файла в скрытом режиме
Set ИЗча = Workbooks("ИЗ.xlsx").Worksheets(1) ' значение для переменной для файла в скрытом режиме
lRow = ИЗча.Cells(1, 12).End(xlDown).Row + 1 ' значение для первой заполненной строки +1 в скрытом файле (у меня это 12)
lRow1 = ИЗча.Cells(Rows.Count, 12).End(xlUp).Row ' значение для последней заполненной строки +1 в скрытом файле (у меня это 564)
ИЗча.Columns("C:C").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove ' добавление столбца в скрытом файле
lRow2 = ИЗча.Cells(1, 12).End(xlDown).Row ' значение для первой заполненной строки в скрытом файле (у меня это 11)
ИЗча.Range("C" & lRow2).FormulaR1C1 = "Искомое значение" ' придаем имя новому столбцу
ИЗча.Columns("E:E").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove ' добавляем еще один столбец
ИЗча.Range("E" & lRow2).FormulaR1C1 = "Результат" ' придаем имя еще одному новому столбцу
ИЗча.Range(Cells(lRow, 5), Cells(lRow1, 5)).FormulaLocal = _
"=ЕСЛИ(ЕОШИБКА(ПОИСКПОЗ(C" & lRow & ";$D$" & lRow & ":$D$" & lRow1 & ";0));"""";C" & lRow & ")" ' ИМЕННО ЭТОТ МАКРОС НЕ ВЫПОЛНЯЕТСЯ В СКРЫТОМ РЕЖИМЕ (это формула для поиска искомых значений в массиве данных, с возвратом в случае их нахождения)
В.Range("AB2:AB" & lngI).Copy ИЗча.Range(Cells(lRow, 3), Cells(lRow + lngI, 3)) ' копирование данных из основного файла в скрытый для поиска значений (для указанной выше формулы)
Добрый день. 1. Для начала оформите код тегами, как положено (форум ведь уже смотрели, есть 6 постов...). 2. В коде нужно всюду явно прописать чьи строки и ячейки (и количество строк!) используете, может тогда и взлетит.
там где вы пишите Cells - перед этими буковками всегда указывайте имя листа, иначе это будет активный лист - то есть надо писать так ИЗча.Cells(lRow, 5) То что вы написали ИЗча перед Range() - правильно, но этого мало, так же надо имя листа писать и перед Cells()
New, благодарю, в этом и было мое упущение. Огромное спасибо....долго мучался, видимо от усталости потерял бдительность и внимательность... Юрий М. я видимо не донес корректно мысль, в первой редакции кода я не дописал пару амперсанДов, о чем и пытался донести вторым сообщением...но спасибо за бдительность и оказанное внимание. Всех еще раз благодарю.