Я написал макрос сохранения копии файла, который работает и в Excel, и в Word. Проблема в том, что сейчас он хранится в двух разных файлах-шаблонах: • Normal.dotm для Word; • PERSONAL.XLSB для Excel.
Соответственно, если я улучшаю один - мне приходится дублировать изменения в другом.
ВОПРОС: есть ли способ подключения какой-то общей библиотеки, или я не знаю чего, чтобы макросы загружались оттуда? Чтобы это был один общий файл, к которому обращались бы и Word, и Excel.
__________________________________________ РЕШЕНИЕ (2020 - никак руки не доходили написать):
Оказалось, всё проще)) Берёшь код, и пишешь его где-то в одном месте (проекте) - либо в Word, либо в Excel; и уже из него - вызываешь какие тебе надо документы (из Экселя - Вордовские, почему бы и нет), как угодно их форматируешь и т.д.; события всякие тоже там будут работать (т.е. события Ворда - пишешь тоже в Экселе; в общем, всё в одном проекте).
))) Можно, конечно, и фигню 2019го года допилить - мелкомягким назло XD но пока оказалось не обязательно)
__________________________________________ РЕШЕНИЕ (2019):
Код
Sub zSubQ1()
Dim QPathQ0 As String
Dim QPathQ1 As String
QPathQ0 = "" 'путь к общей папке с .bas \ .cls и т.п. файлами.
Dim zQ0 As Object: Set zQ0 = CreateObject("Scripting.FileSystemObject")
Dim zQ1 As Object: Set zQ1 = zQ0.GetFolder(QPathQ0).Files
Dim zQ(0 To 1) As Object
For Each zQ(0) In zQ1 'просматривает каждый файл в общей папке.
QPathQ1 = QPathQ0 & zQ(0).Name
Set zQ(1) = ThisWorkbook.VBProject.VBComponents.Import(QPathQ1) '*
'''Select Case ?..
zQ(1).Name = Replace(zQ(0).Name, ".", "") '*
Next
'*: без этого - VBA импортирует их с именем по умолчанию, типа "Module1".
End Sub
Ещё не тестировал, но идея в том, чтобы при каждом запуске документа (Excel \ Word) - подгружать в его проект файлы из общего каталога; а при выходе из документа - удалять их (пока тоже за кадром).
Ремарка "'''Select Case ?.." - это недописанное условие проверки.
ДА, и у Word'а проблемы с Document_Open - когда создаёшь документ путём запуска WINWORD.EXE (т.е., при первом запуске приложения); мне помогла такая вот простенькая заплатка (не пугайтесь тонны текста - там, в общем-то, готовая копипаста): https://wordmvp.com/FAQs/MacrosVBA/PseudoAutoMacros.htm
RazorBaze, Посчитайте трудозатраты на то, что вы хотите и на Копи-Пэст кода в два места. Что-то мне подсказывает что последнее будет эффективнее, а со временем Вы отладите код и перестанете менять, что сделает первый вариант совсем бессмысленным.
Общей библиотеки для Word и Excel нет. Эти приложения даже устанавливать можно отдельно друг от друга. Поэтому встроенных возможностей нет - придется только самому что-то придумывать.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...