Internet Explorer ile iletişim

Katılım
26 Eylül 2004
Mesajlar
62
Excel Vers. ve Dili
Ofis XP Türkçe
Arkadaşlar
Veterinerlikle ilgili, hayvan ve hayvanlara yapılan işlemlerin tutulduğu resmi bir
siteden, bir excel listesindeki hayvanlara ait bilgileri sorgulayıp, karşılaştırma yapmam gerekiyor.

Aşağıdaki kodla ancak giriş sayfasını geçebiliyorum,

Dim IE
Set IE = CreateObject("internetexplorer.application")
With IE
.Visible = True
.Navigate "http://www.vetbis.com"
Do While .ReadyState <> 4: Loop
With .Document.all
.KULLANICI_ADI.InnerText = "xxxxxx"
.SIFRE.InnerText = "xxxxx"
Do While IE.ReadyState <> 4: Loop
'IE.Document.Forms(0).submit(1).Click
IE.document.forms(0).submit
End With
End With
Set IE = Nothing



Sorun-1 : Giriş sayfasını geçtikten sonra açılan sayfayı okuyamıyorum.
Sorun-2 : Giriş sayfasını geçtikten sonra açılan sayfadan bir butona clikleyip sorgu sayfasına gitmem gerekiyor,sorgu sayfasına direkt gidersem sorgulama yaptırmıyor.
Sorun-3: Sorgu sayfasını manuel olarak açtıktan sonra, aşağıdaki kodla iletişim kurmak istedim hata verdi.

Dim MyApp
Set MyApp = GetObject(, "InternetExplorer.Application")


Sorun-4: Masaüstünde bir URL ile açılmış olan Internet Explorer ile nasıl iletişim kurarım.
Yöntem önemli değil yeterki çözüm olsun, VB VBA Scrip vs. çözüm için farketmez


Yardım ve önerilerinizi bekliyorum.
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın draydix,

Sizin açtığınız sayfanın hiçbir önemi yok. Çünkü kullanıcı adı ve şifreyi
http://www.kkgm.gov.tr/index1.asp adresine yolluyor. Tabi ki kullanıcı adı ve şifre olmadan öyle bir sayfa yok uyarısı geliyor veya yok tabi şu anda bilemiyorum.

Onun için siz bu sayfaya giriş yaparak sayfayı kaydedin ondan sonra da inceleyin mutlaka kullanıcı adı va şifresiyle ile ilgili metin kutusu veya kutuları veya kullanıcı adını karşılaştıran bir script var. Ancak ortadaki olayı çözebilirseniz o sayfayı indirebilirsiniz. İndirme dediğimizde de tabi html kodlarını indiriyorsunuz demek. onları da kaydedip size gerekli olan tabloyu bulup içindeki bilgileri excel veya accesse kaydedebilirsiniz.

Benim anladığım şimdilik bu kadar

İyi çalışmalar
 
Katılım
26 Eylül 2004
Mesajlar
62
Excel Vers. ve Dili
Ofis XP Türkçe
Sayın Modalı sayfaya normal giriş yaptığımda tüm html ve scrip kodlarını görüp inceleyebiliyorum.Sorunum Getobject yöntemini kullanamamak
 
Katılım
26 Eylül 2004
Mesajlar
62
Excel Vers. ve Dili
Ofis XP Türkçe
Getobject yöntemi yerine, aşağıdaki kodla sınırlı da olsa sayfaya ulaştım
Sub makro1()
'On Error Resume Next
Set IE1 = CreateObject("Shell.Application")
Set IE2 = IE1.Windows
Set IE3 = IE2.Item
Cells(5, 2) = IE3.document.Title
Cells(5, 2) = IE3.document.all(1).innerText
End Sub

Ama frameli sayfalardan veri okuyamıyorum....
 
Katılım
26 Eylül 2004
Mesajlar
62
Excel Vers. ve Dili
Ofis XP Türkçe
Bu arada ,aşağıdaki kodla sayfadaki linkleri excele yazdırabilirsiniz.
Sub linklerial()
Set IE1 = CreateObject("Shell.Application")
Set IE2 = IE1.Windows
Set IE3 = IE2.Item
Set IeDoc = IE3.Document
For i = 0 To IeDoc.links.Length - 1
Cells(i + 1, 1).Value = IeDoc.links(i).href
Next i
End Sub
 
Katılım
26 Eylül 2004
Mesajlar
62
Excel Vers. ve Dili
Ofis XP Türkçe
Arkadaşlar
Sorunumu hala çözemedim yardımlarınızı bekliyorum.

Manuel olarak aşağıda kaynak kodu ve ekran görüntüsü olan sayfayı açıyorum.
Sorgulamak istediğim listeyi içeren Excel kitabını açıyorum
Yani masa üstünde iki uygulama açık IE ve Excel

Aşağıdaki kodlarla veri almaya çalıştığımda belirtilen hataları veriyor
Cells(5, 2) = IE3.document.frames(1).contentWindow.document.body.innerHTML 'özel durum oluştu
Cells(5, 2) = IE3.document.frames(0).document.body.innerHTML 'erişim engellendi

Ama sayfayı HTML olarak kaydedip bilgisayarımdan çalıştırdığımda aşağıdaki kod iş görüyor
…………………………………………………
'On Error Resume Next
Set IE1 = CreateObject("Shell.Application")
Set IE2 = IE1.Windows
Set IE3 = IE2.Item

x = ActiveCell.Row
Cells(x, 5) = IE3.document.all.tags("table").Item(1).Rows(1).Cells(4).innerText
Cells(x, 6) = IE3.document.all.tags("table").Item(1).Rows(1).Cells(5).innerText
Cells(x, 7) = IE3.document.all.tags("table").Item(1).Rows(1).Cells(6).innerText
Cells(x, 8) = IE3.document.all.tags("table").Item(1).Rows(1).Cells(7).innerText
Cells(x, 9) = IE3.document.all.tags("table").Item(1).Rows(1).Cells(8).innerText
Cells(x, 10) = IE3.document.all.tags("table").Item(1).Rows(1).Cells(9).innerText
Cells(x, 11) = IE3.document.all.tags("table").Item(1).Rows(1).Cells(10).innerText
Cells(x, 12) = IE3.document.all.tags("table").Item(1).Rows(1).Cells(11).innerText
Cells(x, 13) = IE3.document.all.tags("table").Item(1).Rows(1).Cells(12).innerText
……………………………………………………………………………………….

Sayfa kodu
……………………………………………………………………
<HTML><HEAD><TITLE>VetBis P_Query2</TITLE>

<LINK REL="stylesheet" href="P.css" type="text/css">

<SCRIPT src="../../JScript/Picture.js"></SCRIPT>
<SCRIPT src="P_Query2.js"></SCRIPT>
</HEAD>

<BODY onLoad="parent.frames['frame1'].Wait0();" onmouseover="status=''; return true;">
<TABLE width="780" cellPadding="0" cellSpacing="0" border="0">
<TR><TD align="center">

<TABLE width="780" cellSpacing=1 cellPadding=0 border="0">
<FORM name="F1" method="POST" action ="P_Query2.asp">
<TR>
<TD class="H3D" width="45" colspan="3" align="right" ID="TUMU">Tümü</TD>
<TD class="H3D" width="15"><INPUT class="cb" type="checkbox" checked name="ALL" value="" onClick="javascript:CheckAll()"></TD>
<TD class="H3D" width="90">KimlikNo</TD>
<TD class="H3D" width="87">Doğduğuİşl</TD>
<TD class="H3D" width="87">Bulunduğuİşl</TD>
<TD class="H3D" width="30">Cins.</TD>
<TD class="H3D" width="31">Nevi</TD>
<TD class="H3D" width="120">Irkı</TD>
<TD class="H3D" width="65">DoğumTarihi</TD>
<TD class="H3D" width="90">Ana</TD>
<TD class="H3D" width="90">Baba</TD>
<TD class="H3D" width="30" colspan="2"> </TD>
</TR>

<tr bgcolor="#FFFFFF">

<TD><a href="javascript:Submit('P_Edit','TR55713332')"><img border="0" src="../../images/General/ListEdit.gif" Alt="Yenile"></a></TD>

<TD><a href="javascript:Submit('P_Zoom0','TR55713332','5560180')"><img border="0" src="../../images/General/ListZoom.gif" Alt="Ayrıntılar"></a></TD>
<TD><a href="javascript:Submit('P_Print0a','TR55713332')"><img border="0" src="../../images/General/ListPrint.gif" alt="Pasaport" width="16" height="18"></a></TD>
<TD><INPUT class="cb" type="checkbox" name="cb1" value="TR55713332" checked></TD>
<TD>TR55713332</TD>
<TD>5560180</TD>
<TD>5560180</TD>
<TD>D</TD>
<TD>S</TD>
<TD>Montofon M</TD>

<TD>01.01.2001</TD>
<TD></TD>
<TD></TD>

<TD><a href="javascript:Submit('P_Move','TR55713332')"><img border="0" src='../../images/General/ListMove.gif' alt='Nakil'></a></TD>

<TD><a href="javascript:Submit('P_Del','TR55713332')"><img border="0" src="../../images/General/ListDel.gif" Alt="Sil"></a></TD>

</TR>

</FORM>
</TABLE>

<TABLE cellPadding="0" cellSpacing="0" width="100%" style="border-collapse: collapse" bordercolor="#111111">
<TR>

</TR>
</TABLE>

<BR></TD></TR></TABLE>
</BODY></HTML>
…………………………………………………….

Sayfanın ekran görüntüsü
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Say&#305;n drydix,

Benim fikrime g&#246;re siz excel &#252;zerinden sayfaya ula&#351;maya &#231;al&#305;&#351;t&#305;&#287;&#305;n&#305;zda do&#287;ru sayfa gelmiyor.

Access de bu t&#252;r bir uygulama yaparken &#246;ncelikle do&#287;ru sayfan&#305;n gelip gelmedi&#287;ini kontrol ediyorum. Siz excelden sayfay&#305; &#231;a&#287;&#305;r&#305;rken nas&#305;l bir yol izliyorsunuz? &#214;ncelikle &#351;ifre b&#246;l&#252;m&#252;n&#252; ge&#231;meniz gerekiyor. Ondan sonra da sorgulama yap&#305;yorsunuz ba&#287;land&#305;&#287;&#305;n&#305;z yerin veritaban&#305;nda. &#304;&#351;te bu noktada &#246;nemli olan do&#287;ru ba&#287;lant&#305; adresini yollamak (sorgu c&#252;mlesi dahil)

Basit bir &#246;rnek vereyim T&#252;rk Telekom web sayfas&#305;ndan telefon no sorgularken &#351;u ba&#287;lant&#305; adresini kullan&#305;yorum:

URL = "http://www.ttrehber.gov.tr/trk-wp/IDA2?IDAERROR=&QRY=all&RNG=lequ&CTRY=trk&LANG=tu&PAGE=simpleSearch&LIP=simpleSearch&ACTION=search&STP=S&REQ=20"

Ancak bu yeterli de&#287;il bir de buna kendi kriterlerime g&#246;re &#351;u eklentileri yap&#305;yorum:

Kod:
strNAM = "&NAM=" & soyad&#305;
    strGIV = "&DOR&GIV=" & ad&#305;
    strSTN = "&STN=" & &#304;l
    strQNA = "&QNA=" & semt
 
    strSorgu = URL & strNAM & strGIV & strSTN & strQNA
Burada telefon numaras&#305;n&#305; bulmak istedi&#287;im ki&#351;inin soyad&#305;n&#305;, ad&#305;n&#305;, ili ve semtini de URL c&#252;mlesinin sonuna ekliyorum.

Ondan sonra da

Kod:
Set IE = CreateObject("InternetExplorer.Application")
    With IE
        .Navigate strSorgu
        Do Until IE.readyState = 4: DoEvents: Loop
 
            temp = IE.Document.all.Item.innerhtml
Kod par&#231;as&#305;yla da bilgileri alaca&#287;&#305;m sayfaya ula&#351;&#305;yorum.

Burada temp ald&#305;&#287;&#305;m sayfan&#305;n html kodlar&#305;d&#305;r..

&#304;&#351;te bu noktaya kadar &#246;ncelikle ula&#351;man&#305;z gerekiyor. Ben temp i formdaki bir metin kutusunun i&#231;eri&#287;i olarak at&#305;yorum ve &#246;ncelikle do&#287;ru sayfan&#305;n gelip gelmedi&#287;ini kontrol ediyorum.

Bu noktaya kadar i&#351;leminiz do&#287;ru ise ondan sonra bu i&#231;eri&#287;in i&#231;inden istedi&#287;iniz bilgileri excel sayfalar&#305;na ula&#351;t&#305;racak olan kod par&#231;alar&#305;n&#305; kullanabilirsiniz.

Yani &#246;zet olarak benim &#246;rnekdeki strSorgu nun do&#287;ru olmas&#305; gerekiyor ki do&#287;ru web sayfas&#305;n&#305;n i&#231;eri&#287;ini indirebilesiniz.

&#304;yi &#231;al&#305;&#351;malar:)
 
Son düzenleme:
Katılım
26 Eylül 2004
Mesajlar
62
Excel Vers. ve Dili
Ofis XP Türkçe
Sayın Modalı

Sayfayı excelden açmaktan vazgeçtim.Nedeni ise;

Sayfaya şifreyle giriliyor,login olunca bir menu sayfası geliyor, oradan sorgu sayfasına geçiliyor,

Bu işlemleri kodla yapınca sayfaların yüklenmesi tamamlanamazsa hatalar oluşuyor,ayrıca kod çok uzun ve her sorgulamada sil baştan giriş yap,menuyu geç ,sorgu kriterlerini belirle bu zaman alıyor ve hatalara neden oluyor

Bana pratik bir yol lazım
Sayfayı kod yazmadan elle açmak ve excelden sorgulamak
Zaten kısmen yapıyorum,sorun sayfada frame kullanılmış ve frameden bilgileri alamıyorum.
..............................................
AppActivate ("internet explorer")
SendKeys "{TAB}", True
SendKeys "{TAB}", True
SendKeys ActiveCell, True
SendKeys "{ENTER}", True
SendKeys "^a", True
SendKeys "^c", True

...................................
gibi bir yöntem kısmen çözüm oluyor ama güvenilir bir yöntem değil.

HTML ve JScript bilgisine ihtiyacım var.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,324
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Bahsetti&#287;iniz URL'i ve login kriterlerini vermedi&#287;iniz i&#231;in sayfay&#305; g&#246;rme &#351;ans&#305;m&#305;z olmad&#305; ama, bence bahsetti&#287;iniz di&#287;er frame asl&#305;nda ba&#351;ka bir URL'e sahip olabilir.

&#214;rne&#287;in, TCMB'nin adresi;

www.tcmb.gov.tr 'dir. Bu ana sayfan&#305;n sol taraf&#305;nda bir frame vard&#305;r ve bu frame'in URL'i de;

http://www.tcmb.gov.tr/yeni/tablolar.php 'dir.

E&#287;er sizde de durum yine b&#246;yleyse, belki frame'in URL'ini y&#252;kleyip oradan bir&#351;eyler yapabilirsiniz.

Kesin bir &#351;eyler s&#246;ylemek i&#231;in bahsetti&#287;iniz URL ve Login kriterlerini (username, password) bilmek gerekir.
 
Katılım
26 Eylül 2004
Mesajlar
62
Excel Vers. ve Dili
Ofis XP Türkçe
Nihayet sorunumu aşağıdaki kodla hallettim arkadaşlar


Sub sorgula()
On Error Resume Next
Set IE1 = CreateObject("Shell.Application")
Set IE2 = IE1.Windows
Set IE3 = IE2.Item

IE3.document.frames("Menu").frames(0).document.forms("F1").elements(12).Value = "="
IE3.document.frames("Menu").frames(0).document.forms("F1").elements("PEDIGRI_NO").Value = Cells(ActiveCell.Row, 3)
IE3.document.frames("Menu").frames(0).document.forms("F1").submit
Application.Wait Now + TimeValue("00:00:03")

For x = 4 To 11
Cells(ActiveCell.Row, x) = IE3.document.frames("Menu").frames(1).document.forms("F1") _
.document.all.tags("table").Item(1).Rows(1).Cells(x).innerText
Next x

End Sub
 
Katılım
26 Eylül 2004
Mesajlar
62
Excel Vers. ve Dili
Ofis XP Türkçe
Aynı yöntemin tc kimlik için uyarlanmış hali ekte.....
 

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
De&#287;erli arkada&#351;lar,

Birka&#231; &#246;rnek inceledim, excelden internet ba&#287;lant&#305;s&#305; konusunda bir &#351;eyler &#246;&#287;renmeye &#231;al&#305;&#351;&#305;yorum. &#214;rneklerde, sayfada bulunan "giri&#351;" d&#252;&#287;melerinin kod ile &#231;al&#305;&#351;t&#305;r&#305;lmas&#305; prensibi nedir? Yani bir &#246;rnekte .click demi&#351;, di&#287;erinde .clik filan yok.

Bir sayfa &#252;zerinde deniyorum &#231;al&#305;&#351;mam&#305;, kullan&#305;c&#305; ad&#305; ve &#351;ifreyi at&#305;yor, ama gi&#351;i&#351; d&#252;&#287;mesine basm&#305;yor bir t&#252;rl&#252;.. Bir sayfadaki giri&#351; d&#252;&#287;mesine nas&#305;l basm&#305;&#351; oluruz?

Bu konuda bilgi verirseniz veya bu konuda bilgi i&#231;eren bir adres verirseniz memnun olurum. &#304;yi &#231;al&#305;&#351;malar..
 
Son düzenleme:

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,324
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Sayın mesleki;

Bende geçerli bir kullanıcı adı ve şifre olmadığı için tam olarak deneyemedim ama dosyanız ektedir.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,324
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Sayın mesleki;

Çözüm işinize yaradı mı ?
 

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
Sayın Haluk, çok sağolun. Nasıl yaptığınızı anlamaya çalışıyorum şu anda. Birkaç deneme yapmam gerekiyor. Aynı şekilde açılacak sayfalarda çıkan düğmelere tıklayıp bilgi de girebilir miyiz acaba.

Yani asıl amacım, excelden kısamesaj göndermek. Bir yere telefon nosunu, diğer yere de iletimi yazayım, makro sayfaya girsin, açılan sayfadan da tekrar ilgili yere girsin, sonra da yine ilgili yerlere, gerekli bilgileri girsin ve iletiyi göndersin.

kurum bana xml kodlarını filan verdi, ben de forumdan birtakım dosyalar indirip okuyarak öğrenmeye çalışıyorum. XML kodları ile, doğrudan ileti gönderilebiliyor sanıyorum, ama nasıl yapacağımı bilmiyorum işte.

İlginize teşekkür ederim, bana yol göstermenizi dilerim.
 
Son düzenleme:

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,614
Excel Vers. ve Dili
Pro Plus 2021
&#304;nternetten ald&#305;&#287;&#305;m &#246;rne&#287;i size uyarlad&#305;m. Bir deneyin.

A&#351;a&#287;&#305;daki xml kodlar&#305;n&#305; sayfa &#252;zerinde A sutununa d&#252;zenleyerek yaz&#305;n.

Kod:
<?xml   version="1.0" encoding="iso-8859-9"?>       
<mainbody>       
<header>       
<company>AYTEL</company>       
<password>Sifre</password>       
<startdate>151020061828</startdate>       
<stopdate>171020061425</stopdate>       
<type>1:n</type>       
</header>       
<body>       
<msg><![CDATA[Deneme   Mesaj&#305;]]></msg>       
<no>905551234567</no>       
<no>905551234567</no>       
</body>       
</mainbody>
Vba penceresinde referanslarda Microsoft XML, v5.0 referans&#305;n&#305; ekleyin.
A&#351;a&#287;&#305;da ki kodlar&#305; deneyin.


Kod:
Sub postala()
Dim objXMLHTTP As MSXML2.XMLHTTP
Set objXMLHTTP = New MSXML2.XMLHTTP

Dim newXML As String


For x = 1 To [a65536].End(3).Row
    newXML = newXML & Cells(x, 1)
Next x

objXMLHTTP.Open "post", "http://www.aytelsms.com/post/SendBulkSMS.asp", False
objXMLHTTP.send newXML
    '*** The following line will display the results!! ***
    'MsgBox objXMLHTTP.responseText
    Set objXMLHTTP = Nothing
End Sub
 

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
Şu anda Sayın Halûk'un verdiği kodlardan hareketle, sayfa içinde 2 sayfa daha ilerledim; İlerledim yani biraz. :)
 
Üst