Страницы: 1
RSS
Перебор данных макросом в другой книге.
 
Добрый день! Всем всем всем!  
 
Подскажите пожалуйста, почему нижеприведённый макрос не функционирует:  
 
Sub SBOR()  
Dim Target As Range  
   For Each Target In Workbooks("данные.xls").Sheets("данные").Range(Sheets("данные").Cells(3, 4), Sheets("данные").Cells(50000, 4))  
       If Target = "" Then Exit Sub  
   Next  
End Sub  
 
С уважением,
 
А как вы определил, что макрос не функционирует?  
 
Ведь, судя по коду, что бы там в ячейках не находилось, макрос всё равно НИЧЕГО НЕ СДЕЛАЕТ...
 
{quote}{login=EducatedFool}{date=29.12.2010 01:29}{thema=}{post}А как вы определил, что макрос не функционирует?  
 
Ведь, судя по коду, что бы там в ячейках не находилось, макрос всё равно НИЧЕГО НЕ СДЕЛАЕТ...{/post}{/quote}  
 
он выдаёт ошибку в For Each Target In Workbooks("данные.xls").Sheets("данные").Range(Sheets("данные").Cells(3, 4), Sheets("данные").Cells(50000, 4))  
 
т.е. дальше этой строчки макрос и так ничего не делает :)
 
А вообще, в коде есть ошибка.  
Надо не так:  
...Range(Sheets("данные").Cells(3, 4), ...  
 
а так:  
...Range(Workbooks("данные.xls").Sheets("данные").Cells(3, 4), ...  
 
 
Правильно будет так:  
 
Sub SBOR()  
   Dim Target As Range  
   With Workbooks("данные.xls").Sheets("данные")  
       For Each Target In .Range(.Cells(3, 4), .Cells(50000, 4))  
           If Target = "" Then Exit Sub  
       Next  
   End With  
End Sub
 
{quote}{login=EducatedFool}{date=29.12.2010 01:32}{thema=}{post}А вообще, в коде есть ошибка.  
Надо не так:  
...Range(Sheets("данные").Cells(3, 4), ...  
 
а так:  
...Range(Workbooks("данные.xls").Sheets("данные").Cells(3, 4), ...  
 
 
Правильно будет так:  
 
Sub SBOR()  
   Dim Target As Range  
   With Workbooks("данные.xls").Sheets("данные")  
       For Each Target In .Range(.Cells(3, 4), .Cells(50000, 4))  
           If Target = "" Then Exit Sub  
       Next  
   End With  
End Sub{/post}{/quote}  
 
Уважаемый EducatedFool! Благодарю Вас!  
 
С наступающим Вас.    
 
С уважением,
 
Уважаемый EducatedFool!  
 
Если можно, то ещё один небольшой вопрос в продолжении этой темы: "Макрос работает только в том случае, если книга Данные.xls открыта".  
Если книга будет закрыта, то макрос не работает. Это можно избежать? т.е. чтобы макрос работа при закрытой книге Данные.xls?  
 
С уважением,
 
Почитайте хелп по GetObject Function.
Я сам - дурнее всякого примера! ...
 
{quote}{login=Пахом}{date=29.12.2010 01:42}{thema=Re: }{post}Уважаемый EducatedFool!  
 
Если можно, то ещё один небольшой вопрос в продолжении этой темы: "Макрос работает только в том случае, если книга Данные.xls открыта".  
Если книга будет закрыта, то макрос не работает. Это можно избежать? т.е. чтобы макрос работа при закрытой книге Данные.xls?  
 
С уважением,{/post}{/quote}  
 
я так спрашиваю, т.к. формулы вытаскивают значения из книги без её открытии.
 
{quote}{login=KukLP}{date=29.12.2010 01:59}{thema=}{post}Почитайте хелп по GetObject Function.{/post}{/quote}  
 
эм ... я изучал немецкий ... но попробую ... спасибо :)
 
{quote}{login=Пахом}{date=29.12.2010 01:42}{thema=Re: }{post}"Макрос работает только в том случае, если книга Данные.xls открыта". Если книга будет закрыта, то макрос не работает. {/post}{/quote}  
Макросом сначала открываем "ту" книгу, обрабатываем, затем закрываем. При этом отключаем/включаем обновление экрана.
 
{quote}{login=Юрий М}{date=29.12.2010 02:09}{thema=Re: Re: }{post}{quote}{login=Пахом}{date=29.12.2010 01:42}{thema=Re: }{post}"Макрос работает только в том случае, если книга Данные.xls открыта". Если книга будет закрыта, то макрос не работает. {/post}{/quote}  
Макросом сначала открываем "ту" книгу, обрабатываем, затем закрываем. При этом отключаем/включаем обновление экрана.{/post}{/quote}  
 
Добрый день Юрий М!  
да, я понял Ваш пример.    
я даже попробовал сделать такой макрос:  
Sub SBORS()  
Dim Target As Range  
Dim XLBook  
 
Set XLBook = GetObject("C:\БАЗА.xls")  
   With XLBook.Sheets("данные")  
       For Each Target In .Range(.Cells(3, 4), .Cells(50000, 4))  
           If Target = "" Then XLBook.Close: Exit Sub  
           MsgBox Target  
       Next  
   End With  
     
End Sub  
 
понял то, что книга открылась, только в VBA, т.е. листы книги видны в редакторе VBA, а так, в обычном виде, - нет.    
Суть понятна.    
Благодарю Вас Юрий М и Вас KukLP! :)  
 
С Наступающим Вас ребят!!!  
 
С уважением,    
Василий.
 
Юр, это гемор с проверками(не открыта-ли) и морганием панели задач. Глянь в тему:  
http://www.excelworld.ru/forum/2-170-1
Я сам - дурнее всякого примера! ...
 
Серж, я понял, но я просто application.displayalerts добавляю и всё нормально. Морганий особых не видно. Вполне приемлемый вариант :-)
 
{quote}{login=KukLP}{date=29.12.2010 02:19}{thema=}{post}Юр, это гемор с проверками(не открыта-ли) и морганием панели задач. Глянь в тему:  
http://www.excelworld.ru/forum/2-170-1{/post}{/quote}  
 
мда :) а как проверить, открыта ли на момент запуска макроса книги или закрыта?  
Подскажите пожалуйста  
 
С уважением,
 
Охотник, у Вас поиск отключен? :-) http://www.planetaexcel.ru/forum.php?thread_id=16556
 
Вот эта самая  GetObject сама все и проверяет и экран отключает и т.д.
Я сам - дурнее всякого примера! ...
 
{quote}{login=Юрий М}{date=29.12.2010 02:34}{thema=}{post}Охотник, у Вас поиск отключен? :-) http://www.planetaexcel.ru/forum.php?thread_id=16556{/post}{/quote}  
 
сипасибо :))
 
{quote}{login=KukLP}{date=29.12.2010 02:35}{thema=}{post}Вот эта самая  GetObject сама все и проверяет и экран отключает и т.д.{/post}{/quote}  
 
Всё так :) Спасибо :)
Страницы: 1
Читают тему
Наверх
Loading...