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

Как изменить название активного листа в закрытой книге?

27.06.2020, 12:43. Показов 8613. Ответов 20

Author24 — интернет-сервис помощи студентам
Подскажите, есть ли макрос или скрипт, который может изменить название активного листа в закрытой книге? (В ручную очень долго).
P.S. Нужно изменить название листа, который появляется при открытии книги.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.06.2020, 12:43
Ответы с готовыми решениями:

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

Как изменить название заголовка активного JFrame?
как в JFrame реализовать смену статического титула который задется начальным конструктором при...

Адресс активной колонки и название активного Листа
Всем доброго времени суток! Как обычно с глупым вопросом :-( Есть макрос, который вводит курсс с...

Как задать условие проверки того, что вводимое название листа уже есть в этой книге? (Да-да, я не шучу)
Простецкую лабу по VBA нужно усложнить тем, чтобы в случае того, что при создании листа расчета и...

20
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
27.06.2020, 13:51 2
SantaSpb, а не проще загрузить книгу, изменить нужный лист и закрыть с сохранением? Сомнительно, что можно изменить имя, активного в последней загрузке этой книги, листа. Да и стоит ли над этим биться?
0
0 / 0 / 0
Регистрация: 30.05.2020
Сообщений: 43
27.06.2020, 14:39  [ТС] 3
Добавлено через 34 секунды
Burk, Можно, но когда 100-200 книг, становится лень их открывать.
0
332 / 181 / 100
Регистрация: 01.04.2020
Сообщений: 515
27.06.2020, 14:41 4
Мне иногда приходится работать с эксель книгами со множеством листов.
Самой большой книгой, с которой я работал была книга в которой более 700 листов.
И да, неудобно с такой книгой работать.
Пока я книгу не розобю и не вытяну из неё интересующие меня листы в отдельные книги,
работаю с книгой так:
открываю книгу, открываю среду VBA (нажав клавиши <Alt>+<F11>),
и в окошко Immediate пишу например:
Sheets("SO 53-35-18.3").Activate
0
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
27.06.2020, 15:13 5
SantaSpb, я не говорю про открытие и закрытие вручную, конечно, макросом, работать с названиями книг по шаблону. Запустил макрос и пьешь кофе.
0
332 / 181 / 100
Регистрация: 01.04.2020
Сообщений: 515
27.06.2020, 18:29 6
Лучший ответ Сообщение было отмечено SantaSpb как решение

Решение

SantaSpb, наверно вы хотели что то такое:

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
25
26
27
28
29
30
31
32
33
34
35
Sub SantaSpb()
'   устанавливаем название листа,
'   который появляется при открытии книги
 
Dim FSO, Fil, FolderPath
Set FSO = CreateObject("Scripting.FileSystemObject")
 
'   папка с книгами:
FolderPath = "D:\VBA\_XXX\"
 
For Each Fil In FSO.getfolder(FolderPath).Files
    'Debug.Print Fil.Name
    '   отфильтровываем файлы с расширением ".xlsx":
    If Fil.Name Like "*" & ".xlsx" Then
        '   открываем книгу:
        Workbooks.Open (Fil)
        With ActiveWorkbook
            
            '   если делать активным первый лист книги:
            .Worksheets(1).Activate
            
            '   или если знаем название листа и такое же
            '   название находится во всех книгах в папке:
            '.Worksheets("Лист1").Activate
            
            Application.EnableEvents = False
                '   сохраняем:
                .Save
            Application.EnableEvents = True
            '   закрываем:
            .Close
        End With
    End If
Next
End Sub
1
0 / 0 / 0
Регистрация: 30.05.2020
Сообщений: 43
29.06.2020, 15:52  [ТС] 7
elixi, Добрый день, подскажите пожалуйста, в чём тут ошибка?
Миниатюры
Как изменить название активного листа в закрытой книге?  
0
Одесса - Украина
457 / 149 / 54
Регистрация: 01.04.2020
Сообщений: 487
29.06.2020, 18:07 8
SantaSpb, день добрый в 9-й строке пишете путь к своей папке.

Код
FolderPath = "D:\VBA\_XXX\"
' вот здесь указываете путь к своей папке где лежат ваши файлы.
0
0 / 0 / 0
Регистрация: 30.05.2020
Сообщений: 43
30.06.2020, 08:31  [ТС] 9
MikeVol, поменял, но всё равно ошибка.
0
ᴁ®
Эксперт MS Access
3858 / 2187 / 459
Регистрация: 13.12.2016
Сообщений: 7,491
Записей в блоге: 5
30.06.2020, 09:10 10
Цитата Сообщение от SantaSpb Посмотреть сообщение
поменял, но всё равно ошибка.
Видимо VBA не ваше...
0
0 / 0 / 0
Регистрация: 30.05.2020
Сообщений: 43
30.06.2020, 10:30  [ТС] 11
АЕ, Возможно. Поэтому я и сижу на форуме и спрашиваю, пытаюсь разобраться.
0
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
30.06.2020, 10:37 12
Цитата Сообщение от SantaSpb Посмотреть сообщение
Нужно изменить название листа, который появляется при открытии книги
Ключевые слова - при открытии, вот и активируйте первый лист, после открытия любой книги.

Скопировать строго в модуль книги ThisWorkbook(ЭтаКнига) личной книги макросов "Personal.xls(b)" или любой другой книги, расположенной в стандартной или альтернативной папке автозагрузке.

Visual Basic
1
2
3
4
5
6
7
8
9
Private WithEvents xlApp As Application
 
Private Sub Workbook_Open()
    Set xlApp = Application
End Sub
  
Private Sub xlApp_WorkbookOpen(ByVal Wb As Workbook)
    Wb.Worksheets(1).Activate
End Sub
1
ᴁ®
Эксперт MS Access
3858 / 2187 / 459
Регистрация: 13.12.2016
Сообщений: 7,491
Записей в блоге: 5
30.06.2020, 10:41 13
SantaSpb, Ошибка -путь не найден.
Путь, который вы задали существует?
0
0 / 0 / 0
Регистрация: 30.05.2020
Сообщений: 43
30.06.2020, 10:49  [ТС] 14
АЕ, Конечно существует, с ошибкой уже разобрался. Пытаюсь вникнуть в саму работоспособность макроса.

Добавлено через 12 секунд
pashulka, Спасибо, попробую.
0
0 / 0 / 0
Регистрация: 30.05.2020
Сообщений: 43
30.06.2020, 12:43  [ТС] 15
Может кто подскажет.
Разобрался как работает макрос, но есть ли возможность с помощью данного макроса поменять название.


Макрос делает активным лист, который я укажу. Но задача немного друга. У меня есть перечень книг и в них уже существует нужный активный лист. В каждой книге он должен называться "1". Но есть книги, в которых этот активный лист называется иначе. И можно ли поменять с помощью макроса название активного листа.
Пример в приложение.
Вложения
Тип файла: xlsx Иванов.xlsx (8.6 Кб, 5 просмотров)
Тип файла: xlsx Петров А.xlsx (8.6 Кб, 4 просмотров)
0
2739 / 1714 / 778
Регистрация: 23.03.2015
Сообщений: 5,429
30.06.2020, 13:14 16
elixi,
Цитата Сообщение от elixi Посмотреть сообщение
Самой большой книгой, с которой я работал была книга в которой более 700 листов.
Интересны параметры вашего компа.....
0
839 / 470 / 79
Регистрация: 18.05.2016
Сообщений: 1,253
Записей в блоге: 4
30.06.2020, 13:22 17
Цитата Сообщение от SantaSpb Посмотреть сообщение
Но есть книги, в которых этот активный лист называется иначе. И можно ли поменять с помощью макроса название активного листа.
активный лист:
Visual Basic
1
ActiveWorkbook.ActiveSheet.Name
1
332 / 181 / 100
Регистрация: 01.04.2020
Сообщений: 515
01.07.2020, 00:44 18
Цитата Сообщение от SantaSpb Посмотреть сообщение
можно ли поменять с помощью макроса название активного листа
Visual Basic
1
2
    If ActiveSheet.Name <> "1" Then        ' если активный лист неназывается как хотим, тогда ему название поменяем ActiveSheet.Name = "1"
    End If
Добавлено через 1 минуту
Visual Basic
1
2
3
4
5
' ПОПРАВКА
' если активный лист неназывается как хотим, тогда ему название поменяем 
If ActiveSheet.Name <> "1" Then        
    ActiveSheet.Name = "1"
End If
Добавлено через 7 минут
Цитата Сообщение от Narimanych Посмотреть сообщение
Интересны параметры вашего компа.....
даже не знаю, комп хороший, не мой а фирменный
и против того что у меня дома, действительно летает
1
6944 / 2849 / 548
Регистрация: 19.10.2012
Сообщений: 8,721
01.07.2020, 11:56 19
Вообще прежде чем решать задачу - нужно бы её знать
Потому что вот с самого начала говорилось про активный лист, но упорно активировали первый... Почему?
Теперь не глядя активный переименовываете в "1", а может там уже есть такой лист? Может просто юзер накосячил и сохранил книгу с другим активным листом?
Ну а если например эти книги генерит некий софт и юзеры там ни к чему не притрагиваются, и точно нет листов с именем "1", и стоит задача переименовать - то конечно...
1
0 / 0 / 0
Регистрация: 30.05.2020
Сообщений: 43
01.07.2020, 14:40  [ТС] 20
MikeVol, Да, так и сделалelixi,
Добрый день, можете подсказать куда нужно вставить Ваш код:
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
' ПОПРАВКА
' если активный лист неназывается как хотим, тогда ему название поменяем 
If ActiveSheet.Name <> "1" Then        
    ActiveSheet.Name = "1"
End If
В данном макросе? 
Sub SantaSpb()
'   устанавливаем название листа,
'   который появляется при открытии книги
 
Dim FSO, Fil, FolderPath
Set FSO = CreateObject("Scripting.FileSystemObject")
 
'   папка с книгами:
FolderPath = "C:\Users\Desktop\TEST"
 
For Each Fil In FSO.getfolder(FolderPath).Files
    'Debug.Print Fil.Name
    '   отфильтровываем файлы с расширением ".xlsx":
    If Fil.Name Like "*" & ".xlsx" Then
        '   открываем книгу:
        Workbooks.Open (Fil)
        With ActiveWorkbook
            
            '   если делать активным первый лист книги:
            .Worksheets(3).Activate
            
            '   или если знаем название листа и такое же
            '   название находится во всех книгах в папке:
            '.Worksheets("Лист1").Activate
            If ActiveSheet.Name <> "1" Then
    ActiveSheet.Name = "1"
End If
 
            
            Application.EnableEvents = False
                '   сохраняем:
                .Save
            Application.EnableEvents = True
            '   закрываем:
            .Close
        End With
    End If
Next
End Sub
Добавлено через 10 минут
elixi, Уже не надо, разобрался.
0
01.07.2020, 14:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.07.2020, 14:40
Помогаю со студенческими работами здесь

Как правильно обратиться к ячейкам активного листа?
Здравствуйте! Написал такой код: Sub Check() Dim iWS As Worksheet For Each iWS In...

Как узнать имя активного листа в Excel-е?
И еще вопрос до кучи... Как узнать имя активного листа в Excel-е?

Sheets.count в закрытой книге Excel...
Привет всем! Недавно была похожая тема, но там не касались вопроса перебора по листам закрытой...

При создании нового листа произвести проверку на существование вводимого имени листа в текущей книге EXCEL
При создании нового листа, произвести проверку на существование вводимого имени листа в текущей...

Как скопировать данные с активного листа книги в новую книгу?
Как можно программно скопировать данные из активного листа одной книги во вновь созданную?

Пользовательские функции VBA обновление при закрытой книге
Добрый вечер. Есть некая функция, не важно какая (ниже просто пример), которая берет данные из...


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

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