Microsoft Word Сохранить как макрос, возвращающий поврежденный файл - PullRequest
0 голосов
/ 01 октября 2018

У меня есть текстовый документ, который я использую в качестве шаблона для других проектов.Файл сохраняется в формате .docx и содержит макрос для сохранения документа с именем файла, зависящим от поля управления содержимым под названием «STATE».Я бы предпочел макрос сохранить документ без включенного макроса.Когда я запускаю макрос, документ сохраняется в правильном месте файла, однако при открытии я получаю сообщение об ошибке:

Приносим извинения.Мы не можем открыть FILE LOCATION, потому что обнаружили проблему с его содержимым.Сведения об ошибке недоступны.

Я предполагаю, что где-то в моем коде есть ошибка.Я использую Word 2013. Буду признателен за любую помощь!

Sub Silent_save_to_DOC()

Dim strText As String, strDate As String, strDrop As String

strText = ActiveDocument.SelectContentControlsByTitle("STATE")(1).Range.Text

Dim strFilename As String
strFilename = "C:\Users\Tom\Desktop\Quote - " & strText & ".docx"
ThisDocument.SaveAs strFilename

End Sub

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

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

Dim strText As String, strFilename As String
With ActiveDocument
  strText = .SelectContentControlsByTitle("STATE")(1).Range.Text
  strFilename = "C:\Users\Tom\Desktop\Quote - " & strText & ".docx"
  .SaveAs2 FileName:=strFilename, FileFormat:=wdFormatXMLDocument
End With
0 голосов
/ 01 октября 2018

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

Используйте настоящий файл шаблона - * .dotm - для создания ваших документов.Шаблон может содержать макросы, которые не будут скопированы в документ.

Если вы хотите отсоединить шаблон (с макросами) от документа, вы можете прикрепить шаблон Normal к документу (ActiveDocument.AttachedTemplate = NormalTemplate).

Когда выиспользуйте SaveAs и обязательно укажите формат файла , используя параметр FileFormat, а не только имя файла.Для файла docx это будет ^ wdFormatXMLDocument`.

Делать не использовать ThisDocument.SaveAs, так как ThisDocument относится к документу, содержащему макрос.Вместо этого используйте ActiveDocument, если вы не можете использовать конкретный Document объект.

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