使用 VBA 操作 IE 登录和预订课程



我正在尝试使用VBA打开IE的新实例,转到网页,登录,然后导航到可以预订体育课的页面,导航到正确的课程并按"预订"按钮。

我相当精通简单的 VBA,我已经使用它来自动化 excel 任务一段时间了,但我从未尝试过将其与 IE 一起使用,所以我对它的这一方面相当陌生。
我对VBA如何与HTML集成还不够了解,我的HTML知识相当基础。

到目前为止,我已经设法创建了打开IE的代码,导航到正确的网页,然后登录。从那里它变得复杂...

该网页有一系列"块",可以为几周的体育课选择。这些每天更新,因此代码需要搜索正确的日期,时间和类,然后按相应的书籍按钮。

在过去的几天里,我已经在谷歌上广泛搜索了该解决方案,但找不到与我正在寻找的内容类似的内容。

到目前为止,我拥有的VBA如下。这适用于我要求的第一部分。

    Sub Login_Test()
    ''This version successfully goes to puregym.com and logs into my account
    'Outstanding''''''''''''''''''''''''''''''''''
    'Need to select class page
    'Need to select correct date & class
    'Need to book class
    ''''''''''''''''''''''''''''''''''''''''''''''
    ' open IE, navigate to the desired page and loop until fully loaded
        Set ie = CreateObject("InternetExplorer.Application")
        my_url = "http://www.puregym.com/"
        With ie
            .Visible = True
            .navigate my_url

        Do Until Not ie.Busy And ie.readyState = 4
            DoEvents
        Loop
        End With
    ' Input the userid and password
        ie.Document.getElementById("edit-email").Value = "email address"
        ie.Document.getElementById("edit-pincode").Value = "pin number"
    ' Click the Submit button
        ie.Document.getElementById("edit-submit").Click
        Do Until Not ie.Busy And ie.readyState = 4
            DoEvents
        Loop
    ' Navigate to bookings page
        With ie
        .navigate "http://www.puregym.com/members/bookings"
        End With

    End Sub

我可能是错的,但我相信我想运行的 HTML 示例如下。我想模仿选择类并单击书籍按钮的操作。(一旦我掌握了这方面的基础知识,我希望 VBA 将类名、日期和时间与我将存储在 excel 范围内的列表进行比较,并且只有在该范围内时才预订它。但我很感激我需要在跑步之前走路等等......

              <div class="day column-1" data-date="Friday 22nd January" data-    shortdate="Fri 22/1" data-index="1">
        <h2>Fri 22/1</h2>
            <div id="tt_block_53_33253" class="three columns tt_block" data-date="2016-01-22" data-time="06:15">
        <div class="timetable-class limited-availability">
                          <button class="icon-info">&nbsp;</button>
              <div class="popout">
                <span class="weekly-close">&nbsp;</span>
                <h1>FAST Tabata</h1>
                <p class="timetable-info">This class takes interval training to the next level. 20 seconds high intense work followed by 10 seconds rest for 8 rounds, sound easy?  Give this class a go, you won’t be disappointed.</p>
                                  <img src="//www.puregym.com/sites/default/files/styles/square_thumbnail/public/classes/Misc20_0.jpg?itok=mnWQFaIU" alt="Example of FAST Tabata" />
                              </div>
            <header>
              <h1>FAST Tabata</h1>
              <h2>
                06:15                                  - 06:45                                              </h2>
            </header>

                          <div class="pt-name">PT name: <strong>Lewis Pratten</strong></div>
            <span class="gym-name">Bristol Harbourside</span>
                          <div class="booking-buttons">
                      <a href="/members/class-booking/book/53/33253" class="use-ajax secondary button">Book</a>
        <span class="spaces-text">Spaces</span>
    <span class="spaces-number">1</span>
              </div>

非常感谢任何人提供的任何帮助。或者建议使用不同的语言是否会更容易?从我所读到的内容来看,也许 python 或 java 会是一个更好的环境来做到这一点,但我也不熟悉......

要进入"书籍"按钮,您可以执行以下操作:

Dim links, link
        Set links = IE.Document.GetElementsByTagName("a")
        For Each link In links
        If link.innerText = "/members/class-booking/book/53/33253" Then
            link.Click
        End If
        Next link

最新更新