2013-08-14 3 views
0

이미 열려있는 Internet Explorer에서 webform을 채우는 데 다음 코드가 있습니다.Webform을 채울 때 둘 이상의 창이 열림

Sub L() 

Dim IE As New SHDocVw.InternetExplorer 
Dim SWs As New SHDocVw.ShellWindows 
Dim PageTitle As String 
On Error Resume Next 
    u = 1 
    'Looks at all windows in Windows 
    For Each IE In SWs 

     If (LCase(IE.FullName) Like "*iexplore*") = True Then 
      If u <> 1 Then 
       u = u + 1 
      End If 
End If 
PageTitle = IE.Document.Title 
     If InStr(PageTitle, "Home") Then 

IE.Navigate "http://intranet.com/Webforms/TaskCreation.aspx" 
Do 'Wait till the edit page is loaded. 
Loop Until IE.ReadyState = READYSTATE_COMPLETE And Not IE.Busy 

IE.Document.getElementById("Content_TEXT_ALPHA_COLUMN1").Value = "A" 
IE.Document.getElementById("Content_TEXT_ALPHA_COLUMN2").Value = "B" 
IE.Document.getElementById("Content_TEXT_ALPHA_COLUMN14").Value = "C" 

IE.Document.Forms(0).Item("Content_ddlRegion").Value = "28" 
IE.Document.Forms(0).Item("Content_ddlSubRegion").Value = "33" 
IE.Document.Forms(0).Item("Content_ddlPriority").Value = "23" 
IE.Document.Forms(0).Item("Content_ddlClientCode").Value = "37" 
IE.Document.Forms(0).Item("Content_ddlCompanyCode").Value = "62" 
IE.Document.Forms(0).Item("Content_DDL_COLUMN1").Value = "5978" 
IE.Document.Forms(0).Item("Content_DDL_COLUMN2").Value = "5966" 
IE.Document.Forms(0).Item("Content_ddlActivity").Focus 
IE.Document.Forms(0).Item("Content_ddlActivity").Value = "13720" 
IE.Document.Forms(0).Item("Content_ddlActivity").FireEvent ("onchange") 

While IE.Busy 
DoEvents 
Wend 
Application.Wait Now() + TimeValue("00:00:03") 


IE.Document.Forms(0).Item("Content_ddlSubActivity").Value = "13735" 

IE.Document.getElementById("Content_imgRequestRcvdDate").Click 

IE.Visible = True 

End If 

    Next IE 

End Sub 

이 코드는 어제 잘 처리되었습니다. pagetitle = Home으로 IE를 찾고 양식을 채 웁니다.

아무 것도 변경하지 않았지만 오늘은이 오류가 발생했습니다. 매크로가 실행을 마치면 새로운 Internet Explorer 창이 열립니다. 때로는 하나, 심지어 4 개의 창이 열립니다.

코드에 문제가 있습니까?

다음에 오류 재개를 제거해야한다고 생각합니까?

도와주세요.

감사합니다.

+0

"다음에 오류 재개를 제거해야한다고 생각하십니까?" 어디 한번 보자. 그 일을하려고하면 어떻게됩니까? 문제를 수정하거나 변경합니까? –

+0

오류가 발생합니다. 런타임 오류 : 자동화 오류, 알 수없는 오류. – AndroidDev

+0

Ken, 각 줄을 디버깅하여 이해 한 것은 : 매크로가 제목으로 Windows를 찾아서 작업을 실행 한 후에도 계속 동일한 제목으로 더 많은 창을 찾는 작업을 계속 수행합니다. 첫 번째 발견 후 중지해야합니다. 나는 내가 충분히 자신을 분명히했는지 확신 할 수 없다. – AndroidDev

답변

0

라인 For Each IE in SWs은 Internet Explorer의 인스턴스를 3 개 만들었으며, SHDocVW.ShellWindows 대신 ShellWindows의 코드를 수정하고 'SW.Count'를 사용하여 확인할 창 수를 설정합니다. 나는 디버그를 더 쉽게하기 때문에 on errors resume next 라인을 제거했다. 좋은 이유로 거기에 있다면 다시 넣을 수있다.

Sub L() 

Dim IE As InternetExplorer 
Dim SWs As ShellWindows 
Dim PageTitle As String 
Dim iCounter As Integer 
Dim u As Integer 

    Set SWs = New ShellWindows 
    If SWs.Count > 0 Then 
     For iCounter = 1 To SWs.Count 
      Set IE = SWs.Item(iCounter - 1) 

      If (LCase(IE.FullName) Like "*iexplore*") = True Then 
        If u <> 1 Then 
         u = u + 1 
        End If 


       PageTitle = IE.Document.Title 
        If InStr(PageTitle, "Home") Then 

        IE.Navigate "http://intranet.com/Webforms/TaskCreation.aspx" 
        Do 'Wait till the edit page is loaded. 
        Loop Until IE.ReadyState = READYSTATE_COMPLETE And Not IE.Busy 

        IE.Document.getElementById("Content_TEXT_ALPHA_COLUMN1").Value = "A" 
        IE.Document.getElementById("Content_TEXT_ALPHA_COLUMN2").Value = "B" 
        IE.Document.getElementById("Content_TEXT_ALPHA_COLUMN14").Value = "C" 

        IE.Document.Forms(0).Item("Content_ddlRegion").Value = "28" 
        IE.Document.Forms(0).Item("Content_ddlSubRegion").Value = "33" 
        IE.Document.Forms(0).Item("Content_ddlPriority").Value = "23" 
        IE.Document.Forms(0).Item("Content_ddlClientCode").Value = "37" 
        IE.Document.Forms(0).Item("Content_ddlCompanyCode").Value = "62" 
        IE.Document.Forms(0).Item("Content_DDL_COLUMN1").Value = "5978" 
        IE.Document.Forms(0).Item("Content_DDL_COLUMN2").Value = "5966" 
        IE.Document.Forms(0).Item("Content_ddlActivity").Focus 
        IE.Document.Forms(0).Item("Content_ddlActivity").Value = "13720" 
        IE.Document.Forms(0).Item("Content_ddlActivity").FireEvent ("onchange") 

        While IE.Busy 
         DoEvents 
        Wend 
        Application.Wait Now() + TimeValue("00:00:03") 


        IE.Document.Forms(0).Item("Content_ddlSubActivity").Value = "13735" 

        IE.Document.getElementById("Content_imgRequestRcvdDate").Click 

        IE.Visible = True 

       End If 'If InStr(PageTitle, "Home") 
      End If 'If (LCase(IE.FullName) Like "*iexplore*") = True 
     Next iCounter 


    End If 'If SWs.Count > 0 Then 

Set IE = Nothing 
Set ws = Nothing 

End Sub 
관련 문제