Прежде всего, пожалуйста, прости меня за любые ошибки в публикации - это мой первый раз (хотя я частый посетитель!
Я работаю над программой для повышения производительности в моей рабочей группе. Я пытаюсь связать базу данных Access с внутренним веб-приложением (на основе Pega), которое очень сложно.К сожалению, мои знания в области кодирования очень просты c, и у меня нет доступного финансирования или пропускной способности для получения формальной помощи. Хотя я хотел бы использовать надстройки, я не могу, поскольку моя компания не допустит этого (я просил, умолял, просил и т. Д. c).
Это как выглядит страница программы. Сначала мне нужно щелкнуть вкладку «Диспетчер работ» (WMT), заблокированную в ЗЕЛЕНОМ, а затем нажать кнопку «Получить следующий» (СПП), заблокированную в КРАСНОМ.
- Привязать правильный IE оконный сеанс
- Нажмите на WMT
- Нажмите на СПП
Я смог использовать Доступ для привязки правильное окно и вкладка IE (спасибо человеку, который предоставил для этого базовый c код!), но еще не смог расшифровать, как настроить таргетинг на нужный элемент на странице. Насколько мне известно, структура именования - это слишком много.
Этот является снимком экрана HTML для WMT (он не будет копировать его, по крайней мере, разборчиво, даже после очистки). Я хотел бы иметь возможность использовать идентификатор для указанного элемента c, однако, он динамический c и меняется с каждым взаимодействием, поэтому я пытался нацеливаться на фрагменты stati c, выделенные в зеленом.
Я не очень много работал со вторым фрагментом, однако, Это - скриншот для этого, с кнопкой, выделенной желтым цветом, если кто-то тоже хочет помочь.
Спасибо!
КОД ДЛЯ ОКНА BIND (работает до сих пор!)
Sub C360WindowFind()
marker = 0
Set objShell = CreateObject("Shell.Application")
IE_count = objShell.Windows.Count
For x = 0 To (IE_count - 1)
On Error Resume Next
my_url = objShell.Windows(x).document.Location
my_title = objShell.Windows(x).document.Title
If my_title Like "Coverage User" & "*" Then
Set C360Window = objShell.Windows(x)
marker = 1
Exit For
Else
End If
Next
If marker = 0 Then
MsgBox ("C360 window is not found. Please ensure C360 is open in Internet Explorer and try again")
Else
'DO THE OTHER THINGS
End If
End Sub
КОД Я ПОПЫТАЛСЯ НА ЦЕЛЕВОЙ ПРАВИЛЬНОЙ ТАБЛИЦЕЙ (Добавьте вместо «Делать другие вещи» в предыдущем наборе кодов)
FIRST TRY (выполняет какие-то безумные вещи, которые заканчиваются тем, что программа выходит из системы)
FindWorkManager1()
Dim C360doc As HTMLDocument
Dim Element
Dim ULTabName As String
Dim LIElement As String
Dim WMT_HREF As String
ULTabName = "yui-nav tab-ul tab-ul-t tab-ul-t-ns subTabsList"
ULElement = "getElementsByClassName"
LIElement = "getElementbyID"
WMT_HREF = "getElementsByTagName"
Set C360doc = C360Window.document
With C360doc.all
If element = ULElement("ULTabName").LIElement("Work Manager").innerText.WMT_HREF("a")(0) Then
element.Click
Else
MsgBox ("Please ensure Work Manager is open, then try again")
End If
End With
End Sub
SECOND TRY: Добирается до линий со звездами и выходит (попробовал пару вариантов этого с теми же результатами)
FindWorkManager2()
Dim C360doc As HTMLDocument
Set C360doc = C360Window.document
TabTagCounter = 0
TabItemCounter = 0
With C360doc.all
Set Header = C360doc.getElementsByClassName("yui-nav tab-ul tab-ul-t tab-ul-t-ns subTabsList")
'Find the correct TabTag within Header
For Each TabTag In Header
If TabTag.tagName Like "UL" Then
TabTagCounter = 1
'If we've identified the correct TabTag, then look at the TabItem
'*************Not currently working beyond this point :(
If TabTagCounter = 1 Then
For Each TabItem In TabTag
If TabItem.innerText Like "*Work Manager*" Then
TabItemCounter = 1
End If
MsgBox ("try again")
Next
Else
End If
End If
Next
End With
End Sub