Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2010, 12:40   #61
Cayman
Пользователь
 
Регистрация: 07.06.2009
Сообщений: 29
По умолчанию

а возможно ли убрать абсолютные названия файлов?
к примеру открыты только 2 документа и ничего более, чтоб он сам определил с каким файлом сравнивать? =))
Cayman вне форума Ответить с цитированием
Старый 02.06.2010, 14:49   #62
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вместо абсолютной ссылки на книгу используйте эту функцию:
http://excelvba.ru/code/GetAnotherWorkbook
EducatedFool вне форума Ответить с цитированием
Старый 02.06.2010, 15:10   #63
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Игорь, я бы посоветовал чуть подработать код(точнее его часть - ту, что за занесение книг в коллекцию отвечает)
Вместо:
Код:
For Each WB In Workbooks
        If WB.Name <> ThisWorkbook.Name Then coll.Add CStr(WB.Name)
Next WB
Код:
For Each WB In Workbooks
        If WB.Name <> ThisWorkbook.Name Then
            If WB.Windows(1).Visible Then coll.Add CStr(WB.Name)
        End If
Next WB
А то ненароком можно и надстройки и PERSONAL.XLS в список затащить. Они не всегда попадают в коллекцию Workbooks, но известны случаи....
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru

Последний раз редактировалось The_Prist; 03.06.2010 в 13:36.
The_Prist вне форума Ответить с цитированием
Старый 02.06.2010, 15:17   #64
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Спасибо, Дима, исправил.

Да я этот код только что написал за несколько минут - для одного проекта понадобился.
А тут как раз просили что-то подобное.

Там ещё очень много дорабатывать, если делать по-человечески...
EducatedFool вне форума Ответить с цитированием
Старый 02.06.2010, 15:18   #65
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
исправил.
Исправь еще, ориентируясь на код выше. Я его тоже поправил.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 02.06.2010, 15:38   #66
Cayman
Пользователь
 
Регистрация: 07.06.2009
Сообщений: 29
По умолчанию

а как его внедрить в ваш макрос?
я в этом не бумбум, буду признателен если поможете.
было бы круто еслиб код определял и основную книгу и с которой сравнивать надо
Cayman вне форума Ответить с цитированием
Старый 03.06.2010, 05:00   #67
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Не совсем понимаю, зачем создавать коллекцию? По-моему, вполне достаточно имеющейся коллекции Workbooks.
Автор вопроса хочет сравнивать 2 файла при условии, что один из них - это файл с макросом, а другой - это еще один открытый файл с неизвестным именем. Т.е. открыты только эти 2 файла. Иначе, т.к. мы не знаем имени файла для сравнения, то каким образом его определять?
Если все правильно, то задачу можно решить, например, так:
Код:
Sub Main()
    If Workbooks.Count <> 2 Then
        MsgBox "Должно быть открыто 2 рабочих книги!": Exit Sub
    End If
    Dim i As Long, x As Range, Fst As String, wb As Workbook
    Application.ScreenUpdating = False: ThisWorkbook.Sheets(1).Activate
    If Workbooks(1).Name = ThisWorkbook.Name Then Set wb = Workbooks(2) Else Set wb = Workbooks(1)
    With wb.Sheets(1)
        Columns("A").Interior.ColorIndex = xlNone: .Columns("A").Interior.ColorIndex = xlNone
        For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
            Set x = .Columns("A").Find(what:=Cells(i, "A"), LookAt:=xlWhole)
            If Not x Is Nothing Then
                Cells(i, "A").Interior.ColorIndex = 6: Fst = x.Address
                Do
                    .Cells(x.Row, "A").Interior.ColorIndex = 6
                    Set x = .Columns("A").FindNext(x)
                Loop While Fst <> x.Address
    End If: Next: End With
End Sub
Пример во вложении. Откройте оба файла и запустите макрос "Main". Если количество открытых файлов не равно 2, то макрос выполнен не будет.
Вложения
Тип файла: rar Пример.rar (22.1 Кб, 27 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 03.06.2010, 06:00   #68
Cayman
Пользователь
 
Регистрация: 07.06.2009
Сообщений: 29
По умолчанию

спасибо! ну а всетаки можно сделать с окошком выбора документов?? этот макрос для шефа, у него постоянно открыто много книг Excel..будет не удобно очень.заранее благодарю!
Cayman вне форума Ответить с цитированием
Старый 03.06.2010, 07:14   #69
Cayman
Пользователь
 
Регистрация: 07.06.2009
Сообщений: 29
По умолчанию

мистика.пробовал дома этот макрос все работало, на работе пробую, ниче не работает, постоянно пишет что должно быть открыто 2 книги, хотя помимо этих двух ничего не открыто.
Cayman вне форума Ответить с цитированием
Старый 03.06.2010, 08:46   #70
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
а всетаки можно сделать с окошком выбора документов?
Нужно было сразу сказать. Тогда бы мы не гадали, что это за 2-й файл.
Посмотрите вложение. Откройте файл "Книга1.xlsm" и запустите макрос "Main".
P.S. Перед открытием выбранного файла можно добавить требуемые проверки.
Вложения
Тип файла: rar Пример_2.rar (22.3 Кб, 65 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прибавление данніх из двух столбцов gavrylyuk Microsoft Office Excel 3 01.08.2008 11:40
Нахождение совпадений в двух книгах Professor Hubert Microsoft Office Excel 5 25.07.2008 12:59
Отображение в форме и таблице двух столбцов подстановок smoky Microsoft Office Access 5 01.07.2008 09:27
Сравнение двух списков lelik759 Microsoft Office Excel 7 13.04.2008 22:19
Как извлечь из двух столбцов несовпадающие строки Shavminator Microsoft Office Excel 4 28.12.2007 12:23