Предотвратить сохранение шаблона Word;Word документ создан из Excel - PullRequest
0 голосов
/ 02 января 2019

Я использую VBA в Excel для создания этикетки доставки в Word из шаблона Word. Однажды, после того, как документ Word был успешно открыт и заполнен моими данными, я случайно сохранил свой исходный шаблон, когда закрыл его.

Я хочу помешать пользователю сделать это. Если они закрывают документ Word, не сохранив его в первую очередь, я хочу, чтобы их приглашали в SaveAs, а не сохранять поверх существующего шаблона, и я хочу, чтобы SaveAs предлагал по умолчанию использовать файл .doc или .docx, а не шаблон .dotx. файл. Если они нажимают кнопку «Сохранить» или Ctrl + S вместо того, чтобы просто закрыть документ, я хочу, чтобы вместо того, чтобы перезаписать мой шаблон, должно появиться то же приглашение SaveAs.

Для справки, я включу код, который открывает мой шаблон Word. Я объявляю свои объекты, используя Object вместо Word.Application, чтобы предотвратить пропущенные ошибки ссылок для пользователей, у которых нет ссылок на библиотеку объектов Word, настроенную на их компьютерах. Это будет использоваться на нескольких разных компьютерах, и они не все имеют одинаковую версию Office, поэтому, если вы можете придумать что-нибудь еще, что я могу сделать для обеспечения совместимости, я хотел бы услышать это.

Поскольку это связано с сохранением документа Word, сгенерированного из книги Excel, я не уверен, как написать для этого обработку событий. Любая помощь могла бы быть полезна. Спасибо.

Dim wdApp As Object
Dim objRange As Object
Dim objDoc As Object

Set wdApp = CreateObject("Word.Application")
Set objDoc = wdApp.Documents.Open("[template file location]")

With wdApp

    .Visible = True  
    .Activate  

   'Code that places strings at bookmark locations
    Set objRange = objDoc.Bookmarks("bookmarkName").Range  
    objRange.InsertAfter (stringName)  

End With

1 Ответ

0 голосов
/ 02 января 2019

Не используйте Set objDoc = wdApp.Documents.Open ("[расположение файла шаблона]"). Правильный синтаксис должен использовать

Set objDoc = wdApp.Documents.Add("[template file location]")

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...