微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从 Excel 中监控 Word 的启动?

如何解决如何从 Excel 中监控 Word 的启动?

我正在尝试识别 Word 是否是从 Excel 启动的。

问题似乎是导致错误的 Word-Splash。如果函数是在 Word 启动之后启动的,则它可以正常工作。

Function FindyEdByClass() As iuiAutomationElement
    Dim oUIAutomation As New CUIAutomation
    Dim oUIADesktop As iuiAutomationElement
    Dim allChilds As iuiAutomationElementArray
    Dim oUIAWord As iuiAutomationElement
    Dim i As Integer
    Dim Timer As Date

    Set oUIADesktop = oUIAutomation.GetRootElement
    Set oUIAWord = oUIADesktop
    Timer = Now
RestartLoop:
    Set allChilds = oUIADesktop.FindAll(TreeScope_Children,oUIAutomation.CreateTrueCondition)
    Debug.Print "StartLoop" & vbCrLf;
            
    For i = 0 To allChilds.length - 1
        If allChilds.GetElement(i).CurrentName Like "*Word*" Then
        'And allChilds.GetElement(i).CurrentClassName = "SunAwtFrame" Then
            Set oUIAWord = allChilds.GetElement(i)
        End If
    Next
    If Now() > (Timer + TimeValue("00:00:15")) Then GoTo Noword
    If oUIAWord.CurrentName Like "DesktoP*" Then GoTo RestartLoop
EndOFLoop:
    Debug.Print oUIAWord.CurrentName & " " & oUIAWord.CurrentClassName & vbCrLf;
    Set FindyEdByClass = oUIAWord
Exit Function
Noword:
    Debug.Print "No Word found"
    End
End Function

For Next 循环中发生错误

For i = 0 To allChilds.length - 1
    **If allChilds.GetElement(i).CurrentName Like "*Word*" Then**
        Set oUIAWord = allChilds.GetElement(i)
    End If
Next

是否有修复或更好的方法

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。