我正在使用Microsoft Office 2003并创建一堆模板文档来标准化某些任务。我在Superuser.com上问了这个问题并且没有得到任何答复所以我认为它太过程序化了,希望我能在这里有更好的运气。
我需要自动化使用一堆Office(主要是Word)模板的工作流程。我想要的是在共享驱动器上的“My Foo Bar Stuff”中使用“My Template Foo.dot”和“My Template Bar.dot”等,并让用户双击模板以创建新的Foo或杆
我真正喜欢的是用户双击Foo模板并提示输入与其任务相关的几个项目(例如,项目编号),并在模板中更改名称Save将默认为“Foo for Project 1234.doc”。
我问Google Groups并得到一个有效的答案......一段时间。然后,当我通过双击模板创建新文档时,我的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年的经验,但是有一个完整的Office自动化菜鸟。欢迎提供具体的解决方案和指向“这是如何自动化Word”的常见问题解答。感谢。
更新:如果我创建一个新模板(新建...,空白文档,另存为“我的新模板。”),并插入AutoNew()
宏,则可行。那么是什么阻碍了我在现有模板上工作呢?
更新2:从旧模板中删除模块和功能并将其添加回来也是有效的。
答案 0 :(得分:1)
您可以在ordre中将模板附加到已保存的文档中,以访问相关模板中包含的宏。
您可以使用Document对象的AttachedTemplate属性(即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 Language Reference - AttachedTemplate Property
希望有所帮助。
答案 1 :(得分:0)
检查宏是否仍包含在模板中。这听起来很愚蠢,但在以下情况下,它也会在Word 2003中出现:
为什么呢?因为存储在.DOT中的代码不会转到doc文件。