Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Изменение кода макросом Добавлено: 23.10.07 02:21  

Автор вопроса:  DrugON | ICQ: nospam 
Не знаю - правильно ли назвал вопрос. Суть вот в чем. Существует огромное количество сводок. При открытии каждой (при помощи Private Sub WorkBook_Open()) открывается еще одна, связанная с ней, книга. Дело в том, что изменился путь этой самой книги. С новыми сводками все в порядке, а вот каким образом изменить Private Sub WorkBook_Open() в старых? В идеале мне все видится так- задается начальная дата, открывается сводка за эту дату, в Private Sub WorkBook_Open() вносится нужное изменение, книга сохраняется, закрывается, к начальной дате прибавляется 1, открывается следующая и т.д. Вручную я буду это делать до китайской Пасхи.

И второй вопрос, дабы не плодить топики - можно ли таким же образом (т.е. массово) импортировать в книги модули?
Главное - сама возможность, время выполнения не столь важно (понимаю, что это будет очень долго выполняться, если открывать каждую книгу). Заранее премного благодарен за советы!

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 Nytrogen



Вопросов: 18
Ответов: 186
 Профиль | | #1 Добавлено: 23.10.07 18:49
Импортировать модули в проект можно при помощи объекта VBProject:

ThisWorkbook.VBProject.VBComponents.Import путь/файлСКодомМодуля.bas

Для того чтобы это работало, в редакторе VBA необходимо установить ссылку на объект VBIDE:
в окне Tools/References нужно поставить галочку рядом с записью Microsoft Visual Basic Extensibility Library.

Также необходимо включить "доверие" всем макросам в самом Excel'е:
в окне Tools/Macro/Security/Trusted Publishers нужно поставить галочку Trust Access To Visual Basic Project.

Ответить

Номер ответа: 2
Автор ответа:
 Nomy



Вопросов: 0
Ответов: 2
 Профиль | | #2 Добавлено: 23.11.07 16:16
Алекс,

в Вашем случае лучше не привязываться жестко к пути, а брать его, скажем, из третьего файла - тогда, при смене путей, никаких программных изменений не понадобиться.

А тема очень полезная. У меня вопрос: с модулем все ок. А как можно добавить макрос программным способом не в модуль, а в определенный лист? форму? книгу?

Ответить

Номер ответа: 3
Автор ответа:
 DrugON



ICQ: nospam 

Вопросов: 10
Ответов: 53
 Профиль | | #3 Добавлено: 07.12.07 07:54
во-во... Иногда мне нужно внести изменение в модулях в большом количестве книг. Как-то ведь можно импортировать модули программно?

Ответить

Номер ответа: 4
Автор ответа:
 Nomy



Вопросов: 0
Ответов: 2
 Профиль | | #4 Добавлено: 10.12.07 13:10
Именно так, как описал Nytrogen - я сам попробовал, все ок.

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

Заменять код - не лучший стиль для программирования ИМХО..

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам