Autoit Programı Hk.

ccuneyt13

Altın Üye
Katılım
20 Ocak 2011
Mesajlar
398
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
01-11-2026
Merhaba,

Fare ile tek tek tıklayarak doldurduğum excel sayfası için sağ olsun asri üstadın tavsiyesiyle tanıştım bu program ile.

Bir tane İE sayfası, bir tane de alt altta TC kimliklerin yazılı olduğu excel sayfası açtım, kendimce fare ile nerelere tıklıyor isem, o koordinatlara göre kodlar düzenleyerek yaptım ve nispeten tek tek elle yapmaktansa işe yarıyor.

Ancak sorgulama yaparken bazı TC numaralarını girince kullandığım web tabanlı programın en tepesine "Kps Adres Bilgisi Bulunamadı" diye hata veriyor.

Bu hatayı alınca da benim tanımladığım tüm koordinatlar çöp oluyor, çünkü bu hata internet explorer daki her satırın 1 satır aşağıya kaymasına neden oluyor.

asri üstat bir yol gösterdi ancak ben kodu düzenleyemedim.

mevcut kodlarım şu şekilde;
Kod:
Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")
Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
        sleep(100)
    WEnd
EndFunc
Func Terminate()
    Exit 0
 EndFunc

WinActivate("untitled")
Sleep(1000)
MouseClick("left", 605,873) [COLOR="SeaGreen"]; excel sayfayı seç[/COLOR]
MouseClick("left", 66,307) [COLOR="seagreen"]; excel sayfayfasında satır 2 den TC kimlik hücresini seç[/COLOR]
Send("{CTRLDOWN}c{CTRLUP}")[COLOR="seagreen"] ;tc kimlik noyu kopyala[/COLOR]


MouseClick("left", 432,873) [COLOR="seagreen"]; WEB açık sayfayı seç[/COLOR]


MouseClick("left", 227,93)[COLOR="seagreen"] ; kimlik sorgulama kısayoluna tıkla[/COLOR]
Sleep(1000)

MouseClick("left", 325,281) [COLOR="seagreen"]; tc kimlik numarasının kutucuğunu şeç[/COLOR]

Send("{CTRLDOWN}v{CTRLUP}") [COLOR="seagreen"];tc kimlik noyu yapıştır[/COLOR]

MouseClick("left", 396,306) [COLOR="seagreen"]; TC Kimlik Sorgula düğmesine bas[/COLOR]
Sleep(1000)
MouseClick("left", 326,344) [COLOR="seagreen"]; WEB Soyadı kutucuğunu seç[/COLOR]
Sleep(100)

#include <AutoItConstants.au3>
[COLOR="seagreen"]; Double click at the current mouse position. ÇİFT TIKLA[/COLOR]
MouseClick($MOUSE_CLICK_LEFT)
MouseClick($MOUSE_CLICK_LEFT)

Send("{CTRLDOWN}c{CTRLUP}") ; KOPYALA


MouseClick("left", 605,873) [COLOR="seagreen"]; excel sayfayı seç[/COLOR]


MouseClick("left", 200,306)[COLOR="seagreen"] ; excel sayfasında soyadını seç[/COLOR]
Send("{CTRLDOWN}v{CTRLUP}") [COLOR="seagreen"];tc kimlik noyu excele yapıştır[/COLOR]
Send("{CTRLDOWN}c{CTRLUP}") [COLOR="seagreen"]; KOPYALA (EXCEL)[/COLOR]
Send("{ENTER}")[COLOR="seagreen"] ; KOPYALA (EXCEL)[/COLOR]
diye devam ediyor...

Ben aşağıdaki işlemden sonra;
Kod:
MouseClick("left", 396,306)[COLOR="seagreen"] ; TCKimlik Sorgula düğmesine bas[/COLOR]
Kps Adres Bilgisi Bulunamadı hatasına ait yazı çıkar ise;


Kod:
MouseClick("left", 605,873)[COLOR="seagreen"] ; excel sayfayı seç[/COLOR]
MouseClick("left", 1589,809) [COLOR="seagreen"]; EXCEL BİR ALTTA GEÇ[/COLOR]
goto 30
diye devam etsin istiyorum,


asri üstadın bununla ilgili verdiği kod şu şekilde ama ben çalıştırmayı başaramadım,
Kod:
#include <MsgBoxConstants.au3>

;5 saniye bekliyor
sleep(5000)
;aktif penceredeki tüm yazıları bir değişkene aktarıyor
Local $sText = WinGetText("[ACTIVE]")
;tüm yazıları içinde "Bilgisi Bulunamadı" yazısını arar bulduğunda kaçıncı harfden sonra olduğu bilgisini döner.
Local $iPosition = StringInStr($stext, "Bilgisi Bulunamadı")
;bulunduğu pozisyon sıfırdan büyük ise, yazılar içinde aradığımız kelime var demektir.
if $iPosition >0 then 
;Aradığımız kelime aktif pencerede var ise yapılacak işlemler buraya yazılır.
MsgBox($MB_SYSTEMMODAL, "", $sText)
endif

Yani özetle eğer İE sayfada "bilgisi bulunamadı" ibaresi geçiyorsa, şunu şunu yap, geçmiyorsa devam etsin istiyorum,

Autoit ile ilgilenen başta asri olmak üzere, üstatlar yardımlarınızı bekliyorum.

Saygılar.
 
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Aşağıdaki kodlar, URL ile web sayfasının iletişim bölümünü açar.
Bilgi alınacak excel dosyasını açar,

ilk satırdaki bilgiyi alır, web sayfasında ilk kutuya yazar.
Tamam butonuna basar.
Web sayfasında "gerekli alanı doldurun" yazısı gördüğünde ikinci kutuya ikinci bilgiyi yazar.

Bu örnek ile istediğiniz işlemi yapabilir siniz.


Burada asıl önemli olan; mouse ile tıklayıp kutulara bilgi yazmak yerine.
autoit in IE.AU3 kütüphanesi kullanarak bilgi okuma ve yazma işlemini yapabilmek.

Bu konu üzerinde çalışıp, örnekler ile ilerlerseniz daha iyi sonuçlar alırsınız.

Excel i de örnekte verdiğim gibi, dosyadan direkt hücre okuma ile okuyun.



Kod:
#include <MsgBoxConstants.au3>
#include <IE.au3>
#include <AutoItConstants.au3>

Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")
Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
        sleep(100)
    WEnd
EndFunc

Func Terminate()
    Exit 0
EndFunc

Func _WinWaitActivate($title,$text,$timeout=0)
    WinWait($title,$text,$timeout)
    If Not WinActive($title,$text) Then WinActivate($title,$text)
    WinWaitActive($title,$text,$timeout)
EndFunc

Local $oIE = _IECreate("http://asriakdeniz.com/iletisim-2")
Opt('TrayIconDebug', 1)
Opt("WinTitleMatchMode", 2)
;IE sayfa başlığında Asri Akdeniz geçen sayfa var ise aktif et.
_WinWaitActivate("Asri Akdeniz","")
;Web sayfasında adı kutusuna gitmek için 10 defa TAB a basılıyor.
Send("{TAB 9}")

$oExcel = ObjCreate("Excel.Application")
;TC noların kayıtlı olduğu excel dosyası
$oExcel.Workbooks.Open (@ScriptDir & "\liste.xlsx").Sheets (1).Select ()
$oExcel.Visible = True

;Excel dosyası açıldıktan 10 sn sonra bilgi girişine başlanacaktır.
Sleep(5000)


;Excel de 1000 kayıt için işlem yapılır.
For $i = 1 To 1
   ;Açılan excel dosyasından 1.kolon 1. satırdan veri okunmaya başlanıyor.
   Local $tcno=$oExcel.activesheet.cells($i, 1).value
   ;Okunan veri boş ise döngü bitiriliyor.
   if $tcno="" then ExitLoop

   Opt('TrayIconDebug', 1)
   Opt("WinTitleMatchMode", 2)
   ;IE sayfa başlığında Asri Akdeniz geçen sayfa var ise aktif et.
   _WinWaitActivate("Asri Akdeniz","")
   send($tcno)
   sleep(2000)
   Send("{TAB 8}")
   sleep(1000)
   Send("{ENTER}")
   sleep(5000)

   Local $sText = _IEBodyReadText($oIE)
   Local $iPosition = StringInStr($stext, "gerekli alanı doldurun")
   ;bulunduğu pozisyon sıfırdan büyük ise, yazılar içinde aradığımız kelime var demektir.
   if $iPosition >0 then
     ;7 adet shift tab yapılıyor.
     ;MsgBox($MB_SYSTEMMODAL, "", $sText)
     Send("{TAB 2}")
     sleep(5000)
    ;ikinci tc no okunuyor.
    Local $tcno=$oExcel.activesheet.cells($i+1, 1).value
    send($tcno)
   endif


next
$oExcel.Workbooks.close

sleep(10000)
_IEQuit($oIE)

exit
 
Üst