0

Я работаю над интранет. Использование VBA Мне нужно закрыть дату из списка.VBA/Internet Explorer/Javascript: Как открыть окно javascript из того же Internet Explorer?

  • Я выбрал даты. Затем нажал на ссылку, чтобы закрыть (не кнопку), которая запускает javascript.

Выбранные все даты:

html.getElementsByName("selectall")(0).Click

кликнул по ссылке, чтобы закрыть дату.

html.getElementsByTagName("a")(0).Click Do While ie.Busy = True Or ie.readyState <> 4: DoEvents: Loop

Часть JavaScript

{ 
     //alert(xxx) 
     document.first.deletepids.value = xxx 
     window.open('closeallocation.asp?hotelid='+hotelid+'&roomtype='+roomtype+'&allocxid='+allocxid,'','toolbar=no,scrollbars=yes,width=500,height=330,top=50,left=80') 
     //window.open('closeallocation.asp?deletepids='+xxx+'&hotelid='+hotelid+'&allocxid='+allocxid) 
    } 
    else 
    { 
     if(confirm("Room(s) already having bookings for required dates.Do you wish to continue ?")) 
     { 
      document.first.deletepids.value = xxx 
      window.open('closeallocation.asp?hotelid='+hotelid+'&roomtype='+roomtype+'&allocxid='+allocxid,'','toolbar=no,scrollbars=yes,width=500,height=330,top=50,left=80') 
     } 
     else 
      return false; 
    } 
  • открывает новое окно.

Как открыть окно javascript в том же окне с помощью VBA или когда он откроется в новом окне, как получить элементы или установить значение или щелкнуть элемент нового окна?

Я попытался использовать окно оболочки для поиска всего открытого окна с заголовком и locationurl, но я почему-то не нашел это конкретное окно.

Dim ow As ShellWindows 
Dim fw As Variant 
Dim html As HTMLDocument 
Dim ie As InternetExplorer 

Set ie = New InternetExplorer 
Set ow = New ShellWindows 

    For Each fw In CreateObject("Shell.application").Windows 

     'On Error GoTo ErrorMsg 
     If fw = "Internet Explorer" Then 
      If InStr(fw.LocationURL, "displayhotelallocsummary.asp") <> 0 Then 
      Exit For 
      End If 
     End If 
    Next fw 

Set ie = fw 
Set html = ie.document 

Просьба сообщить.

+0

Я действительно не хочу быть грубым, но вы должны серьезно рассмотреть возможность обновления всего, что вы знаете о веб-разработке. Это очень похоже на то, что я делал в 1999 году, и мне тоже было плохо. Это новое программное обеспечение, или вы наследовали его от кого-то, кто начал делать его около 10-15 лет назад? Переработав это с помощью современных методов, вы сохраните своему клиенту/работодателю много денег, и вам будет очень много стресса. –

+0

Привет Андрес. Я вообще не обижаюсь. Я полностью понимаю вашу озабоченность. Вы не первый человек, у которого есть идея о моем коде. Но Javascript был написан третьей стороной, и я просто пытаюсь заставить данные преуспеть. Компания не хочет тратить больше денег на одного найма и эксперта-программиста. Поэтому я одновременно участвую и работаю. Я рад, что я учусь. Похоже, вы, должно быть, очень хороший программист. Как вы думаете, есть ли решение для этой проблемы? – Arif

ответ

0

Эй, я думаю, у меня есть решение для вас.

Следующая функция позволяет вам активировать нужное окно, чтобы вы могли анализировать его код HTML.

  1. ли ваш код, а затем новая веб-страница откроется
  2. Вызывайте эту функцию ie = ActivateWindow(path) и поставить на путь новую страницу в качестве аргумента
  3. Функция будет проходить через все открытые окна с вашего компьютера и активировать один, содержащий этот путь

    Function ActivateWindow (sLocation As String) As SHDocVw.InternetExplorer 
    
    Dim objShellWindows As New SHDocVw.ShellWindows 
    Dim window As Object, Good_one As SHDocVw.InternetExplorer 
    
    For Each window In objShellWindows 
    On Error Resume Next ' We add this so that if there's an issue in the procedure to get the typeName of the window, we just skip it since it s not the window we re looking for anyway 
        If TypeName(window.document) = "HTMLDocument" Then 
         If UCase(window.document.Location) = UCase(sLocation) Then 
          Set Good_one = window 
          Exit For 
         End If 
        End If 
    Next 
    
    Set ActivateWindow= Good_one 
    
    End Function 
    
+0

Привет Seb, когда я нажимаю на ссылку CLOSE с указателем мыши, он открывает всплывающее окно. но когда я использую код vba, чтобы щелкнуть по ссылке Internet explorer pop и попросить ALLOW ONCE для всплывающего окна. Как использовать код vba, чтобы щелкнуть ссылку, чтобы щелкнуть мышью или выбрать ссылку и ввести команду отправки, чтобы я мог применить ваш код? – Arif

+0

Я не уверен, что понял ваш ответ. Код, который я опубликовал, действителен, когда окно, в котором вы хотите работать над УЖЕ, существует, но не является активным. Пока он существует, даже если Internet открывает всплывающее окно, он должен работать – Seb

+0

Проблема здесь в том, что IE останавливает меня от всплывающего окна. он запрашивает разрешение, когда я нажимаю код. но если я нажму мышью, откроется всплывающее окно. Как это решить? они не являются одной и той же проблемой, но одна останавливает другую. – Arif

0

1. How do I open the javascript window in the same window?

window.open('closeallocation.asp?hotelid=2&roomtype=3','_self','toolbar=no,scrollbars=yes,width=500,height=330,top=50,left=80') 

Параметр _self указывает, что URL заменит текущую страницу

2. Or when it opens in a new window how do get elements or set value or click on the element of the new window?

Вы можете передавать параметры строк запроса

var myWindow = window.open('closeallocation.asp?hotelid=2&roomtype=3','','toolbar=no,scrollbars=yes,width=500,height=330,top=50,left=80'); 

В приведенном выше примере вы передаете два параметра (hotelid=2 and roomtype=3)

+0

Когда я нажимаю на ссылку CLOSE с указателем мыши, открывается всплывающее окно. но когда я использую код vba, чтобы щелкнуть по ссылке Internet explorer pop и попросить ALLOW ONCE для всплывающего окна. Как я могу использовать код vba, чтобы щелкнуть ссылку, чтобы щелкнуть мышью или выбрать ссылку и ввести sendkey? – Arif

+0

Я думаю, что вы получаете всплывающее окно, потому что VBA нуждается в специальных разрешениях, настроенных в браузере ...Вместо этого вы должны использовать javascript ... Что-то вроде этого в javascript должно работать 'document.getElementsByTagName (" a ") [0] .click();' –

+0

hi Bastos, где я должен писать этот код? в моем коде vba? – Arif