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

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

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

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

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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.03.2021, 17:09
Ответы с готовыми решениями:

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

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

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

7
малоболт
1328 / 510 / 213
Регистрация: 30.01.2020
Сообщений: 1,244
17.03.2021, 17:34
Цитата Сообщение от Nsekins Посмотреть сообщение
Workbooks("Spec.xlsx").Sheets(1).Activat e
Ну, замените на
Code
1
ActiveWorkbook.Sheets(1).Activate
Но я бы советовал взять 2 переменные, в одну (наприvер назову её aWbSh1) записать проверяемый лист текущей активной книги: aWbSh1=ActiveWorkBook.Sheets(НомерНужног оЛиста)
а в другую (назову например MinMaxWbSh1) MinMaxWbSh1 = Workbooks("Min_max.xlsx").Sheets(1)
И дальше обращаясь к Cells указывать конкретно переменную нужного листа, на котором эта ячейка. Поверьте - гораздо удобнее будет и меньше придётся искать почему вдруг перестало работать, хоть до этого работало как часы на другой машине у другого пользователя.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
17.03.2021, 17:39
на коленке писано: (не проверено)
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  [ТС]
Цитата Сообщение от Punkt5 Посмотреть сообщение
ActiveWorkbook.Sheets(1).Activate
Так я пробовал, у меня была ошибка

Цитата Сообщение от Alex77755 Посмотреть сообщение
на коленке писано: (не проверено)
и все же оно работает. Спасибо большое, очень выручили!
0
860 / 510 / 187
Регистрация: 09.03.2009
Сообщений: 1,731
17.03.2021, 18:10
Зачем вообще активировать? Если открываем по указателям, активная вроде ж не изменится и останется на экране после обработки и закрытия того файла?
Select и Activate при обработке макросом - зло. Исключение - некоторые оконные операции, типа ActiveWindow.Zoom = 85
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
17.03.2021, 18:36
Цитата Сообщение от Zeag Посмотреть сообщение
Зачем вообще активировать?
Zeag,
Справедливо! Но не на 100%
Некоторые методы не работают
0
860 / 510 / 187
Регистрация: 09.03.2009
Сообщений: 1,731
17.03.2021, 18:50
Alex77755, например? Я себе сохраню, чтобы в другой раз не рыпаться. Помню, что на ActiveWindow.Zoom = 85 нарвался и пока не прочел, не работало. А что еще?
0
5 / 5 / 0
Регистрация: 02.09.2020
Сообщений: 32
22.03.2021, 16:21
Еще ActiveWorkbook приходится применять после Workbooks(*).Sheets(*).Copy, когда создаётся некий Book1.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.03.2021, 16:21
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru