Стив создает документы, требующие, чтобы имя файла документа было указано в заголовке и в юридических заголовках на первой и второй страницах документа. Он создал макрос, который после того, как имя файла введено в заголовок, копирует его и вставляет в поля текстовой формы в подписи в нужных местах. Его следующий этап сборки документа — сохранить документ с помощью команды «Сохранить как». Документ должен быть сохранен с тем же именем файла, которое указано в заголовке и заголовках.

Делая это вручную, Стив отображает диалоговое окно «Сохранить как», вставляет в него имя файла и нажимает «Сохранить». Он попытался создать код макроса, чтобы добавить этот шаг «Сохранить как», но не может понять, как это сделать. Когда Word записывает ручные шаги, Стив получает что-то вроде следующего:

ActiveDocument.SaveAs FileName:="04562.sw.docx

Это показывает, что Word записывает конкретное имя файла, используемое при выполнении ручных шагов, но Стив хочет использовать другое имя файла в зависимости от того, что находится в заголовке документа. Эта информация (имя файла) оказывается в буфере обмена при запуске макроса, поэтому также можно получить информацию из буфера обмена, но Стив также не знает, как это сделать.

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

Dim strTemp As String Dim MyData As DataObject Set MyData = New DataObject

MyData.GetFromClipboard strTemp = MyData.GetText(1)

ActiveDocument.SaveAs FileName:=Trim(strTemp) & ".docx"

Пока у вас есть текстовая строка в буфере обмена, которую вы хотите использовать для своего имени файла, этот код должен работать. Он даже добавляет расширение .Doc в конец строки в буфере обмена. Этот код требует, чтобы вы установили ссылку на Microsoft Forms в редакторе VBA.

(Выберите «Ссылки» в меню «Инструменты» редактора.)

Конечно, следует отметить, что вы можете пересмотреть свой подход к этому макросу. Фактически, вы сможете избавиться от большей части своего кода, если примете совершенно другой подход. Например, вы можете попросить людей сначала сохранить документ, а затем ссылаться на имя файла в самом документе с помощью полей. (Для этой цели можно использовать поле FILENAME.)

Вместо использования макроса для копирования имени файла на первую и вторую страницы документа вы также можете использовать определенный стиль (например, DocTitle или DocName) для ссылки на имя файла, а затем использовать поле STYLEREF в другом месте вашего документ, чтобы сделать ссылку на это имя. Таким образом, его нужно ввести только один раз, и никакой макрос не требуется. Вы можете найти несколько способов повторения данных в разных областях документа на этой странице сайта Word MVP:

http://gregmaxey.mvps.org/Repeating_Data.htm

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

Затем макрос может назначить имя файла полю TITLE, и в любом месте документа, в котором есть ссылка на поле TITLE, будет автоматически отображаться имя файла, введенное пользователем.

_Примечание: _

Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

WordTips — ваш источник экономичного обучения работе с Microsoft Word.

(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (10809) применим к Microsoft Word 2007, 2010, 2013 и 2016. Вы можете найти версию этого совета для более старого интерфейса меню Word здесь:

link: / word-Saving_in_a_Macro_Using_a_Desired_File_Name [Сохранение в макросе с использованием желаемого имени файла].