БлогNot. Word и заметки дня...

Word и заметки дня...

Задача - заставить Word работать с "файлом дня", имя которого будет назначаться и меняться автоматически, например, 14 марта 2014 года будет автоматически открываться (или создаваться) файл 140314.doc, а 15-го - 150314.doc

Проблема легко решается с помощью Visual Basic for Applications, встроенного во все основные версии офиса.

Создадим макрос на VBA и пропишем его в шаблоне по умолчанию Normal.dot. Для этого делается следующее:

  • В офисе XP/2003:

    меню Сервис - Макрос - Макросы, в списке "Макросы из:" выбрать Normal.dot (общего шаблона), в списке имя ввести название подпрограммы макроса, например, Main, нажать кнопку Создать, вставить в пустую подпрограмму текст макроса:

    Sub Main()
    '
    ' Main2 Макрос
    ' Макрос создан <Дата> <Юзер>
    '
    --- ВОТ СЮДА! ---
    End Sub

    Настройка из меню Сервис - Макрос - Безопасность установлена в значение "Средняя".

  • В офисе 2007/2010:

    вкладка Вид, открыть список на кнопке Макросы, выбрать пункт Макросы. В окне "Макрос" выбрать "Макросы из:" Normal.dotm (обшего шаблона), ввести в поле "Имя:" Main, нажать кнопку "Создать", вставить текст макроса на место курсора.

    Также проверьте, что выполнение макросов разрешено в Word (в версии 2010 - Файл, Параметры, Центр управления безопасностью, кнопка "Параметры..." справа, вкладка Параметры макросов. Включить все макросы, установить опцию "Доверять доступ к объектной модели".

Текст макроса от версии офиса, конечно же, не зависит:

Dim Path, Dt, Fs
Path = "c:\Temp\" 
'путь к папке с файлами
Dt = Path & Format(Date, "ddmmyy") & ".doc"
Set Fs = CreateObject("Scripting.FileSystemObject")
If Fs.FileExists(Dt) Then
 Documents.Open FileName:=Dt
Else
 Documents.Add
End If
ActiveDocument.SaveAs FileName:=Dt

Путь к папке, куда "складируются" файлы, можно поменять.

Теперь нам нужно, чтобы этот макрос выполнялся автоматически при запуске Word. Для этого в удобном месте, например, на рабочем столе, создадим файл runme.bat (можно создать обычный текстовый документ, изменить имя на указанное и согласиться со сменой типа файла, потом правая кнопка на имени файла, команда Изменить - и он загрузится в Блокнот). Вот текст файла runme.bat вместе с комментариями:

@echo off
rem Впишите ниже свой путь к Winword.exe;
rem Ключ имеет вид /mИмя_Вашего_Макроса
"C:\Program Files\Microsoft Office 2003\OFFICE11\Winword.exe" /mMain

Путь к исполняемому файлу Ворд'а Winword.exe следует скорректировать в зависимости от вашей версии, например, для 2010-й может быть

"C:\Program Files\Microsoft Office\Office14\WINWORD.EXE" /mMain

Всё готово и работает. Здесь просто создаётся пустой "файл дня", при необходимости же можно сделать (выбрать) шаблон и создавать файл уже на его основе, как-то так:

Documents.Add Template:="C:\Program Files\Microsoft Office 2003\Templates\1049\Brochure.dot"

вместо строки

Documents.Add

Путь к шаблону также может быть любым другим.


теги: дата word vba

14.03.2014, 12:17; рейтинг: 10030