2014-08-27 37 views
1

这不是一个危机,因为脚本实际上工作得很好,但我需要在办公室范围内实现它,我期望这个问题会导致一点点与技术精通程度较低的人更加混淆。Outlook VBA只适用于Word文档在后台打开

以下内容旨在替换我们使用的链接到可以找到它们的网站的常见引用。因此,当用户点击按钮时,对策略AP & P-X-A-1-100的引用自动成为APP-X-A-1-100_issuance.shtml的链接。

问题是,它只适用于在后台打开Word文档。如果Word未打开,则出现三个错误之一:“远程服务器计算机不存在或不可用”或“自动化错误:远程调用过程失败”或“ActiveX组件无法创建对象”。如果连续尝试三次,我可以对这三个进行排列。我从来没有像这样的旋转错误。

任何想法为什么需要Word来运行?

Sub CitationPolicy() 

Dim myInspector As Outlook.Inspector 
Dim myObject As Object 
Dim myItem As Outlook.MailItem 
Dim rngStory As Word.Range 
Dim myDoc As Word.Document 
Dim mySelection As Word.Selection 
Dim strItem As String 
Dim strItem2 As String 
Dim strLink As String 

    Set myInspector = Application.ActiveInspector 
    Set myObject = myInspector.CurrentItem 
    Set myDoc = myInspector.WordEditor 
    Set mySelection = myDoc.Application.Selection 

For Each rngStory In ActiveDocument.StoryRanges 
    With mySelection.Find 
     .Text = "AP&P-*-[0-9]{3}" 
     .MatchWildcards = True 
     .Replacement.Text = "" 
     .Wrap = wdFindContinue 

       While mySelection.Find.Execute 
       strItem = mySelection.Text 
       strItem2 = Replace(strItem, "AP&P", "APP") 

       mySelection.Hyperlinks.Add Anchor:=mySelection.Range, _ 
       Address:="http://www.oursite.com/" & strItem2 & "_issuance.shtml", _ 
       TextToDisplay:=strItem 
       Wend 

    End With 

Next rngStory 


End Sub 
+1

那是因为你正在引用WORD应用程序。 Outlook使用Word引擎作为操作员,但必须将其引用为MailItem.GetInspector.WordEditor。 也许看看这个:http://msdn.microsoft.com/en-us/library/dd492012(v=office.12).aspx – 2014-08-27 22:21:17

+1

@KrishKM这是一个合法的答案。把它放在一个可以投票和接受的地方。 – RubberDuck 2014-08-28 00:03:08

回答

0

那是因为你正在引用WORD应用程序。 Outlook使用Word引擎作为词汇编辑器,但必须将其作为MailItem.GetInspector.WordEditor进行引用。否则,只有在单词应用程序正在运行时,您才被迫创建Word应用程序或在您的情况下工作。

也许看看这个:msdn.microsoft.com/en-us/library/dd492012(v=office.12).aspx

希望这有助于。

+0

谢谢。我认为这很有帮助,但我可能太无知,无法正确使用它。我的印象是,我需要引用Word应用程序来使用范围属性。情况并非如此吗? – 2014-08-29 19:11:52