2016-03-21 93 views
0

Şu anda, bir çalışma sayfasında ve VBA'da, oynatma istatistiği verilerini, çalışma sayfama tıklatıldığında resmi bir spor web sitesinden almak için bir komut düğmesi kullanmaya çalışıyorum. Kopyalamaya çalıştığım veriler 21'in üzerinde farklı web sayfasıdır. URL'nin en sonunda sayı 1 ve 21 arasında değişmektedir http://www.afl.com.au/stats/player-ratings/overall-standings#page/1 baktığınız hangi veri sayfası belirtmek için şu şekildedir:VBA'da birden çok web sayfasından veri alma

web sayfaları için URL biçimidir.

benim kodu için aşağıya bakın:

Sub Button1_Click() 

    Const WebAddress As String = "http://www.afl.com.au/stats/player-ratings/_ 
    overall-standings#page/" 

    Dim qt As QueryTable 
    Dim PlayerRatings As Worksheet 
    Dim PageNumber As Integer 
    Dim RowPasteNumber As Integer 

    RowPasteNumber = 6 
    Set PlayerRatings = ActiveSheet 

    For PageNumber = 1 To 21 

     Set qt = PlayerRatings.QueryTables.Add(Connection:="URL;" & WebAddress & PageNumber,_ 
     Destination:=Range("A" & RowPasteNumber)) 
     qt.Refresh BackgroundQuery:=False 
     RowPasteNumber = RowPasteNumber + 41 

    Next PageNumber 

End Sub 

Yani benim düşünce ben veriler daha sonra bulunduğu farklı web sayfaları arasında gezinmek için PageNumber tam sayısını her artıran döngü İÇİN bir kullanabilmek için gerektiğiydi Bu web sayfasındaki verileri kopyalayın ve çalışma sayfamdaki önceki satırların 41 satırını yapıştırın.

Karşılaştığım sorun, FOR döngüsünün 21 yinelemeyi (gerektiği gibi) tamamlaması ve her defasında önceki verilerin altındaki satırların (gerektiği gibi) her birini yapıştırmasıdır, ancak verileri kopyalamaya devam etmesidir. Web sayfası 1 tekrar tekrar.

Kodumun bunu neden yaptığını gören var mı?

Yardımınız çok takdir edilmektedir.

Stephen

cevap

0

Geçenlerde benzer bir sorun ise web kazıma karşılaştım.

Sorun, adresin # numaralı bir hash değerini içermesidir. #'dan sonraki herhangi bir şey sunucu tarafından hiçbir zaman işlenmez.

başka stackoverflow cevap İşte ( Why the hash part of the URL is not in the server side?)

kısmını tekrarlamak için Wikipedia bu konuda ne diyor:

parça tanımlayıcısı fonksiyonları farklı URI geri kalanından daha: yani çağın işleme, numaralı sunucudan katılımı olmayan, yalnızca istemci tarafı olan 'dur. Bir aracı (Web tarayıcısı gibi) bir Web sunucusundan bir kaynak istediğinde, aracı URI'yi sunucuya gönderir, ancak parçayı göndermez. Bunun yerine, aracı, sunucunun kaynağı göndermesini bekler ve aracı, parçayı parça değerine göre işler. En yaygın durumda, aracı, bir Web sayfasını, parça değerine eşit bir öznitelik dizesine sahip olan ankraj elemanına kaydırır. Diğer müşteri davranışları


doğrudan IE nesnesi otomatikleştirmek ve her birinden sonra document.body.innerHTML bir kopyasını elde etmek olurdu bu geçici bir çözüm için en kolay yolu gezinmek ve/veya eylemi tıklayın mümkündür. Bir başlangıç ​​noktası için buraya bakın: http://www.excely.com/excel-vba/ie-automation.shtml

+0

Cheers Ru Hasha. Bu benim ilk VBA yolculuğumdur, bu yüzden bu mükemmel bağlantıya bir göz atacağım ve ne ile karşılaştığımı göreceğim. Tavsiye için teşekkürler! – Stephen

İlgili konular