Excel VBA来自web.aspx的自动数据

Excel VBA来自web.aspx的自动数据,vba,excel,Vba,Excel,我正试图从以下方面自动化数据收集过程 我在第一项任务中已经失败了,那就是单击按钮并提交邮政编码 代码的第一部分应单击左侧按钮Pflegeeinrichtungen and betreoungsangebote,该按钮将选择扩展4个按钮 之后,应单击第二个按钮stationäre pflegeeinrichtoung,以进一步扩展选择 最后一个选择应该是Vollstationäre Pflege 要将searchButton的状态更改为可点击,必须在搜索栏中输入一个邮政编码,它根据输入的邮政编码提

我正试图从以下方面自动化数据收集过程

我在第一项任务中已经失败了,那就是单击按钮并提交邮政编码

  • 代码的第一部分应单击左侧按钮Pflegeeinrichtungen and betreoungsangebote,该按钮将选择扩展4个按钮
  • 之后,应单击第二个按钮stationäre pflegeeinrichtoung,以进一步扩展选择
  • 最后一个选择应该是Vollstationäre Pflege
  • 要将searchButton的状态更改为可点击,必须在搜索栏中输入一个邮政编码,它根据输入的邮政编码提出建议。必须选择其中一个方案来更改searchButton的状态,仅仅输入邮政编码是不够的

    到目前为止,我设法点击了第二(2)和第三(3)个按钮,并在搜索栏中输入了邮政编码。Excel打开IE窗口并单击按钮,但由于第一个(1.)按钮未事先单击,因此它甚至不显示2。三,。按钮如果我在执行VBA代码后手动单击第一个按钮,我可以看到2。三,。按钮被选中

    我的问题是:

  • 如何通过VBA单击第一个按钮
  • 如何提交对输入的邮政编码的搜索
  • 我如何选择其中一个方案?(哪一个都不重要。)
  • 我通过以下方式点击了按钮:

    .getElementById("ctl00_ContentPlaceHolder1_suche_btn_versorgung2").Click
    


    非常感谢您

    最后我放弃并使用了,下面是您如何使用VBA完成所需的工作。除了Chrome,您还可以使用其他受支持的浏览器

    代码:

    Option Explicit
    Public Sub test()
        Dim d As WebDriver
        Set d = New ChromeDriver 
        Const DATA_OPTION As Long = 1                '<== 1 bist Pflege­einrichtungen und Betreuungs­angebote , oder für Pflegeberatung verwenden 2: .....("button[data-tab=""2""]")
        Const LOCATION  As String = "10777 Berlin/Schöneberg" '<== Wo möchten Sie suchen?
        Const CARE_SETTING As Long = 1               '<== 1 für Ambulanter Pflegedienst. Oder: 2.Stationäre Pflegeeinrichtung ; 3.Angebote zur Unterstützung im Alltag ; 4. Häuslicher Betreuungsdienst
    
        With d
            .Start "Chrome"
            .Get "https://www.pflegelotse.de/(S(x2hdp4ld1i0ok4y0q2upqasz))/presentation/pl_startseite.aspx"
            .FindElementByCss("button[data-tab=""" & DATA_OPTION & """]").Click
    
            Application.Wait Now + TimeSerial(0, 0, 1)
    
            .FindElementByCss("button[data-value=""" & CARE_SETTING & """]").Click
            .FindElementById("ctl00_ContentPlaceHolder1_suche_bezirk").SendKeys LOCATION
    
            Application.Wait Now + TimeSerial(0, 0, 1)
    
            Dim keys As New keys
            .SendKeys keys.Enter
    
            Application.Wait Now + TimeSerial(0, 0, 1)
    
            .FindElementById("ctl00_ContentPlaceHolder1_suche_btn_suche").Click
    
            Stop
    
            .Quit
        End With
    End Sub
    
    选项显式
    公共子测试()
    dimdaswebdriver
    设置d=新的色度驱动器
    
    Const DATA_OPTION As Long=1'我周末花了一些时间编写Chrome扩展,这是一种比从Excel VBA驱动IE更好的清理和影响网页的方法。因此,如果您还没有花时间在VBA中研究如何实现它,我建议您从javascript开始;埃因里什通根和贝特鲁昂­;angebote
    我已经为另一个网站编写了一个VBA宏。那个网站是基于php的,所以我不必处理dopostback等问题。因为我得到了我的框架,所以我更喜欢在Excel宏中完成它。非常感谢您的回答!我必须将位置编辑为postalcode only并发送key{return}以选择第一个提案。感谢您提出的一个有趣的问题,并为我在评论中的学童德语感到抱歉!
    Option Explicit
    Public Sub test()
        Dim d As WebDriver
        Set d = New ChromeDriver 
        Const DATA_OPTION As Long = 1                '<== 1 bist Pflege­einrichtungen und Betreuungs­angebote , oder für Pflegeberatung verwenden 2: .....("button[data-tab=""2""]")
        Const LOCATION  As String = "10777 Berlin/Schöneberg" '<== Wo möchten Sie suchen?
        Const CARE_SETTING As Long = 1               '<== 1 für Ambulanter Pflegedienst. Oder: 2.Stationäre Pflegeeinrichtung ; 3.Angebote zur Unterstützung im Alltag ; 4. Häuslicher Betreuungsdienst
    
        With d
            .Start "Chrome"
            .Get "https://www.pflegelotse.de/(S(x2hdp4ld1i0ok4y0q2upqasz))/presentation/pl_startseite.aspx"
            .FindElementByCss("button[data-tab=""" & DATA_OPTION & """]").Click
    
            Application.Wait Now + TimeSerial(0, 0, 1)
    
            .FindElementByCss("button[data-value=""" & CARE_SETTING & """]").Click
            .FindElementById("ctl00_ContentPlaceHolder1_suche_bezirk").SendKeys LOCATION
    
            Application.Wait Now + TimeSerial(0, 0, 1)
    
            Dim keys As New keys
            .SendKeys keys.Enter
    
            Application.Wait Now + TimeSerial(0, 0, 1)
    
            .FindElementById("ctl00_ContentPlaceHolder1_suche_btn_suche").Click
    
            Stop
    
            .Quit
        End With
    End Sub