2011-03-17 27 views
1

更新3:的Visual Studio Tools for Office中打破了VB6

发生这种情况时,我有救了VB6 脚本,关闭Word,启动Word,然后 运行模板,你通常会 运行一个模板,即strTemplate 变为Normal.doc。然后,只要我 回到其 尚未通过VSTO保存原始模板,即 追溯到其在 可变strTemplate letter.doc的...

更新2:

在我的启动脚本中,我有如下一行:

strTemplate = ActiveDocument.AttachedTemplate 

在被命名为Letter.dot原始模板,strTemplate = Letter.dot 。

但由于某种原因,在基于原始Letter.dot模板的新vsto模板中,上面的同一行变为Normal.dot,这导致了问题,甚至认为新模板仍命名为Letter.dot 。

我试图在

strAttTemplate = "Letter.dot" 

手动代码和脚本获取到下一个阶段,但随后开始抱怨别的东西。

所以我的问题是,原始模板有strTemplate = Letter.dot,但为什么在通过vsto运行模板之后,这会更改为strTemplate = Normal.dot?

更新1:

通过对模板的两个版本调试运行,即原非VSTO的模板,新VSTO模板后,我发现,原来没有任何文件属性,但vsto模板有2个文档属性。但这似乎不成问题。

似乎问题与vsto模板有normal.d.d附加到它,而原始非vsto模板没有normal.dot附加到它。

是否可以从新模板中删除附加的normal.dot?

原题:

我使用Visual Studio 2008创建一个Word 2003的模板项目。我选择了“使用现有模板”选项,该选项在后台已经有一些vb6宏脚本。出于某种原因,当我保存Visual Studio项目时,VB6脚本停止工作。

旧的vb6脚本直接运行,当模板在word中打开时,但是当我简单地使用vs2008中的模板而不添加额外的功能并保存项目并构建项目时,当我尝试打开模板时,旧的启动脚本不起作用。

这是怎么发生的?

+1

VBA不是VB6。这是不正确的标签。 – Bob77 2011-03-18 13:31:38

+0

哪些代码没有运行?它不会是AUTORUN宏,是吧。我似乎想起了一个问题,即自动运行宏在某些情况下不会被Word执行。被加载到VS dev IDE可能就是其中之一。 – DarinH 2011-03-22 15:32:32

+0

请参阅原始问题中的** UPDATE 1:**。 – oshirowanen 2011-03-23 10:46:08

回答

2

的可能的情况是,你在Word 2003中.DOT VBA有一个名为AutoExec程序。当作为VSTO模板部署,因为它不是附加在Word类型预计,为了运行AutoExec(预计启动文件夹中或者.wll文件或.dot文件),这将不会执行。 VSTO的解决方法是使用AutoOpen代替当模板作为VSTO加载项打开时执行该子例程中的代码。

您可以尝试在VBA这三个(在Word中,按下Alt键+ F11 才能到Visual Basic编辑器):

Sub AutoNew() 
    MsgBox "AutoNew runs when creating a document from a template" 
End Sub 
Sub AutoOpen() 
    MsgBox "AutoOpen runs when opening a template as a document" 
End Sub 
Sub AutoExec() 
    MsgBox "AutoExec runs when loading an add-in (a global template)" 
End Sub 

的另一种情况是你没有你的安全在开发机器的Word安全设置中将设置设置为“低”。


关于你提到的更新#2,当你在调试模式下运行VSTO(F5,而不是编译并运行它按Ctrl + F5的)这通常发生。你能确认你如何运行它吗?如果它不是其中之一,那么将它部署到测试机器时它仍然正常吗?

最后,如果你可以发布您的全启动脚本,这将是决定在问题可能真正说谎很有帮助。

+0

Doh。 AutoExec和AutoOpen。这就是我的意思。几乎不再使用那些东西。 – DarinH 2011-03-22 19:06:24

+0

@drventure:不幸的是我仍然陷在那个世界。或幸运的是,如果我得到赏金:) – 2011-03-22 20:29:59

+0

我试图用AutoOpen替换AutoExec,但是停止启动脚本的所有模板,甚至是不是VSTO的模板。所以我扭转了这些变化,旧的模板又开始工作了。 – oshirowanen 2011-03-23 10:05:19

0

是否有可能在2003模板创建一个DOCX或DOTX文件,而不是一个DOCM或DOTM文件?在2003及更高版本中,宏代码在DOCX或DOTX文件中时无法运行。

+0

文件扩展名似乎没有改变,你是说它正在创建一个dotx文件,但显示扩展名为.dot? – oshirowanen 2011-03-18 10:04:53

+0

DOCX,DOTX直到2003年后才开始。 – oshirowanen 2011-03-22 14:19:48

+0

不知道为什么这个答案被拒绝。 DOCX,DOTX,DOCM和DOTM都是较新版本的压缩XML格式文件,Office的更高版本将保存为。我相信它们是在Office 2003中引入的,但在2007年成为主流。Office XP和2000中有一个插件包,允许在Office XP和2000中读写这些新格式。至于将DOC保存在DOCX中,除非你像保存DOCX文件那样做一些奇怪的事情,并且他们手动将其重命名为DOC(并且我以前见过这种情况,所以不要打折!) – DarinH 2011-03-22 14:46:33

相关问题