Начните программировать и отлаживать автоматизацию Microsoft Office - PullRequest
4 голосов
/ 09 ноября 2009

Я использую Microsoft Office 2003 и создаю кучу шаблонов документов для стандартизации некоторых задач. Я спросил это на Superuser.com и не получил ответа, поэтому я думаю, что это слишком программно и надеюсь, что мне повезет больше.

Мне нужно автоматизировать рабочий процесс, который использует несколько шаблонов Office (в основном Word). То, что я хочу - это иметь «Мой шаблон Foo.dot» и «Мой шаблон Bar.dot» и т. Д. В «My Foo Bar Stuff» на общем диске, и пользователи должны дважды щелкнуть шаблон для создания нового Foo или Бар.

Что мне действительно нужно, так это чтобы пользователь дважды щелкнул по шаблону Foo и получил запрос на пару элементов, связанных с его задачей (например, номер проекта), и чтобы скрипт в шаблоне изменил имя это сохранение будет по умолчанию что-то вроде «Foo для Project 1234.doc».

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

В модулях класса / Это приложение у меня есть:

Sub AutoNew()
    Dim Project As String
    Project = InputBox("Enter the Project Number")
    ActiveDocument.SaveAs "Project " & Project & " Notes.doc"
End Sub

В Microsoft Word Objects / ThisDocument у меня есть:

Private Sub Document_New()

End Sub

Я действительно понятия не имею, почему или откуда это взялось.

В инструментах / безопасности макросов ... Уровень безопасности установлен на «Низкий».

Я разработчик программного обеспечения с более чем 25-летним опытом работы, но полный нуб. Конкретные решения и ссылки на «это как автоматизировать Word» часто задаваемые вопросы приветствуются. Спасибо.


Обновление: Если я создаю новый шаблон (Новый ..., Пустой документ, Сохранить как «Мой новый шаблон.dot») и вставляю макрос AutoNew(), он работает. Так что же мешает ему работать с моим существующим шаблоном?

Обновление 2: Удаление модуля и функции из моего старого шаблона и добавление его обратно тоже работает.

Ответы [ 2 ]

1 голос
/ 14 января 2010

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

Вы можете сделать это с помощью свойства AttachedTemplate объекта Document (т.е. ActiveDocument). Обратите внимание, что я сам не пробовал.

Sub AutoNew()
   Dim Project As String
   Project = InputBox("Enter the Project Number")
   ActiveDocument.SaveAs "Project " & Project & " Notes.doc"

   ActiveDocument.AttachedTemplate = "\\path\to\templates\My Template Foo.dot"

End Sub

См. MSDN - справочник по языку Word 2003 VBA - свойство AttachedTemplate

Надеюсь, это поможет.

0 голосов
/ 07 декабря 2009

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

  1. Создать шаблон, содержащий макрос, все хорошо
  2. Создать новый файл документа на основе макрос, макрос пинает в
  3. Обратите внимание, я мог бы улучшить шаблон здесь и там немного, я делаю это в файл создан в 2) и SaveAs .DOT
  4. Макрос в .DOT GONE!

Почему? Поскольку код, сохраненный в .DOT, не переходит в файл документации.

...