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

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

17.03.2021, 17:09. Показов 9712. Ответов 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,241
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
11523 / 3810 / 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 / 508 / 187
Регистрация: 09.03.2009
Сообщений: 1,713
17.03.2021, 18:10
Зачем вообще активировать? Если открываем по указателям, активная вроде ж не изменится и останется на экране после обработки и закрытия того файла?
Select и Activate при обработке макросом - зло. Исключение - некоторые оконные операции, типа ActiveWindow.Zoom = 85
0
 Аватар для Alex77755
11523 / 3810 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
17.03.2021, 18:36
Цитата Сообщение от Zeag Посмотреть сообщение
Зачем вообще активировать?
Zeag,
Справедливо! Но не на 100%
Некоторые методы не работают
0
859 / 508 / 187
Регистрация: 09.03.2009
Сообщений: 1,713
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
Ответ Создать тему
Новые блоги и статьи
Создаем микросервисы с Go и Kubernetes
golander 02.07.2025
Когда я только начинал с микросервисами, все спорили о том, какой язык юзать. Сейчас Go (или Golang) фактически захватил эту нишу. И вот почему этот язык настолько заходит для этих задач: . . .
C++23, квантовые вычисления и взаимодействие с Q#
bytestream 02.07.2025
Я всегда с некоторым скептицизмом относился к громким заявлениям о революциях в IT, но квантовые вычисления - это тот случай, когда революция действительно происходит прямо у нас на глазах. Последние. . .
Вот в чем сила LM.
Hrethgir 02.07.2025
как на английском будет “обслуживание“ Слово «обслуживание» на английском языке может переводиться несколькими способами в зависимости от контекста: * **Service** — самый распространённый. . .
Использование Keycloak со Spring Boot и интеграция Identity Provider
Javaican 01.07.2025
Два года назад я получил задачу, которая сначала показалась тривиальной: интегрировать корпоративную аутентификацию в микросервисную архитектуру. На тот момент у нас было семь Spring Boot приложений,. . .
Содержание темы с примерами на WebGL
8Observer8 01.07.2025
Все примеры из книги Мацуды и Ли в песочнице JSFiddle Пример выводит точку красного цвета размером 10 пикселей на WebGL 1. 0 и 2. 0 WebGL 1. 0. Передача координаты точки из главной программы в. . .
Основы WebGL. Простой треугольник
8Observer8 01.07.2025
Простой треугольник без трансформаций. Для трансформаций можно использовать glMatrix, как в примере: https:/ / plnkr. co/ edit/ qT6ZTwvncLPRamK5?preview На русском: . . .
Полиглотные микросервисы на C# и .NET
ArchitectMsa 30.06.2025
Полиглотная архитектура появилась не из желания усложнить жизнь разработчикам. Она родилась из практической необходимости решать разные задачи наиболее эффективным способом. В одном из проектов. . .
Стратегии кеширования
Javaican 29.06.2025
Кеширование — это хранение часто запрашиваемых данных в быстром хранилище (обычно в памяти), чтобы не обращаться к более медленному первоисточнику. Казалось бы, все просто. Но за этой простотой. . .
Наблюдаемость приложений ASP.NET Core с OpenTelemetry, Prometheus и Grafana
ArchitectMsa 29.06.2025
Наблюдаемость (observability) – это ключевое свойство современной системы, позволяющее понимать её внутреннее состояние на основе внешних данных. Если мониторинг отвечает на вопрос "что случилось?",. . .
Четыре главных модели отношений классов в с++
russiannick 28.06.2025
Продолжаю крестовый поход против c++. ideone. com/ юзаю для проверки валидности кода. Насчитал 4 модели отношений классов: одиночный класс, равноправные классы, слейв - мастер, терминатор. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru