Страницы: 1
RSS
общие макросы для Excel и Word
 
Добрый день!

Я написал макрос сохранения копии файла, который работает и в 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 - 13.12.2020 16:38:39
 
RazorBaze,  Посчитайте трудозатраты на то, что вы хотите и на Копи-Пэст кода в два места. Что-то мне подсказывает что последнее будет эффективнее, а со временем Вы отладите код и перестанете менять, что сделает первый вариант совсем бессмысленным.
Изменено: БМВ - 20.02.2019 19:51:21
По вопросам из тем форума, личку не читаю.
 
Общей библиотеки для Word и Excel нет. Эти приложения даже устанавливать можно отдельно друг от друга. Поэтому встроенных возможностей нет - придется только самому что-то придумывать.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, Дмитрий, VBS, и вызов через шелл :-)
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх