0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 3
1

Автоматический запуск VBA при запуске любого Excel

18.04.2014, 17:50. Показов 6974. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!

Уже прочитал кучу инфы по поводу автоматического запуска, но что то все не хочет взлетать. Задача какая, есть скрипт, к примеру, который делает определенные модификации с листом к примеру вот:
Visual Basic
1
2
3
4
5
6
sub test()
    Range("A1:T10000").Select 'Выбираем лист
    Selection.UnMerge 'Делаем unmerge
    Range("C:C,D:D,I:I,K:K,L:L,N:N,O:O,P:P,R:R,T:T,G:G").Select 'выбираем ненужные колонки
    Selection.Delete Shift:=xlToLeft 'Удаляем колонки
end sub
Он должен выполняться при запуске любого файла Excel.

Что пробовал:
1. В книге PERSONAL.XLSB, модуль Thisworkbook создать
Visual Basic
1
2
3
Private Sub Workbook_Open()
Call Test
End Sub
В результате при открытии любого файла Excel, я как понял, сначала открывается книга (но не лист), потом запускается макрос, так как лист не открылся - выдается ошибка(скриншот 1 и 2), потому что не к чему применять команды.
Ссылки удалены, читайте правила и это

2. Тоже самое происходит и с Auto_open

Подскажите может я что то не так делаю? Как можно сделать так чтобы скрипт обрабатывал любые Excel файлы при открытии?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.04.2014, 17:50
Ответы с готовыми решениями:

Автоматический запуск браузера с рекламным сайтом 12kotov.ru при запуске системы
Доброе время суток. Ни так давно при запуске системы стал запускаться браузер с сайтом 12kotov.ru....

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

Автоматический запуск формы (не юзерформы VBA, а встроенной) при открытии листа
В Excel есть прекрасная возможность "Создать форму" из существующей таблицы. Причем форма создается...

Автоматический запуск макроса - VBA
Добрый день! Помогите написать макрос которий будет запускатся только при запуске файла по маске...

5
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
18.04.2014, 19:31 2
Т.е. при открытии любого файла в нём на активном в момент открытия листе должна удаляться часть столбцов?
Т.е. если хочешь хоть что-то сделанное в Экселе сохранить - нужно перед закрытием/сохранением файла не забыть активировать пустой лист?
А все чужие файлы вообще открывать нет смысла - оригинала не увидим...
Чушь какая...
0
15145 / 6418 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
18.04.2014, 19:35 3
PaulSol, в модуль ЭтаКнига Personal
Visual Basic
1
2
3
4
5
6
7
8
9
10
Dim WithEvents app As Application
 
Private Sub app_WorkbookOpen(ByVal Wb As Workbook)
Range("A1:T10000").UnMerge 'Делаем unmerge
Range("C:C,D:D,I:I,K:K,L:L,N:N,O:O,P:P,R:R,T:T,G:G").Delete Shift:=xlToLeft 'Удаляем колонки
End Sub
 
Private Sub Workbook_Open()
Set app = Application
End Sub
Добавлено через 1 минуту
И обратите внимание на замечание Hugo121. Может быть, применять удаление не ко всем книгам, а проверять их название или путь?
0
0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 3
19.04.2014, 13:59  [ТС] 4
Казанский, этот вариант тоже уже опробовал, все равно почему то выдает ошибку ту же самую, вот скрины

Автоматический запуск VBA при запуске любого Excel

Автоматический запуск VBA при запуске любого Excel


Hugo121 Это просто маленький кусок кода, пример. На самом деле там есть проверка, по которой запускается макрос, так что не на все файлы это срабатывает, только на определенный тип. Просто если эти простые модификации заработают, значит и все остальное взлетит.
Пока не понятно как обойти эту ошибку
0
15145 / 6418 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
19.04.2014, 19:03 5
Лучший ответ Сообщение было отмечено PaulSol как решение

Решение

PaulSol, укажите явно объект, с кот. производятся действия. А то Range без указания родительского объекта относится к Activesheet, которого в этот момент нет:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim WithEvents app As Application
 
Private Sub app_WorkbookOpen(ByVal Wb As Workbook)
If Wb Is Me Then Exit Sub 'Personal не обрабатывать
With Wb.Worksheets(1)
  .Range("A1:T10000").UnMerge 'Делаем unmerge
  .Range("C:C,D:D,I:I,K:K,L:L,N:N,O:O,P:P,R:R,T:T,G:G").Delete Shift:=xlToLeft 'Удаляем колонки
End With
End Sub
 
Private Sub Workbook_Open()
Set app = Application
End Sub
1
0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 3
21.04.2014, 19:05  [ТС] 6
Спасибо огромное, проблема была в Activesheet, при указании явного объекта все отработала.
0
21.04.2014, 19:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.04.2014, 19:05
Помогаю со студенческими работами здесь

Workbook_Open() ··· запуск 1-го и более кодов при запуске «Excel»
Тут работники по цеху поделились замечательным кодом (я бы его назвал кодом дня) для `VBA`, всё...

Проблемы при запуске VBA-проекта в Excel на другом компьютере
Сделал программу на VBA под Excel, но при запуске на некоторых компьютерах она не идет из-за того,...

Как открыть книгу (Excel) из VBA и при этом отключить запуск макросов в ней
Есть самостоятельный документ (книга Excel с запуском макроса на открытие этой книги) - нужно из...

Автоматический запуск макроса на VB в Excel 2000
Привет всем:) У меня такой вопрос: что нужно сделать, что-бы написанный макрос автоматически...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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