Formda Bulunan WebBrowser denetiminde açılan sayfadan bilgi

Katılım
6 Şubat 2005
Mesajlar
1,467
Formda Bulunan WebBrowser denetiminde açılan Web sayfasında bulunan tablodan yine formda kullanmak üzere bilgi almak mümkünmü
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Bunun webbrowser ile bir alakası yok, önemli olan web sayfası adresidir. Excelin dış veri al özelliğini kullanarak veri alabilirsiniz. Bununla ilgilide kodlamalarda forumda mevcuttur. Arama motorundan "QueryTables" kelimesi ile arama yapabilirsiniz.
 
Katılım
6 Şubat 2005
Mesajlar
1,467
Leventm ben form üzerinde bulunan webbrowser'dan navigasyon ile gönderdiğim postdata ile bir asp sayfası üzerinde gelen bilgileri almak istiyorum.
 
Katılım
6 Şubat 2005
Mesajlar
1,467
Kusura bakma Leventm gıdım gıdım gidmeyelim.
Ben form üzerindeki webbrowser'dan Navigate'nin postdata'sı ile istekte bulunuyorum.
Bununla işlenip gelen ASP sayfasında bulunan tablo üzerindeki listeyi almak istiyorum.
Excel'in Dış veri al'nı kullanmak istemiyorum. Becerebilirsem VB6'da formunda kullanmak istiyorum.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Yani sizin sorunuz esas olarak VBA değil, VB ile ilgili anlaşılan.

Sayfa yapısına göre, kullanılacak kodlama değişebilir.

Siz URL'i verirseniz, bir denemek isteyen olabilir.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Örnek teşkil etmesi için bir dosya ekledim ....

Not:

omerceri' Alıntı:
....
Kusura bakma Leventm gıdım gıdım gidmeyelim.
....
Bu hitap tarzınız forumun geneline yakışmadı ...
 
Katılım
6 Şubat 2005
Mesajlar
1,467
Sn Haluk
Alıntı yaptığınız cümle kendime karşı bir özeleştiri idi aslında. Çünkü ne yapmak istediğimi tam olarak ifade etmediğim farkına vararak, boş yere sevdiğim insanların konu üzerinde tahmin üzerine yardım etme çabalarına neden olmamak için kullanmıştım alıntı yaptığınız cümleyi. Daha indirmedim ekteki dosyanızı ama şimdiden teşekkür ederim.
 
Katılım
6 Şubat 2005
Mesajlar
1,467
Sn Haluk
Sizin gönderdiğiniz dosyadaki kodlarla benim derlediğim kodları birleştirdim ama tablo adında sorun çıkıyor sizin linkinizdeki kaynak kodlarada baktım (18) diye bir şey göremedim. Ekte gönderdiğim basit bir ASP sayfasında tek satırlı ve iki hücreli bir tablo var ne yaptı isem tablo adına veya id'sine ulaşamadım. Bu konuda yardımcı olursanız.
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın omerceri,

Bu iş de genel mantık şu şekilde işliyor. Diyelim ki bir web sayfamız olsun. Bu web sayfasının içinde bir çok tablomuz var. Bu sayfanın html kodlarını açıp, baştan itibaren, 0 dan başlamak üzere tabloları sayarız diyelim ki bizim tablo 18. sıfırsan başladığımızda Table(17) olur. Bu tabloyu analiz ettiğimizde satırlardan (TR) ve her satırda da hücrelerden (Td) oluştuğunu görürüz. İşte aynı şekilde bu web sayfası kodları üstünden istediğimiz verileri çekebiliriz.
Örneğin:
Kod:
Sub SerbestPiyasaİstanbul()

        Dim strPath  As String
        Dim IE As Object
        Dim temp As Variant
        Dim HTML_Body As Object, HTML_Tables As Object, MyTable As Object, MyRow As Object
        Dim HTML_TableRows As Object, HTML_TableDivisions As Object
        Dim x As Integer
        ReDim Sorgu(2, 3)
       
        strPath = "http://finans.tnn.net/doviz/ust.asp"
        
        On Error Resume Next
           Set IE = CreateObject("InternetExplorer.Application")
        With IE
            .Navigate strPath
            Do Until IE.readyState = 4: DoEvents: Loop
        
        Set HTML_Tables = IE.Document.getElementsByTagName("Table")
        Set MyTable = HTML_Tables(29)
       
            For x = 1 To 4
                  Sorgu(0, x - 1) = MyTable.Rows(2).Cells(2 * x).InnerText
                  Sorgu(1, x - 1) = MyTable.Rows(5).Cells(2 * x).InnerText
            Next x
                  Sorgu(2, 0) = MyTable.Rows(12).Cells(0).InnerText
                       
         End With
        
        If Err Then
            MsgBox "Sunucu cevap vermedigi icin veriler alinamıyor...", vbCritical
            Exit Sub
        End If
        
        Set HTML_Tables = Nothing
        Set MyTable = Nothing
        Set IE = Nothing
   
       End Sub
Yukarıdaki örnekte
http://finans.tnn.net/doviz/ust.asp sayfasından 30. tablo olan Table(29) un

MyTable.Rows(2).Cells(4 ).InnerText koduyla 3. satırın 5. hücresini istediğimiz bir diziye, form metin kutusuna veya excel sayfası hücresine atayabiliriz.

Siziz örneğin çalışmamasının sebebi örneğin içndeki gggg.asp sayfasında herhangi bir tablonun olmaması sanırım.

Excelin içinde çok yararlı bir alet var o da Microsoft script Editor bu iş için çok yararlı. Hem dizaynı görebiliyorsunuz hemde HTML kodlarını.

İyi çalışmalar :D
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
İlave:

TR --- Table Row

TD --- Table Division


Bunlarda 0 (sıfır) tabanlı endekslerle ifade edilir.

Yani; tablodaki 1nci satır için Rows(0), 2nci satır için Rows(1) kullanacaksınız.

Aynı şekilde, hücreler için;

Cells(0) 1nci hücreyi ifade eder, Cells(1) 2nci hücreyi ifade eder.

Yani, HTML tablo yapıları Excel'e benzemez.

Excel'deki Cells(1,1) tablodaki 1nci satırda 1nci sütundaki hücreye ifade ederken, aynı yapıdaki bir HTML tablosunda bu hücreye VBA ile Tables(0).Rows(0).Cells(0) ile referans vermemiz gerekir.

Benim verdiğim örnek dosyadaki kodlar sadece bir örnekti. Tabii ki aynı kodları kullanamazsınız.

Bu nedenle yukarıdaki mesajımda demiştim ki;

Haluk' Alıntı:
....
Sayfa yapısına göre, kullanılacak kodlama değişebilir.
....
 
Katılım
6 Şubat 2005
Mesajlar
1,467
Evet tablolar için 0 'ı denemiştim ama satır sütunlar 0 kullanmak aklıma gelmedi, hata tipide aynı olduğu için fark edemedim. Yardımlarınız için teşekkür ederim.
 
Üst