Outlook VBA仅在Word文档在后台打开时才有效

时间:2014-08-27 21:53:02

标签: vba email ms-word outlook activex

这不是危机,因为脚本实际上运行得很好,但是我需要在办公室范围内实现它,我希望这个问题会让技术娴熟的人更加困惑。

以下内容旨在取代我们使用的常用引文,以及可以找到它们的网站链接。因此,当用户点击按钮时,对策略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 个答案:

答案 0 :(得分:1)

那是因为您正在引用WORD应用程序。 Outlook使用Word引擎作为文字编辑器,但必须将其引用为MailItem.GetInspector.WordEditor。否则,您将被迫创建Word应用程序,或者仅在单词应用程序正在运行时才能工作。

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

希望这有帮助。