Задать имя файла ворд программно

Обновлено: 07.07.2024

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

Итак, загрузите редактор Word и выберите из меню Сервис (Tools) команду Макрос (Macro). Из открывшегося подменю выберите Редактор Visual Basic (Visual Basic Editor) или нажмите сочетание "горячих клавиш" Alt + F11 .

Перед вами откроется окно редактор Visual Basic с пустым правым окном (это окно именуется окном кода).

Вставьте в это окно следующий код:

Вместо letter вы можете написать свое название, более подходящее по смыслу к вашему документу, например Отчет .

Теперь осталось разместить на панели инструментов кнопку этого макроса (подробнее о том, как разместить кнопку макроса на панели инструментов, я писал в пункте 8 заметки Как расположить два открытых документа Word рядом: полезная макрокоманда).

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

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

Вы можете помочь в развитии сайта, сделав пожертвование:

--> Или помочь сайту популярной криптовалютой:

BTC Адрес: 1Pi3a4c6sJPbfF2sSYR2noy61DMBkncSTQ

ETH Адрес: 0x7d046a6eaa1bd712f7a6937b042e9eee4998f634

LTC Адрес: LUyT9HtGjtDyLDyEbLJZ8WZWGYUr537qbZ

USDT (ERC-20) Адрес: 0x7d046a6eaa1bd712f7a6937b042e9eee4998f634

Яндекс Деньги: 410013576807538

А тут весь список наших разных крипто адресов, может какой добрый человек пожертвует немного монет или токенов - получит плюсик в карму от нас :) Благо Дарим, за любую помощь! -->

Репутация: нет
Всего: нет

Проблема таков:
Пользователь в базе генерит отчет. Отчет автоматом формируется в Ворде. Пользователь может сохранить отчет, а может просто распечатать и закрыть Ворд, т.е. заранее неизвестно что с отчетом сделает пользователь.
Но если он его сохраняет, нужно чтобы имя файла которое предлагает Ворд, ну типа "Документ1", было определено из базы.
Т.е. как самому присвоить имя файла которое Водр выдаст как предложение для сохранения файла?
Что-то ни как не врублюсь.

Репутация: 15
Всего: 108

это свойство только для чтения.
поэтому можно или предварительно сохранять или открывать шаблон.
"Кто владеет информацией, тот владеет миром"
Уинстон Черчилль

Репутация: нет
Всего: нет

Да, хотел сделать таким образом, чтобы шаблон отчета копировался с нужным именем, потом новый шаблон открывается по закрытии удаляется.
Но Ворд все равно предлагает в качестве имени только "Документ1".
А предварительно сохранять, тоже проблема. В основном пользователи просто печатают, если все сохранять, то будет много лишних файлов.

Репутация: 15
Всего: 108

странно.. т.к. если открываешь файл, то при сохранение ворд предлагает старое имя. А если не открываешь, то зачастую по первому слову(словосочетанию). возможно ты что-то не правильно делаешь.

сохранять всё не обязательно. можно сохранять в один и тот же файл. или после использования удалять.

"Кто владеет информацией, тот владеет миром"
Уинстон Черчилль

Репутация: 15
Всего: 108

по поводу не правильности действий. к примеру, рассмотрим код, который меня попросили посмотреть:

что мы в неём видим. то что человек имеет что-то наподобии шаблона, которые перед использованием копирует в другую папку, далее открывает его, делает видимым эксель, а потом берёт и добавляет новую книгу и работает с ней. возникает вопрос. а зачем тогда шаблон?

посмотри, может у тебя подобная ситуация.

"Кто владеет информацией, тот владеет миром"
Уинстон Черчилль

Репутация: нет
Всего: нет

У меня шаблоны используются именно как шаблоны.
В определенных местах расставлены закладки, и в эти закладки вставляются данные.
Т.е. я открываю не сам файл, а файл на основе шаблона, Ворд соответственно предлагает имя "Документ1".
Почему не предлагает имя по первым сиволам, не знаю, может потому что структура шаблона не простая, ну там таблички всякие, хедеры.
Пробовал в свойствах шаблона название документа менять - тоже безрезультатно.

так подключаюсь к ворду.

Репутация: 15
Всего: 108

если я правильно понял, то dmData - у тебя типа запись?

дело в том, что шаблон, в понимании самого ворда это не документ, поэтому он не инициализирует начальное имя. попробуй открывать его через:

Добавлено @ 12:04
т.е. так:

"Кто владеет информацией, тот владеет миром"
Уинстон Черчилль

Репутация: нет
Всего: нет

Методы Open и OpenOld открывают сам шаблон в Ворде (.dot). Надо же экземпляр основанный на шалоне (.doc).

Добавлено @ 13:45
Все, получилось.

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

Открываем файл на основе нашего шаблона, в заголовке Ворда - "Документ1"
Меняем в свойствах название. Результат в заголовке по прежнему "Документ1", но если попытаться сохранить файл, то Ворд предлагает то имя что было в свойствах. Т.е. пользователь просто нажимает сохранить и принимает имя "по умолчанию".
Но, пока файл не сохранен, в заголовке Ворда так и будет "Документ1", что собственно меня и смущало. Я и не пробовал сохранять файл. Вроде если в заголовке, то и по дефолту такое же будет.
Ну все, всем спасибо!

Репутация: 15
Всего: 108

свойство только для чтения поэтому "Документ1" в заголовке не изменяется. и не факт что ваш вариант будет всегда срабатывать и не будет вызывать исключения.

"Кто владеет информацией, тот владеет миром"
Уинстон Черчилль

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

[ Время генерации скрипта: 0.1232 ] [ Использовано запросов: 21 ] [ GZIP включён ]

Создавать текстовые файлы, используя сценарии, достаточно легко, так как среда Windows в целом и окружение Windows Script Host (WSH) в частности предоставляют специальные средства для работы с текстовыми файлами. Однако, хотя текстовые файлы идеальны для хранения простой неструктурированной информации, их недостаточно в случае более сложных требований. Если необходимо представить иерархическую информацию, можно воспользоваться средствами XML и создавать текст с метками, содержащий (или не содержащий) обращение к схеме. Однако часто приходится создавать документы, которые представляют информацию, использующую сложную разметку. Файлы HTML являются альтернативой связывания данных и сложной разметки страницы. Однако документы HTML представляют собой открытый текст и в принципе являются легкой добычей для злоумышленников. К тому же документы HTML редко бывают самодостаточными и часто содержат ссылки на внешние ресурсы, такие как изображения, управляющие элементы ActiveX и апплеты.

Использование шаблонов Word

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

В пакете Word можно создавать формы для стандартных документов, таких как счета, настраивая файл-шаблон с расширением .dot. Когда требуется подготовить новый документ на основе шаблона, следует щелкнуть на пункте меню File, New. После выбора нужного шаблона в окне New и нажатия кнопки OK Word создает и отображает новую форму, основанную на этом шаблоне. В соответствующие поля пустой формы вводится различная информация.

При использовании Word в интерактивном режиме пользователь может видеть, куда необходимо ввести информацию. Но как заставить вводить различную информацию в нужные поля сценария WSH? Прежде чем я отвечу на этот вопрос, давайте рассмотрим объектную модель Word — инфраструктуру на основе COM, которая помогает программно управлять поведением пакета Word.

Объектная модель Word

Объектная модель Word содержит богатую и сложную иерархию объектов. Эта объектная модель программно раскрывает интерактивные функции Word для ориентированных на COM клиентов (т. е. сценариев WSH и Visual Basic(VB)). Корневым элементом объектной модели Word является объект Word.Application. Для создания экземпляра этого объекта необходимо использовать следующий код:

Объектная модель Word работает с исполняемым файлом Word (winword.exe), а не с отдельной библиотекой DLL. Таким образом, каждый экземпляр объекта Word.Application эквивалентен запуску и работе экземпляра приложения Word. Однако эти экземпляры невидимы. А поскольку мы не можем их видеть, есть риск появления множества экземпляров, которые существуют бесцельно, понапрасну расходуя системные ресурсы. Чтобы избежать распространения бесполезных экземпляров Word, необходимо сделать так, чтобы сценарии всегда освобождали объект после завершения работы с ним с помощью метода Quit:

Хотя заново создаваемые экземпляры Word по умолчанию невидимы, можно сделать их видимыми, задав свойству Visible значение True:

Когда экземпляр виден, можно закрыть приложение вручную. Установка свойства Visible в True может очень пригодиться при отладке приложений Word на основе сценариев.

Работа с элементами объектной модели Word полностью совпадает с работой приложения в интерактивном режиме. После инициализации приложения мы создаем новый документ или открываем существующий. Для создания нового пустого документа на основе определенного шаблона следует вызвать метод Add из коллекции Documents и указать файл .dot, где хранится нужный шаблон. Приведенный ниже код создает документ, который содержит возможности, встроенные в шаблон, названный Invoice:

Для открытия существующего документа следует использовать коллекцию Documents, содержащую объекты Document. Код, приведенный в листинге 1, открывает документы invoice.doc и expenses.doc. Этот фрагмент кода сначала открывает файл invoice.doc, потом — expenses.doc. Здесь статус программно созданного документа в точности соответствует статусу документа-шаблона, который вы открыли интерактивно с помощью пункта Open меню File, работая в приложении Word. Если вы сделали экземпляр видимым, на экране появятся окна документов из файлов invoice.doc и expenses.doc.

Переменные doc1 и doc2, используемые в листинге, ссылаются на объекты, представляющие вновь открытые документы Word. Также можно использовать индекс к коллекции Documents для обращения к открытым файлам. Например, следующий код возвращает ссылку на первый открытый документ:

Этот фрагмент кода эквивалентен присвоению переменной doc1 результата вызова метода Documents.Add, как показано во второй строке листинга 1.

Программный интерфейс объекта Document содержит все функции, доступные в меню File и Edit пакета Word. Для печати документа следует использовать метод PrintOut объекта Document; для записи документа в другое место — метод SaveAs. Когда Word применяется интерактивно, оба метода представляют диалоговое окно, позволяющее выбрать принтер и путь. При использовании метода PrintOut или SaveAs можно указать принтер или путь к файлу в качестве аргумента, как показано ниже:

Когда путь указывается в качестве аргумента, диалоговое окно не отображается.

Метод SaveAs также позволяет вводить дополнительный аргумент, для указания выходного формата (например, документ Word, формат Rich Text Format (RTF) — Word 6.0, неформатированный текст). Приведенный ниже фрагмент кода показывает, как сохранить документ в формате RTF:

За дополнительной информацией о константах, обозначающих различные форматы файла, следует обратиться к документации пакета Word.

Чтобы закрыть документ, нужно использовать метод Close:

При закрытии документа все документы, открытые после него, автоматически перемещаются на одну позицию вверх. Так что, если использовать код:

и впоследствии закрыть ссылку на переменную doc1, на позиции переменной doc2 в массиве окажется Documents(0).

Когда работа с документами Word ведется программно, можно связывать форматы и стили с абзацами, словами и символами в документе, так же как при интерактивном использовании Word. Кроме того, можно добавлять комментарии и закладки к элементам документа. При программном создании документов Word на основе шаблона можно использовать закладки для ввода пользовательских данных в нужные места документа.

Использование закладок в пакете Word

Под закладкой понимается связь между именем и определенным местом в документе Word. Закладки — особенность пакета Word, которую можно использовать для пометки выбранного текста, графики, таблиц или любого другого элемента документа. Word хранит закладки в документе. Для добавления закладки в интерактивном режиме следует выбрать текст или элемент, который требуется пометить, потом выбрать пункт Bookmark в меню Insert. В окне Bookmark нужно ввести имя создаваемой закладки.

Например, предположим, у нас есть шаблон Word (файл .dot) и нам нужно просмотреть текущие данные в определенной позиции. Откроем шаблон и выберем область, отведенную под данные. Чтобы упростить правку шаблона в будущем, можно ввести текст указателя места заполнения, описывающий данную область (например: данные о счете размещать здесь). После ввода текста указателя места заполнения следует выбрать текст, выбрать в меню Insert пункт Bookmark, ввести имя закладки (например, InvoiceDate), после чего сохранить шаблон.

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

Как показывает данный фрагмент кода, обращение к закладке осуществляется через ее имя. Имя закладки указывает на нужный помеченный объект в коллекции Bookmarks документа. Свойство Range является объектом класса TextRange. Это свойство определяет настройки области текста закладки. Свойство Text объекта TextRange позволяет читать и переписывать текущее значение закладки. Приведенный выше фрагмент кода задает для даты счета значение 7/1/2002.

Создание счета

В листинге 2 показан сценарий CreateInvoice.vbs, который собирает определенную информацию и составляет счет. Код открывает шаблон TestInvoice.dot, расположенный в той же папке, что и сценарий, когда создает новый документ на его основе (можно скачать файл TestInvoice.dot с нашего сайта в разделе Download). На рис. 1 показан шаблон TestInvoice.dot.

Сценарий CreateInvoice.vbs запрашивает у пользователя номер счета, дату и имя адресата. Код фрагмента A в листинге 2 использует закладки для внедрения этой информации в основной документ. Затем код фрагмента B использует метод SaveAs для сохранения документа в текущей папке. Сценарий CreateInvoice.vbs создает имя готового документа, соединяя номер счета с префиксом inv_. Способ именования и папка назначения заданы условно. В конце сценарий CreateInvoice.vbs закрывает документ и приложение.

Отправка документа по электронной почте

Объектная модель Word содержит метод объекта Document, который позволяет послать документ по электронной почте:

Большинство форм сегодня представляют собой простые документы Word. После интерактивного создания шаблона в пакете Word можно без труда написать сценарий, подобный приведенному в статье, для заполнения формы пользовательской информацией, после чего позвольте окружению WSH и объектной модели Word завершить начатое.

работая в Office 2007, я хотел бы добавить поле имени файла в заголовок документа. Документ позже будет PDF, поэтому я не хочу расширения.

Я играл с Insert - > QuickParts - > поле, безрезультатно. У меня такое чувство, что для этого нужна формула.

заранее спасибо, если вы можете помочь.

ваше чувство совершенно правильно.

alt text

Insert > QuickParts > Field > FileName это путь, но, как вы видите на скриншоте ниже, у вас нет возможности включить или выключить расширение файла. Чтобы показать или не показать (шекспировский стиль) расширение чисто до настройки Проводника Windows, чтобы показать или скрыть известные расширения файлов. Итак, либо вы измените эту настройку, либо вам нужен код.

очень простой макрос будет следующим:

что это does просто удаляет последние 4 символа "строки имени файла", например ".doc "- if you safe a".docx "the"."будут сохранены. Также этот макрос будет работать один раз, и вам нужно будет запустить его снова, когда имя файла изменится.

может быть, вы могли бы объяснить, что вы хотите достичь с именем файла в заголовке документа? Вы пытаетесь использовать имя файла в заголовке документа для установки некоторого свойства PDF во время преобразования? Почему бы не использовать заголовок документа? Вам нужно исходное имя файла в PDF позже - почему?

еще две страницы, чтобы помочь вам с вашей проблемой (оба полагаются на макросы. ):

добавить [Title] вместо имя файла и, может быть, добавить некоторые из других Свойства Документа перечислил

создать макрос что-то вроде:

вставить поле типа:

Insert DocVariable Field

действительно, для поля FileName нет опции" только базовое имя".

долгосрочный: запрос функции

Я приглашаю вас и других, посещающих этот пост, проголосовать за это предложение.

краткосрочного решения

макро (Код VBA)

написание макроса, как предположил @DennisG, вероятно, является наиболее удобной работой.

свойства

но вы можете не связывать макрос с документом word, чтобы избежать проблем с безопасностью (например, если вы распространяете документ). Таким образом, другим обходным путем является создание пользовательского свойства FileBaseName с жестко закодированным значением "MyDocumentBaseName":

создайте пользовательское свойство FileBaseName и назначьте его значение:

  • откройте пустой документ в MS Word.
  • сохраните его как " MyTempReport.файлы DOCX".
  • в меню MS Word с MyTempReport.docx открыть > файл [вкладка] > информация > свойства: нажмите > Дополнительные свойства . > Пользовательский [tab].
  • введите "Name": "FileBaseName"; "Value": "MyTempReport".

вставьте свойство пользовательского документа, FileBaseName в своем документе:

  • меню MS Word > вставить [вкладка] > текст [группа] > быстрые детали > поле .
  • из "имена полей" выберите "DocProperty".
  • из поля "свойства" > "свойства": выбрать "FileBaseName" > "ОК".

вы теперь должны иметь "MyTempReport" вставить как поле в документе.

  • если вы переименуете файл это не отразиться в вашем

вставьте поле Имя файла, как показано на диаграмме выше, и сохраните его как имя файла. Просмотр в режиме предварительного просмотра и возврат в режим редактирования: имя файла теперь должно отображаться вместо Documentn

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

Я сделал это в нижнем колонтитуле, чтобы версия pdf не отображалась".файлы DOCX'.

Читайте также: