2011-03-15 56 views
3

我试图创建一个小的VB应用程序,它将Word文档中的内部链接删除到他们的模板中。通过VBA删除Word模板的内部链接

我发现本指南 http://word.tips.net/Pages/T001437_Batch_Template_Changes.html 我正在尝试修改它,以便在Office中使用VBA代替宏编程。

但是,我遇到了如何让Document.Open工作。任何帮助表示赞赏。

这应该是作为一个独立的应用程序运行,而不是从Word中肆意。 我正在寻找一种方法来执行宏所做的事情,但不是从Word中执行的。

+0

对不起,我对VBA /宏的引用以及'visual-studio-2010'和'vba'标签有点困惑。 VBA是Office内部使用的宏语言。你是否试图通过VS或VSTO中的Interop来做到这一点(这不会是一个VBA应用程序,这将是一个VS应用程序)? “Document.Open”的哪一部分让你起床?你是否只是试图将它放在'Document.Open'事件接收器中而引用了代码? – 2011-03-30 17:26:46

+0

我已经更改了你的标签以符合你的问题,但如果我弄错了,请更改它们并澄清你的问题。请详细说明Document.Open的情况。 – 2011-03-31 19:49:57

+0

Hej ...你是否在你提到的页面上寻找第一或第二宏的帮助? – MikeD 2011-03-31 20:39:08

回答

5

这里有两件坏消息。

1)文件必须有一个模板。你不能删除它,只能将它改成别的东西。

2)改变一个模板不会做任何事情。见this page

我在想,如果Open方法的问题是您试图打开“.doc”扩展名文件,而不是现代的“.docx”扩展名文件。你链接的VBA子程序只做“.doc”文件。此VBA代码确实有两个:

Function StringEndsWith(_ 
    ByVal strValue As String, _ 
    CheckFor As String) As Boolean 

    Dim sCompare As String 
    Dim lLen As Long 

    lLen = Len(CheckFor) 
    If lLen > Len(strValue) Then Exit Function 
    sCompare = Right(strValue, lLen) 
    StringEndsWith = StrComp(sCompare, CheckFor, vbTextCompare) = 0 
End Function 


Sub ChangeTemplates() 
    Dim strDocPath As String 
    Dim strTemplateB As String 
    Dim strCurDoc As String 
    Dim docCurDoc As Document 

    ' set document folder path and template strings 
    strDocPath = "C:\tmp\" 

    ' get first doc - only time need to provide file spec 
    strCurDoc = Dir(strDocPath & "*.doc*") 

    ' ready to loop (for as long as file found) 
    Do While strCurDoc <> "" 
     If (StringEndsWith(strCurDoc, ".doc") Or StringEndsWith(strCurDoc, ".docx")) Then 
      ' open file 
      Set docCurDoc = Documents.Open(FileName:=strDocPath & strCurDoc) 
      ' change the template back to Normal 
      docCurDoc.AttachedTemplate = "" 
      ' save and close 
      docCurDoc.Close wdSaveChanges 
     End If 
     ' get next file name 
     strCurDoc = Dir 
    Loop 
    MsgBox "Finished" 
End Sub 
+4

我们最近将我们的模板迁移到了不同​​名称的服务器,并且一些文档变得非常缓慢,因为Word试图访问那些不在那里的模板。此过程确定了这些文档的启动时间较慢。所以改变一个模板确实能做些事情...... – Bobort 2011-06-24 14:55:20

1

答案之间的时间很长,但可能对其他人有用。如果您可以访问Word文档的VBE [Alt F11],并且想要删除该引用,请转到“工具/参考”[顶层菜单],并从参考文件列表中取消选择它。我有一个类似的问题,模板不再存在,但它仍然在项目窗口中被“引用”,所以我做了上述操作。

相关问题