2014-02-23 58 views
-2

我試圖從網站導入名稱和結果列表。該網站需要以下VBA - 如何將網站上的列表導入VBA

<div class="row reports"> 
<div class="twelve columns end"> 
    <h2 class="green section-title">Student completion</h2> 
    <div class="sub-menu"> 
    <ul class="inline-list completetion-filter"> 
     <li>View:</li> 
     <li><a href="#" data-filter="all" class="selected">All</a></li> 
     <li><a href="#" data-filter="completed" class="unselected">Completed</a></li> 
     <li><a href="#" data-filter="not-completed" class="unselected">Not completed</a></li> 
     <li><a href="#" data-filter="marked" class="unselected">Marked</a></li> 
    </ul> 
    </div> 

    <div class="scroll-list-wrapper scrollable"> 
    <ol class="filter-list"> 
        <li class="not-completed " > 
      <span class="number purple"></span> 
      <span class="name"> 
       StudentA    </span> 
      <span class="status"> 
       Awaiting submission    </span> 
          </li> 
         <li class="complete marked" > 
      <span class="number purple"></span> 
      <span class="name"> 
       StudentB    </span> 
      <span class="status"> 
       62.5%    </span> 
           <a href="http://members.gcsepod.com/teachers/reports/view_assignment_answers/1995" class="pink">View answers</a> 
           </li> 
         <li class="not-completed " > 
      <span class="number purple"></span> 
      <span class="name"> 
       StudentC     </span> 
      <span class="status"> 
       Awaiting submission    </span> 
          </li> 
         <li class="complete marked" > 
      <span class="number purple"></span> 
      <span class="name"> 
       StudentD    </span> 
      <span class="status"> 
       100%    </span> 

我一直在使用outerHTML和類似的東西試過,所以我附上源代碼中的日誌,但這個永遠不會包含字符串出於某種原因英寸HTML真的不是我的特長,如果你能給我一些幫助,我將不勝感激。

感謝

我VBA的要求:

Sub getData() 

常量超的String = 「http://members.gcsepod.com/teachers/assignments

Set ie = CreateObject("InternetExplorer.application") 
ie.Visible = True 
ie.Navigate ("http://members.gcsepod.com/podauth/login") 
Do 
    If ie.ReadyState = 4 Then 
     'ie.Visible = False 
     Exit Do 
    Else 
     DoEvents 
    End If 
Loop 
ie.Visible = True 
ie.document.Forms(0).all("username").Value = "****" 
ie.document.Forms(0).all("password").Value = "****" 
ie.document.Forms(0).submit 

Do 
    If ie.ReadyState = 4 Then 
     'ie.Visible = False 
     Exit Do 
    Else 
     DoEvents 
    End If 
Loop 


ie.Navigate ("http://members.gcsepod.com/teachers/assignments") 
ie.Visible = True 
Do 
    If ie.ReadyState = 4 Then 
     'ie.Visible = False 
     Exit Do 
    Else 
     DoEvents 
    End If 
Loop 

Const MASK$ = "data-id=" 
Dim txt As String, i As Long 
With CreateObject("MSXML2.XMLHTTP") 
    .Open "GET", "http://members.gcsepod.com/teachers/assignments", False 
    .Send 
    txt = .ResponseText 
End With 
Do 
    i = InStr(i + 1, txt, MASK) 
    If i = 0 Then Exit Do 
    'Debug.Print Val(Mid$(txt, i + Len(MASK), 15)) 
    Dim idNum(0 To 10) As String 
    idNum(0) = Mid(txt, i + 8, 6) 
    idCount = 0 

    Do While i > 0 
     idCount = idCount + 1 
     txt = Right(txt, Len(txt) - (i + 8)) 
     i = InStr(txt, "data-id=") 
     'ReDim Preserve idNum(0 To idCount) As String 
     idNum(Count) = Mid(peopleData, pos + 8, 4) 
    Loop 
Loop 

我也曾嘗試以下操作:

的txt = IE瀏覽器.document.all.tags(「ol」)。Item(0).outerHTML

+1

請張貼您的_relevant_ VBA代碼... – ARich

+0

我現在已經附加了VBA代碼。它登錄到網站,然後讓用戶選擇他們的評估之一(理想情況下,我希望這種自動化,但不能解決如何從HTML中獲得不同的選項,也許我會得到它的一些幫助),然後循環遍歷學生姓名和狀態列表並將其存儲在數組中。 –

回答

0

您有權訪問該域名的相關數據庫嗎?如果你是這樣,如果你使用Access + SQL Server(或MySQL)解決方案來做,它會節省很多時間。

+0

不幸的不是。這是我們在學校使用的訂閱服務。因此,爲什麼我試圖使用某種HTML刮板。 –

+0

好的,這基本上意味着長長的代碼和更多的咖啡。試試這個:[link](http://goo.gl/R7D5nL)以及[link](http://goo.gl/mBu8F)。一開始就有點努力,但一旦設定完成,這將變得輕而易舉。請讓我們知道它是如何發展的。 – MzQ

+0

表格捕獲不能工作,因爲它作爲一個列表存儲,所以應用程序不會提取它可供下載。至於瀏覽器自動化,它並沒有記錄我突出顯示列表並複製它...不完全確定我的意思是說要做到這一點! –