• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

web sitesinden dış veri

Katılım
25 Nisan 2007
Mesajlar
442
Excel Vers. ve Dili
Office 2010
merhaba,

bir web sayfasından veri almak istiyorum fakat almak istediğim veriler ilgili sitede birden çok sayfada.

örneğin veri alacağım adres şöyle olsun;

http://www.site.com/data.php=p&1

verileri alacağım sayfalar 1'den 100'e kadar gidiyor mesela. nasıl bir makro yazmalıyım ki otomatik olarak bu verileri alabileyim.

Teşekkürler.
 
Merhaba,

Ekteki dosyada A1 hücresine 1 ile 100 arasında bir rakam yazıp güncelle makrosunu çalıştırırsanız istediğiniz veriyi çekebilirsiniz.:tongue:

Ancak dosyanın içindeki makrodaki adresi düzenleyiniz :) Tabi adreste değişken olan 1-100 arasını yazmayınız..

İyi Çalışmalar.
 

Ekli dosyalar

teşekkürler, çalışma sayfasına herhangi bir veri girmeden kod içerisinde kaçıncı sayfaya kadar veri çekeceğini belirtebilir miyiz?

bir de mesela 1. sayfadaki verileri getirdi. 2. sayfadan alacağı verileri 1. sayfadan alınan verilerin altına getirebilir miyiz?
 
selam,
aşağıdaki kodları boş bir sayfanın kod bölümüne yapıştırın ve çalıştırın.deneyip sonucu haber verin.
Kod:
Sub guncelle()
Dim a As Byte
Dim son As Long
Dim adr As String
adr = "http://www.site.com/data.php=p&"
For a = 1 To 100
    son = Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1
    With ActiveSheet.QueryTables.Add("URL;" & adr & a, Range("A" & son))
        .WebSelectionType = xlAllTables
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
Next a
End Sub
 
teşekkürler, kod istediğim gibi çalışıyor fakat verilerin olduğu sayfanın tümünü getirmiyor. fakat aşağıdaki kodu kullanınca sayfadaki isetdiğim tüm verileri getiriyor. sizin verdiğiniz koda nasıl uyarlayabiliriz?

http://www.eksisozluk.com/index.asp?a=sr&kw=.&p=1

Sub guncelle2()
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.site.com/data.php=p&1", Destination:=Range( _
"$A$1"))
.Name = "data.php="
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End Sub
 
kodlar aşağıdadır.
Kod:
Sub guncelle2()
Dim i As Byte
Dim son As Long
Dim adr As String
adr = "http://www.site.com/data.php=p&"
For i = 1 To 100
    son = Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1
    With ActiveSheet.QueryTables.Add("URL;" & adr & i, Range("A" & son))
        .Name = "data.php="
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
Next i
End Sub
 
tekrar bir sorum olacak. bu kod ile en fazla kaç döngü kurabiliyoruz. 500 yapınca "overflow" hatası veriyor...
 
kodun 2. satırına dikkat ederseniz "dim i as byte" şeklinde bir satır var. buradaki "byte" ifadesini "long" olarak değiştirin. yani "Dim i as Long" yapın.
 
dediğiniz değişikliği yaptım ve "overflow" hatası vermiyor teşekkürler.

fakat şimdi de şöyle bir sorun var. For i = 1 To 50 satırını örneğin 5000 to 6000 olarak değiştirirsem sürekli aynı sayfayı (13. sayfa) getiriyor. 1 to 50 dersem sorun yok, sıralı olarak getiriyor.
 
tamamda sizin almak istediğiniz sitede kaç sayfa varki.
demekki son sayfa 13 olduğu için döngünün sonuna kadar o sayfayı alıp duruyor
 
toplamda 30.000 civarında sayfa var. ilk sayfadan başlatınca problem yok istediğim sayfaları getiriyor. fakat aradaki sayfaları isteyince sürekli aynı sayfayı getiriyor...
 
merak ettim hangi site olduğunu. sitenin adresi nedir bi bakmak istiyorum
 
Geri
Üst