Справочная информация
Я около 10 недель, чтобы стать самоучкой VBA.Приведенный ниже код, который я только что взял на прошлой неделе, касается IE / HTML. Теперь я зашел так далеко, что автоматизировал этот процесс с помощью нажатия кнопок и очистки данных.Осталась только одна вещь, которую я просто не могу решить за свою жизнь.И я знаю, что это сложно, но я не достаточно квалифицирован, чтобы решить ..
Мой код ниже:
Sub TPMRebatePayment()
Dim IE As New InternetExplorerMedium
Dim HTMLdoc As HTMLDocument
Dim frame As HTMLFrameElement
Dim imgShowAdvSearch As HTMLImg
Dim imgGoTo As HTMLImg
Dim imgEditDet As HTMLImg
Dim wkbSourceWB As Workbook
Dim SourceShtClm As Worksheet
Dim LastRow As Long
'Dim LastRow_Clm As Long 'Do I need to DIM this??
'Dim LastRow_TPM As Long 'Do I need to DIM this??
Dim cRow1 As Long
Dim cRow2 As Long
Dim iRow As Long
Dim jRow As Long
Dim dblStartTime As Double 'time elapsed counter
Dim strMinutesElapsed As String
dblStartTime = Timer
Set wkbSourceWB = ThisWorkbook 'Set workbook
Set SourceShtClm = wkbSourceWB.Sheets("Claim Summary")
Set SourceShtTPM = wkbSourceWB.Sheets("TPM Payment")
response = MsgBox("Have you open IE and logged onto CRM?", vbYesNo, "Internet Explorer Question")
If response = vbNo Then
Exit Sub
End If
'Cleares data from "TPM Payment" tab
SourceShtTPM.Rows("4:" & Rows.Count).Delete 'deletes data
SourceShtTPM.Range("A3:B3, D3:E3, J3").ClearContents 'clears data
'Copies Accruals from "Promo Claims" tab to "TPM Payment" tab
LastRow_Clm = SourceShtClm.Range("T" & Rows.Count).End(xlUp).Row
For cRow1 = 4 To LastRow_Clm
If SourceShtClm.Range("P" & cRow1) = "" Then
LastRow_TPM = SourceShtTPM.Range("A" & Rows.Count).End(xlUp).Row
SourceShtClm.Range("N" & cRow1).Copy SourceShtTPM.Range("A" & LastRow_TPM + 1)
SourceShtClm.Range("O" & cRow1).Copy SourceShtTPM.Range("B" & LastRow_TPM + 1)
End If
Next cRow1
For cRow2 = 4 To LastRow_Clm
If SourceShtClm.Range("S" & cRow2) = "" Then
LastRow_TPM = SourceShtTPM.Range("A" & Rows.Count).End(xlUp).Row 'Recalc last row as data has been entered
SourceShtClm.Range("Q" & cRow2).Copy SourceShtTPM.Range("A" & LastRow_TPM + 1)
SourceShtClm.Range("R" & cRow2).Copy SourceShtTPM.Range("B" & LastRow_TPM + 1)
End If
Next cRow2
'Copies formulas in TPM tab
LastRow_TPM = SourceShtTPM.Range("A" & Rows.Count).End(xlUp).Row 'Recalc last row as data has been entered
SourceShtTPM.Range("C3").Copy SourceShtTPM.Range("C" & LastRow_TPM)
SourceShtTPM.Range("F3:I3").Copy SourceShtTPM.Range("F4:I" & LastRow_TPM)
'Opens IE
IE.navigate "http://crmprdas02.aunz.lncorp.net:8011/sap(bD1lbiZjPTEwMCZkPW1pbg==)/bc/bsp/sap/crm_bsp_frame/entrypoint.do?appl=crmd_stlmt_rb&version=0&blview=znfl_stl&crm_bsp_restore=false"
IE.Visible = True
While IE.readyState <> 4 Or IE.Busy: DoEvents: Wend
'Loops thru entering payments
LastRow = SourceShtTPM.Range("A" & Rows.Count).End(xlUp).Row 'Recalc last row as data has been entered
For iRow = 3 To LastRow
If SourceShtTPM.Range("A" & iRow) <> "" Then
Set HTMLdoc = IE.document
Set frame = HTMLdoc.getElementsByName("crmA")(0)
Set HTMLdoc = frame.contentDocument
HTMLdoc.getElementById("SREQ1_SR__simpleSearch__as_button").Click 'Click Search Button
While IE.readyState <> 4 Or IE.Busy: DoEvents: Wend
HTMLdoc.getElementById("SREQ1_SR__advancedSearch_advancedSearch_REBATE_NO").Value = SourceShtTPM.Range("A" & iRow).Value 'Enter Accrual into Rebate No. Field
HTMLdoc.getElementById("SREQ1_SR__advancedSearch__sm_go").Click
While IE.readyState <> 4 Or IE.Busy: DoEvents: Wend
HTMLdoc.getElementById("SRES2_BUT_GOTO").Click 'Click Go To Button
While IE.readyState <> 4 Or IE.Busy: DoEvents: Wend
HTMLdoc.getElementById("EDIT_DETAILS").Click 'Then Details to enter the payment page
While IE.readyState <> 4 Or IE.Busy: DoEvents: Wend
AccBal = HTMLdoc.getElementById("MULT3_DETL31_MULT3_DETL31ES_ZZACCRUED_SC").Value 'Scrapes accrual balance
If Right(AccBal, 1) = "-" Then 'Converts to number
SourceShtTPM.Range("E" & iRow).Value = "-" & Left(AccBal, Len(AccBal) - 1)
Else: SourceShtTPM.Range("E" & iRow).Value = "-" & AccBal
End If
If SourceShtTPM.Range("H" & iRow).Value > 0 Then 'Confirms if enough money to pay
HTMLdoc.getElementById("MULT3_DETL31_MULT3_DETL31ES_ZZAMOUNT").Value = Round(SourceShtTPM.Range("H" & iRow).Value, 2) 'Enters "Amount to be Paid"
While IE.readyState <> 4 Or IE.Busy: DoEvents: Wend
HTMLdoc.getElementById("MULT3_DETL31_MULT3_DETL31ES_ZZCLAIMNO_SC").Value = SourceShtTPM.Range("A2").Value 'Enters claim no.
While IE.readyState <> 4 Or IE.Busy: DoEvents: Wend
HTMLdoc.getElementById("MULT3_MEDL32_BUT_ZST_CPY_RT").Click 'Click button to distribute
While IE.readyState <> 4 Or IE.Busy: DoEvents: Wend
HTMLdoc.getElementById("ZCR_COPY_TO_SKU_RATE").Click 'distributes to sku
While IE.readyState <> 4 Or IE.Busy: DoEvents: Wend
HTMLdoc.getElementById("MULT3_MEDL32_BUT_ZSTL_COPY").Click 'Click button to distribute
While IE.readyState <> 4 Or IE.Busy: DoEvents: Wend
HTMLdoc.getElementById("ZCR_COPY_TO_SKU_AMNT").Click 'distributes to sku
While IE.readyState <> 4 Or IE.Busy: DoEvents: Wend
HTMLdoc.getElementById("MULT3_MEDL32_ZSTL_PART_SETTLE").Click 'Clicks Pay Claim
While IE.readyState <> 4 Or IE.Busy: DoEvents: Wend
'The line below will save the rebate payment.
'DO NOT REMOVE ' UNLESS CODE IS 100%
'HTMLdoc.getElementById("MULT3_MEDL32_ZCR_STLMT_SAVE").Click 'Clicks Save
'While IE.readyState <> 4 Or IE.Busy: DoEvents: Wend
'THIS IS WHERE I NEED HELP!!!
SourceShtTPM.Range("J" & iRow) = HTMLdoc.getElementsByClassName("urTxtStd").innerText 'Gets text
'END OF HELP
'Col "Y" = entered commentary
SourceShtTPM.Range("D" & iRow).Value = "Claim Paid"
Else
'Col "Y" = payment amount to enter
SourceShtTPM.Range("D" & iRow).Value = "Not Paid"
End If
IE.navigate "http://crmprdas02.aunz.lncorp.net:8011/sap(bD1lbiZjPTEwMCZkPW1pbg==)/bc/bsp/sap/crm_bsp_frame/entrypoint.do?appl=crmd_stlmt_rb&version=0&blview=znfl_stl&crm_bsp_restore=false"
While IE.readyState <> 4 Or IE.Busy: DoEvents: Wend
Set HTMLdoc = Nothing
End If
Next iRow
IE.Quit
strMinutesElapsed = Format((Timer - dblStartTime) / 86400, "hh:mm:ss") 'stops timer - Determine how many seconds code took to run
MsgBox "This code ran successfully in " & strMinutesElapsed, vbInformation 'Msg box for elapsed time & Claims consldaited
End Sub
Проблема
Ниже2 изображения «Проверяющих элементов» в сети, из которых я пытаюсь собрать информацию.Я хочу, чтобы текст "Дата начала промоушена еще не достигнута".
Я хотел бы помочь, пожалуйста.И если возможно, я хотел бы получить объяснение, чтобы я мог понять предоставленный код.Чем больше я учусь, тем больше я могу помогать другим.

