Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/47: Рейтинг темы: голосов - 47, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 05.10.2020
Сообщений: 12
1
Excel

Обращение к открытой книге

17.03.2021, 17:09. Показов 8468. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток!
С помощью интернета я смог написать небольшой макрос, задача которого состоит в том, чтобы открыть определенную книгу и с ней сравнить активную.
Макрос работает, но никак не могу исправить одну строчку.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub Sravni()
 
Dim i As Long
Set w2 = Workbooks.Open("Y:\Мин макс детали\Min_max.xlsx")
 
 
    Application.ScreenUpdating = False
    Workbooks("Spec.xlsx").Sheets(1).Activate
    With Workbooks("Min_max.xlsx").Sheets(1)
        Columns("B").Interior.ColorIndex = xlNone:
        .Columns("A").Interior.ColorIndex = xlNone:
        For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
            If Cells(i, "B") <> "" Then
                If Cells(i, "B") = .Cells(i, "A") Then
                    Cells(i, "B").Interior.ColorIndex = 6: Cells(i, "C") = 0
                    .Cells(i, "A").Interior.ColorIndex = 6: .Cells(i, "C") = 0
                End If
            End If
        Next
    End With
 
Workbooks("Min_max.xlsx").Close False
 
End Sub
Visual Basic
1
Workbooks("Spec.xlsx").Sheets(1).Activate
в этой строчке макрос берет определенную книгу, а мне нужно чтобы он работал с активной книгой и не привязывался к названию
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.03.2021, 17:09
Ответы с готовыми решениями:

Доступ к внешней открытой книге через ADO
Воспользовался нижеприведенным кодом одного из профессиональных консультантов нашего форума...

Удаление всех пробелов столбца листа на уже открытой другой книге
Как удалить из ячеек столбца A:A листа другой уже открытой книги все пробелы которые встречаются....

Оставлять объект в памяти в открытой книге Excel после завершения всех макросов
Создал пользовательский класс для объекта, в который я считываю исходные данные. Процесс их...

Обращение к ячейкам открытой книги (не текущей)
Макрос должен запускаться, спрашивать - какой файл ему взять. Открыть его, разделить определенную...

7
малоболт
1314 / 498 / 211
Регистрация: 30.01.2020
Сообщений: 1,218
17.03.2021, 17:34 2
Цитата Сообщение от Nsekins Посмотреть сообщение
Workbooks("Spec.xlsx").Sheets(1).Activate
Ну, замените на
Код
ActiveWorkbook.Sheets(1).Activate
Но я бы советовал взять 2 переменные, в одну (наприvер назову её aWbSh1) записать проверяемый лист текущей активной книги: aWbSh1=ActiveWorkBook.Sheets(НомерНужногоЛиста)
а в другую (назову например MinMaxWbSh1) MinMaxWbSh1 = Workbooks("Min_max.xlsx").Sheets(1)
И дальше обращаясь к Cells указывать конкретно переменную нужного листа, на котором эта ячейка. Поверьте - гораздо удобнее будет и меньше придётся искать почему вдруг перестало работать, хоть до этого работало как часы на другой машине у другого пользователя.
0
11513 / 3799 / 681
Регистрация: 13.02.2009
Сообщений: 11,217
17.03.2021, 17:39 3
на коленке писано: (не проверено)
Visual Basic
1
2
3
4
5
6
Dim w1 As Workbook
Set w1 = ActiveWorkbook
 
    Set w2 = Workbooks.Open("Y:\Мин макс детали\Min_max.xlsx")
    Application.ScreenUpdating = False
    Workbooks(w1.Name).Sheets(1).Activate
Добавлено через 1 минуту
Punkt5,
после этого активной будет вновь открытая книга. ИМХО
Цитата Сообщение от Nsekins Посмотреть сообщение
Set w2 = Workbooks.Open
Добавлено через 1 минуту
Цитата Сообщение от Alex77755 Посмотреть сообщение
Visual Basic
1
Workbooks(w1.Name).Sheets(1).Activate
и, скорей всего надо будет сначала активировать книгу, а потом лист
0
0 / 0 / 0
Регистрация: 05.10.2020
Сообщений: 12
17.03.2021, 18:07  [ТС] 4
Цитата Сообщение от Punkt5 Посмотреть сообщение
ActiveWorkbook.Sheets(1).Activate
Так я пробовал, у меня была ошибка

Цитата Сообщение от Alex77755 Посмотреть сообщение
на коленке писано: (не проверено)
и все же оно работает. Спасибо большое, очень выручили!
0
834 / 484 / 186
Регистрация: 09.03.2009
Сообщений: 1,664
17.03.2021, 18:10 5
Зачем вообще активировать? Если открываем по указателям, активная вроде ж не изменится и останется на экране после обработки и закрытия того файла?
Select и Activate при обработке макросом - зло. Исключение - некоторые оконные операции, типа ActiveWindow.Zoom = 85
0
11513 / 3799 / 681
Регистрация: 13.02.2009
Сообщений: 11,217
17.03.2021, 18:36 6
Цитата Сообщение от Zeag Посмотреть сообщение
Зачем вообще активировать?
Zeag,
Справедливо! Но не на 100%
Некоторые методы не работают
0
834 / 484 / 186
Регистрация: 09.03.2009
Сообщений: 1,664
17.03.2021, 18:50 7
Alex77755, например? Я себе сохраню, чтобы в другой раз не рыпаться. Помню, что на ActiveWindow.Zoom = 85 нарвался и пока не прочел, не работало. А что еще?
0
5 / 5 / 0
Регистрация: 02.09.2020
Сообщений: 32
22.03.2021, 16:21 8
Еще ActiveWorkbook приходится применять после Workbooks(*).Sheets(*).Copy, когда создаётся некий Book1.
0
22.03.2021, 16:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.03.2021, 16:21
Помогаю со студенческими работами здесь

Excel обращение к книге по codename
Даров, ребя. Можно ли напрямки обраться по коднейму к определённой книге из другой? А то...

Запись/чтение в открытой книге Эксель
Доброго времени суток. Я новичок в Python, пытаюсь автоматизировать небольшой процесс...

Нужно чтобы столбик в одной книге преобразовать в строку в другой книге
Здравствуйте. Нет ли какого изящного решения, чтобы столбик в одной книге преобразовать в строку в...

Как организовать поиск в другой книге или в этой же книге, поиск по слову на определенных листах
Всем привет!) Как организовать поиск в другой книге или в этой же книге, поиск по слову на...

Запретить прямое обращение к скрипту, но разрешить обращение через RewriteEngine
основной файл у меня index.php и в нем уже определяется какой файл подключить, к примеру ...

Хостинг с открытой БД
Добрый день. Подскажите есть ли бесплатный хостинг с БД чтоб ее можно было редактировать (создавать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru