2017-10-11 7 views
0

회사의 자동화를 만들려고 어려움을 겪었으므로 능가 할 수 없습니다. 나는이 사이트와 다른 사이트에서 많은 기사를 읽었지만 대답을 찾지 못했습니다.값을 영구히 변경하는 방법

기본적으로 내 회사에서 사용하는 인터넷 응용 프로그램을 클릭하면 드롭 다운 목록이 표시됩니다. 사용자는 10 가지 위치에서 값을 "Read"에서 "All"로 변경해야합니다. 그런 다음 애플리케이션은 변경 사항을 확인하고 양식을 저장할 수 있습니다.

특정 필드를 클릭하여 드롭 다운을 활성화하고이 드롭 다운에서 올바른 옵션을 선택하는 코드를 작성했습니다. 그러나 내가 그 모든 10 개의 드롭 다운을 통해 반복 할 때 효과는 보이지 않습니다.

재미있는 부분이 있습니다. "debug.print objinputs.outerHTML"에 중단 점을 넣은 다음 매크로를 계속 진행하면 변경 사항이 적용되며 모든 것이 올바르게 수행됩니다. 하지만 브레이크 포인트가 없으면 무언가 잘못되어 모든 값이 다시 "읽기"로 돌아갑니다. 누가 여기에 문제가 될지 아는 사람이 있습니까?

더 많은 정보가 필요하면 알려주십시오.

Set ifrm = Nothing 
    Do Until ifrm.Length > 0 
     Set ifrm = IE.Document.getElementsByTagName("iframe")(0).contentDocument.getElementsByTagName("iframe")(1).contentDocument.getElementsByTagName("iframe")(0).contentDocument.getElementsByTagName("iframe")(0).contentDocument.getElementsByTagName("tbody")(znacznik - 1).Document.getElementsByTagName("td") 
    Loop 
    Counter = 1 
    For Each ele In ifrm 
     Worksheets("Test").Cells(Counter, 1) = ele.outerHTML 
     Counter = Counter + 1 
     If InStr(ele.outerHTML, "<td title=" & Chr(34) & "Read") Then 
      ele.Click 
      Do Until Not ele.Busy And ele.readyState = READYSTATE_COMPLETE: Loop 

      Set objInputs = Nothing 
      Set objInputs = IE.Document.getElementsByTagName("iframe")(0).contentDocument.getElementsByTagName("iframe")(1).contentDocument.getElementsByTagName("iframe")(0).contentDocument.getElementsByTagName("iframe")(0).contentDocument.getElementsByTagName("tbody")(znacznik - 1).Document.getElementsByTagName("select")(3) 

      objInputs.Value = "All" 
      Debug.Print objInputs.Value 

      Do Until Not IE.Busy And IE.readyState = READYSTATE_COMPLETE: Loop 

     End If 
    Next 

답변

0

해결책을 찾았습니다. 그것은 가장 우아한 하나는 아니지만 작동하고 내 요구에 충분히 맞습니다.

나는 값 변경 후

CreateObject("WScript.Shell").Popup "Just Wait", 1, "Waiting" 

을 추가하고 트릭을했다. 왜 그런 일이 일어나는지 알고 싶습니다. 왜이 "속임수"가 문제를 해결할 수 있습니까?

관련 문제