Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用excelvba实现自动化_Vba_Excel - Fatal编程技术网

用excelvba实现自动化

用excelvba实现自动化,vba,excel,Vba,Excel,我尝试使用excel vba自动化此过程: 点击链接后。。。打开下一个窗口: 我的代码: Sub WFM_test() Sheets("Preenchimento_Remedy").Activate Wd = Range("D02").Value 'URL address Set objShell = CreateObject("Shell.Application") Set objAllWindows = objShell.Windows F

我尝试使用excel vba自动化此过程:

点击链接后。。。打开下一个窗口:

我的代码:

Sub WFM_test() Sheets("Preenchimento_Remedy").Activate Wd = Range("D02").Value 'URL address Set objShell = CreateObject("Shell.Application") Set objAllWindows = objShell.Windows For Each ow In objAllWindows 'MsgBox ow If (InStr(1, ow, "Internet Explorer", vbTextCompare)) Then 'MsgBox ow.Hwnd & " " & ow & " " & ow.locationURL If (InStr(1, ow.LocationURL, Wd, vbTextCompare)) Then Set objRemedy = ow End If End If Next If objRemedy Is Nothing Then Else Set objPage = objRemedy.Document Set WFM = ObjPage.getElementsByClassName("MenuEntryNameHover") WFM.item(0).click End if End Sub 子WFM_测试() 床单(“先兆治疗”)。激活 Wd=范围(“D02”)。值的URL地址 设置objShell=CreateObject(“Shell.Application”) 设置objAllWindows=objShell.Windows 对于objAllWindows中的每个ow “MsgBox ow 如果(InStr(1,ow,“Internet Explorer”,vbTextCompare))则 'MsgBox ow.Hwnd&&&ow&&ow.locationURL 如果(InStr(1,ow.LocationURL,Wd,vbTextCompare))那么 设置objRemedy=ow 如果结束 如果结束 下一个 如果objRemedy什么都不是,那么 其他的 设置objPage=objRemedy.Document 设置WFM=ObjPage.getElementsByClassName(“menuentrynamehaver”) WFM.item(0)。单击 如果结束 端接头
试试看。它应该首先选择表,然后选择作为该表一部分的所有元素,并基于InnerText进行匹配

Sub WFM_test()
    Dim AllTableItems    As Object
    Dim element          As Object

    Sheets("Preenchimento_Remedy").Activate
    Wd = Range("D02").Value 'URL address


    Set objShell = CreateObject("Shell.Application")
    Set objAllWindows = objShell.Windows

    For Each ow In objAllWindows
        'MsgBox ow
        If (InStr(1, ow, "Internet Explorer", vbTextCompare)) Then
            'MsgBox ow.Hwnd & "  " & ow & "   " & ow.locationURL
            If (InStr(1, ow.LocationURL, Wd, vbTextCompare)) Then
                Set objRemedy = ow
            End If
        End If
    Next

    If Not objRemedy Is Nothing Then
        ' you need this (0) as you specify which class you want to select
        ' The classname is not a unique property
        Set Table = objRemedy.Document.getElementsByClassName("MenuTable")(0)

        'Select all Elements in the table
        Set AllTableItems = Table.getElementsbyTagName("*")

        'Iterate over the elements in the table and find the match
        For Each element In AllTableItems
            If element.InnerText = "Default WFM Group" Then element.Click
        Next i

    End If
End Sub

试试看。它应该首先选择表,然后选择作为该表一部分的所有元素,并基于InnerText进行匹配

Sub WFM_test()
    Dim AllTableItems    As Object
    Dim element          As Object

    Sheets("Preenchimento_Remedy").Activate
    Wd = Range("D02").Value 'URL address


    Set objShell = CreateObject("Shell.Application")
    Set objAllWindows = objShell.Windows

    For Each ow In objAllWindows
        'MsgBox ow
        If (InStr(1, ow, "Internet Explorer", vbTextCompare)) Then
            'MsgBox ow.Hwnd & "  " & ow & "   " & ow.locationURL
            If (InStr(1, ow.LocationURL, Wd, vbTextCompare)) Then
                Set objRemedy = ow
            End If
        End If
    Next

    If Not objRemedy Is Nothing Then
        ' you need this (0) as you specify which class you want to select
        ' The classname is not a unique property
        Set Table = objRemedy.Document.getElementsByClassName("MenuTable")(0)

        'Select all Elements in the table
        Set AllTableItems = Table.getElementsbyTagName("*")

        'Iterate over the elements in the table and find the match
        For Each element In AllTableItems
            If element.InnerText = "Default WFM Group" Then element.Click
        Next i

    End If
End Sub

问题是…?如何用vba点击“脱脂WFM”?我尝试过:Set WFM=ObjPage.getElementsByClassName(“MenuEntryNameHover”).item(0)。单击不做任何事情。如果没有看到XML,很难知道这一点,我怀疑是否有人愿意在XML中为您找到变量,我是否可以建议您通过循环元素来找到名称?像这样:对于ieApp.Document.all范围(“A”&(i+1))中的每个元素。Value=elem i=i+1 NextI编辑的图像01!!查看html代码。问题是…?如何使用vba单击“Defaut WFM”?我尝试过:Set WFM=ObjPage.getElementsByClassName(“MenuEntryNameHover”).item(0)。单击不做任何事情。如果没有看到XML,很难知道这一点,我怀疑是否有人愿意在XML中为您找到变量,我是否可以建议您通过循环元素来找到名称?像这样:对于ieApp.Document.all范围(“A”&(i+1))中的每个元素。Value=elem i=i+1 NextI编辑的图像01!!查看html代码。太棒了!很高兴这有帮助。把它标记为公认的答案:)太好了!很高兴这有帮助。将其标记为已接受的答案:)