- Katılım
- 27 Mayıs 2012
- Mesajlar
- 28
- Excel Vers. ve Dili
- Office 2016 - ENG
Selamlar herkese,
Sorumuz web tarayicisinda goruntulenen sayfayi Ctrl+P Ile ya da Yazdir/Print butonuna tiklatarak(bu kisma kadar sorunsuz gelebiliyoruz) Google Chrome da cikan asagida ki pencereden PDF olarak herhangi bir klasore kayit ettirmek(spesifik istedigimiz klasor olursa tadindan yenmez tabi) ,
not duseyim unutmadan, Selenium Web Driver kullaniyorum, browser kontrolu icin
Degerli yardimlariniz icin simdiden tesekkur ederim, iyi calismalar
Yazdir penceresi;

ilgili kodlar asagida ki gibi ;
Sorumuz web tarayicisinda goruntulenen sayfayi Ctrl+P Ile ya da Yazdir/Print butonuna tiklatarak(bu kisma kadar sorunsuz gelebiliyoruz) Google Chrome da cikan asagida ki pencereden PDF olarak herhangi bir klasore kayit ettirmek(spesifik istedigimiz klasor olursa tadindan yenmez tabi) ,
not duseyim unutmadan, Selenium Web Driver kullaniyorum, browser kontrolu icin
Degerli yardimlariniz icin simdiden tesekkur ederim, iyi calismalar
Yazdir penceresi;

ilgili kodlar asagida ki gibi ;
Kod:
Sub cbol_browser()
Dim baglan As New Selenium.WebDriver
Dim elementler As WebElements
Dim element As WebElement
Dim colNumData As Range
Dim parameters As Worksheet
Dim datam As Worksheet
Set parameters = ThisWorkbook.Sheets("Parameters")
Set datam = ThisWorkbook.Sheets("Packing Data")
cbol_link = "https://bolservices.it.abb.com/cBOL/OrdersList"
Cbol_arama_linki = "https://bolservices.it.abb.com/cBOL/OrdersList"
tnt_dosya_kayit_yeri = parameters.Range("B3").Value & "\"
chrome_kayit_yeri = parameters.Range("B4").Value & "\"
po = columnLetterToNumber(colNumData, UCase(parameters.Range("B1").Value))
packing = columnLetterToNumber(colNumData, UCase(parameters.Range("B2").Value))
lastrow_order = datam.Cells(datam.Rows.Count, po).End(xlUp).Row
For looper = 2 To lastrow_order
baglan.Start "chrome"
baglan.Get cbol_link
baglan.Window.Maximize
cokie_uyarisi = baglan.FindElementByXPath("//*[@id='abb-cookie-banner__button']").Text
If cokie_uyarisi = "I AGREE" Then
baglan.FindElementByXPath("//*[@id='abb-cookie-banner__button']").Click
End If
logine_git:
loginvarmi = baglan.FindElementByXPath("/html/body/header/div/section[2]/a").Text
If loginvarmi = "lock_open" Then
baglan.FindElementByXPath("/html/body/header/div/section[2]/a").Click
Else
If baglan.FindElementByXPath("/html/body/header/div/section[2]/div[3]/a/i").Text = "person" Then
GoTo a_atla
End If
GoTo logine_git
End If
a_atla:
'kontrol et uye girisi yapilmis mi sayfa gelmis mi ?
menu_cubugu_git:
menu_cubugu_yazisi = baglan.FindElementByXPath("/html/body/header/div/section[1]/a").Text
If menu_cubugu_yazisi = "menu" Then
baglan.FindElementByXPath("/html/body/header/div/section[2]/a").Click
Else
GoTo menu_cubugu_git
End If
pack_number = ""
sip_nom = ""
sip_nom = datam.Cells(looper, 1)
pack_number = datam.Cells(looper, 2)
If sip_nom <> "" Then
baslangic:
yenile_arama_kutu_sayfasir:
baglan.Get Cbol_arama_linki
arama_kutu_sayfasi = baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_LabelTitle']").Text
If arama_kutu_sayfasi <> "Order Status" Then
Application.Wait (Now + TimeValue("0:00:03"))
GoTo yenile_arama_kutu_sayfasir
End If
baglan.FindElementById("ContentPlaceHolder1_TextBoxCustomerOrderNumber").Clear
baglan.FindElementById("ContentPlaceHolder1_TextBoxCustomerOrderNumber").SendKeys sip_nom
baglan.FindElementByXPath("//*[@id='RangeDateList']").Click
baglan.FindElementByXPath("//*[@id='RangeDateList']/option[6]").Click
from_aralikbekle:
If baglan.FindElementByXPath("//*[@id='fromLabel']").Text = "From" Then
baglan.FindElementByXPath("//*[@id='rangeDateInputFrom']").Clear
baglan.FindElementByXPath("//*[@id='rangeDateInputFrom']").SendKeys "01.01.2018"
Else
GoTo from_aralikbekle
End If
to_aralikbekle:
If baglan.FindElementByXPath("//*[@id='toLabel']").Text = "To" Then
baglan.FindElementByXPath("//*[@id='rangeDateInputTo']").Clear
baglan.FindElementByXPath("//*[@id='rangeDateInputTo']").SendKeys Format(Now(), "dd.mm.yyyy")
Else
GoTo to_aralikbekle
End If
End If
On Error Resume Next
ara_tiklat:
'search butonuna tiklar
baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_ButtonSearch']").Click
baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_ButtonSearch']").Click
Application.Wait (Now + TimeValue("0:00:01"))
'yeni sayfayi kontrol et yuklendimi
yeni_sayfa_yazi = ""
yeni_sayfa_yazi = baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_LabelListDocumentsTitle']").Text
If yeni_sayfa_yazi = "" Then
If sayac < 4 Then
Application.Wait (Now + TimeValue("0:00:02"))
sayac = sayac + 1
GoTo ara_tiklat:
Else
datam.Cells(looper, 15).Value = baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_LabelNoResult_DivContainer']/span").Text
sayac = 0
datam.Cells(looper, 4).Value = "No Result "
datam.Cells(looper, 5).Value = "No Result "
datam.Cells(looper, 6).Value = "No Result "
datam.Cells(looper, 7).Value = "No Result "
datam.Cells(looper, 8).Value = "No Result "
datam.Cells(looper, 9).Value = "No Result "
datam.Cells(looper, 10).Value = "No Result "
datam.Cells(looper, 11).Value = "No Result "
datam.Cells(looper, 12).Value = "No Result "
datam.Cells(looper, 13).Value = "No Result "
GoTo sonagit
End If
End If
On Error GoTo 0
Dim denetim_sonuc_varmi As WebElement
Set denetim_sonuc_varmi = baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_LnkExport']")
If denetim_sonuc_varmi Is Nothing Then
datam.Cells(looper, 15).Value = "Error"
GoTo sonagit
End If
On Error Resume Next
orderid_num = ""
orderid_num = baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_DataGridMain']/tbody/tr/td[2]").Text
If orderid_num <> "" Then
baglan.Get "https://bolservices.it.abb.com/cBOL/OrderDetail?OrderId=" & baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_DataGridMain']/tbody/tr/td[2]").Text & "&Account=&DocBUUnit=&DocSysId="
Else
datam.Cells(looper, 15).Value = "Error"
orderid_num = ""
GoTo sonagit
End If
On Error GoTo 0
'bakiyoruz detaylar sayfasi acilmis mi, acilmamissa donguyu tekrar baslat
If baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_LabelTitleHeader']").Text = "" Then
If dongu = 1 Or dongu = 0 Then
dongu = dongu + 1
GoTo baslangic
Else
datam.Cells(looper, 15).Value = "Error"
GoTo sonagit
End If
End If
dongu = 0
'order no
If baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_LabelOrderNumber']").Text <> "" Then
datam.Cells(looper, 4).Value = baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_LabelOrderNumber']").Text
Else
datam.Cells(looper, 4).Value = "No Data Found"
End If
'/html/body/main/div/div[4]/div/div/form/div[8]/div[4]/div[1]/div/div[2]/a
On Error Resume Next
baglan.FindElementByXPath("//*[@id='ContentPlaceHolder1_linkDocFlow']").Click
baglan.SwitchToWindowByTitle ("ABB - Common Business OnLine"), 1
Application.Wait (Now + TimeValue("0:00:02"))
baglan.FindElementByXPath("/html/body/main/div/div[4]/div/div/form/div[8]/div[4]/div[1]/div/div[2]/a").Click
'-----------------------------'
''burdan itibaren sizlerin yardimiyla projeyi bitirmek isterim :)
''yazdir butonuna tiklatmam/secmem icin onerilerinize acigim, tesekkurler simdiden
End Sub
Function columnLetterToNumber(colNumData As Range, ColumnLetter As String) As Integer
columnLetterToNumber = 0
For i = 1 To Len(ColumnLetter)
columnLetterToNumber = columnLetterToNumber * 26 + (Asc(UCase(Mid(ColumnLetter, i, 1))) - 64)
Next
End Function
