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

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

17.03.2021, 17:09. Показов 10248. Ответов 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
859 / 509 / 187
Регистрация: 09.03.2009
Сообщений: 1,722
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
859 / 509 / 187
Регистрация: 09.03.2009
Сообщений: 1,722
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
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru