Webten bilgi alırken bir süre sonra kodların tıkanması

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

irfancantr

Altın Üye
Katılım
18 Haziran 2007
Mesajlar
625
Excel Vers. ve Dili
Excel 365 - İmngilizce
Altın Üyelik Bitiş Tarihi
07-05-2029
Merhaba değerli forum üyeleri,

Elimde bulunan web adreslerinden webten bilgi çekiyorum. İşi daha kolaylaştırmak adına farklı bir yönteme başvurdum fakat excel kitabı 82 sayfa alımda bir donuyor.

Sayfa A1 hücresinde rakam değiştikçe makro1 adlı makroyu çalıştırıyorum.
Makro 1 in yaptığı işlem ise;
Sayfa1 de A1'den A10000'e kadar sayılar var, D1:D10000 hücrelerinde ise bu rakamlara karşılık web adresleri var.

Makro 1 Sayfa3 A1 hücresinde ki rakamın karşılığından adresi alıyor ve o adresteki verileri excel sayfasına aktarıyor. Daha sonra aktarım bittiğinde sayfa3 sayfasında alınan bilgileri bir tabloya dolduruyor ve bilgilerin olduğu kısmı temizleyip tekrardan A1 hücresine +1 sayı ilavesi yapıyor. Bu şekilde işlem hiç durmadan devam ediyor.

Sorunum ise her 83. işlemde excel kitabı donuyor. Bu normal birşey mi yoksa makrolarda ufak oynamalar ile bu durumu aşabilir miyiz?

Kod:
Sub Makro1()
If [Sayfa3!A1] > 100 Then Exit Sub
Cells(1, 3).FormulaR1C1 = "=VLOOKUP(RC[-2],Sayfa1!C[-2]:C[1],4,0)"
 With [c1]: .Formula = .Value: End With
Const AdresUrl As String = "http://www.motorsporlari.net/car/"
 Sheets("Sayfa3").Select
 Range("b3:c100").Select
    Selection.Clear
    'Selection.QueryTable.Delete
    Range("A2").Select

With ActiveSheet.QueryTables.Add(Connection:= _
    "URL;" & AdresUrl & [c1], Destination:=Cells(3, 2))
    
        .Name = "bmw-320d-advantage-i2284"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "4"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    
End With

Dim sat, a
sat = Range("K" & Rows.Count).End(xlUp).Row + 1
On Error Resume Next
Cells(sat, "L") = [C4].Value
Cells(sat, "M") = [C5].Value
Cells(sat, "N") = [C6].Value
Cells(sat, "O") = [C7].Value
Cells(sat, "P") = [C8].Value
Cells(sat, "Q") = [C9].Value
Cells(sat, "R") = [C10].Value
Cells(sat, "S") = [C11].Value
Cells(sat, "T") = [C14].Value
Cells(sat, "U") = [C15].Value
Cells(sat, "V") = [C16].Value
Cells(sat, "W") = [C17].Value
Cells(sat, "X") = [C18].Value
Cells(sat, "Y") = [C19].Value
Cells(sat, "Z") = [C20].Value
Cells(sat, "AA") = [C21].Value
Cells(sat, "AB") = [C22].Value
Cells(sat, "AC") = [C23].Value
Cells(sat, "AD") = [C24].Value
Cells(sat, "AE") = [C25].Value
Cells(sat, "AF") = [C26].Value
Cells(sat, "AG") = [C29].Value
Cells(sat, "AH") = [C30].Value
Cells(sat, "AI") = [C31].Value
Cells(sat, "AJ") = [C34].Value
Cells(sat, "AK") = [C35].Value
Cells(sat, "AL") = [C36].Value
Cells(sat, "AM") = [C37].Value
Cells(sat, "AN") = [C38].Value
Cells(sat, "AO") = [C39].Value
Cells(sat, "AP") = [C40].Value
Cells(sat, "AQ") = [C41].Value
Cells(sat, "AR") = [C42].Value
Cells(sat, "AS") = [C43].Value
Cells(sat, "AT") = [C44].Value
Cells(sat, "AU") = [C45].Value
Cells(sat, "AV") = [C46].Value
Cells(sat, "AW") = [C47].Value
Cells(sat, "AX") = [C48].Value
Cells(sat, "AY") = [C49].Value
Cells(sat, "AZ") = [C50].Value
Cells(sat, "BA") = [C51].Value
Cells(sat, "BB") = [C52].Value
Cells(sat, "BC") = [C53].Value
Cells(sat, "BD") = [C54].Value
Cells(sat, "BE") = [C55].Value
Cells(sat, "BF") = [C56].Value
Cells(sat, "BG") = [C57].Value
Cells(sat, "BH") = [C58].Value
Cells(sat, "BI") = [C59].Value
Cells(sat, "BJ") = [C60].Value
Cells(sat, "BK") = [C61].Value
Cells(sat, "BL") = [C62].Value
Cells(sat, "BM") = [C65].Value
Cells(sat, "BN") = [C66].Value
Cells(sat, "BO") = [C67].Value
Cells(sat, "BP") = [C68].Value
Cells(sat, "BQ") = [C69].Value
Cells(sat, "BR") = [C70].Value
Cells(sat, "BS") = [C71].Value
Cells(sat, "BT") = [C72].Value
Cells(sat, "BU") = [C75].Value
Cells(sat, "BV") = [C76].Value
Cells(sat, "BW") = [C77].Value
Cells(sat, "BX") = [C78].Value
Cells(sat, "BY") = [C81].Value
Cells(sat, "BZ") = [C82].Value
Cells(sat, "CA") = [C83].Value
Cells(sat, "CB") = [C84].Value
Cells(sat, "CC") = [C85].Value
Cells(sat, "CD") = [C86].Value
Cells(sat, "CE") = [C87].Value
Cells(sat, "CF") = [C88].Value
Cells(sat, "CG") = [C89].Value
Cells(sat, "CH") = [C90].Value
Cells(sat, "CI") = [C91].Value
Cells(sat, "CJ") = [C92].Value



a = Range("L" & Rows.Count).End(xlUp).Row: Range("K2") = 1
Range("K2:K" & a).DataSeries rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, Step:=1, Trend:=False

[a1].Value = [a1].Value + 1
End Sub

Sayfa 3 kodu ise;
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" <> Empty Then Makro1
End Sub
Dosyam çok sade ve anlaşılır diye düşünüyorum. Sadece web adresleri yüzünden (10bin adet ) bu şekilde kabarık duruyor.
 

Ekli dosyalar

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,376
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
xmlHTTP' ye ne dersiniz? Kod örneği AlfaRomeo için.

Kod:
Sub Get_Table_From_HTML()
[COLOR=DarkGreen]'Dim doc As New HTMLDocument ' Microsoft HTML Object Library[/COLOR]
Const URL = "http://www.motorsporlari.net/car/tech_spec.asp?specID=14754&make=Alfa%20Romeo"

Set HTTP = CreateObject("MSXML2.XMLHTTP")
Set doc = CreateObject("HTMLFile")

HTTP.Open "get", URL, False
HTTP.send

doc.write (StrConv(HTTP.responsebody, vbUnicode))

Set tbl = doc.getElementsByTagName("table").Item(3)

For i = 0 To tbl.Rows.Length - 1
    For j = 0 To tbl.Rows(i).Cells.Length - 1
        Cells(i + 1, j + 1) = tbl.Rows(i).Cells(j).innerText
    Next
Next

Set tbl = Nothing
Set doc = Nothing
Set HTTP = Nothing
End Sub
 

irfancantr

Altın Üye
Katılım
18 Haziran 2007
Mesajlar
625
Excel Vers. ve Dili
Excel 365 - İmngilizce
Altın Üyelik Bitiş Tarihi
07-05-2029
xmlHTTP' ye ne dersiniz? Kod örneği AlfaRomeo için.

Kod:
Sub Get_Table_From_HTML()
[COLOR=DarkGreen]'Dim doc As New HTMLDocument ' Microsoft HTML Object Library[/COLOR]
Const URL = "http://www.motorsporlari.net/car/tech_spec.asp?specID=14754&make=Alfa%20Romeo"

Set HTTP = CreateObject("MSXML2.XMLHTTP")
Set doc = CreateObject("HTMLFile")

HTTP.Open "get", URL, False
HTTP.send

doc.write (StrConv(HTTP.responsebody, vbUnicode))

Set tbl = doc.getElementsByTagName("table").Item(3)

For i = 0 To tbl.Rows.Length - 1
    For j = 0 To tbl.Rows(i).Cells.Length - 1
        Cells(i + 1, j + 1) = tbl.Rows(i).Cells(j).innerText
    Next
Next

Set tbl = Nothing
Set doc = Nothing
Set HTTP = Nothing
End Sub
Hocam şu an iş yerinde bakamıyorum ama akşama hazırladığınız kodu kendime uyarlamaya çalışacağım. Umarım bu kod sayesinde aralıksız olarak veri indirme işlemini gerçekleştirebilirim.
 

irfancantr

Altın Üye
Katılım
18 Haziran 2007
Mesajlar
625
Excel Vers. ve Dili
Excel 365 - İmngilizce
Altın Üyelik Bitiş Tarihi
07-05-2029
Zeki Hocam verdiğiniz kodda web adresini bir hücreden almasını nasıl sağlıyacağız?

örnek olarak anlatmak istediğim;
Kod:
Const AdresUrl As String = "http://www.motorsporlari.net/car/
With ActiveSheet.QueryTables.Add(Connection:= _
    "URL;" & AdresUrl & [c1], Destination:=Cells(3, 2))

Gibi bir tanımlamayı sağlayabiliyor muyuz?
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,376
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Dikkat ederseniz sabit tanımı var. Bunu;

Kod:
Const URL = "http://www.motorsporlari.net/car/"
olarak değiştirin.

Sonra;

Kod:
HTTP.Open "get", URL & [c1], False
olarak değiştirin.
 

irfancantr

Altın Üye
Katılım
18 Haziran 2007
Mesajlar
625
Excel Vers. ve Dili
Excel 365 - İmngilizce
Altın Üyelik Bitiş Tarihi
07-05-2029
Dikkat ederseniz sabit tanımı var. Bunu;

Kod:
Const URL = "http://www.motorsporlari.net/car/"
olarak değiştirin.

Sonra;

Kod:
HTTP.Open "get", URL & [c1], False
olarak değiştirin.
Teşekkür ederim Zeki Hocam , otomatiğe bağladım web sayfası sayesinde kendi datalarımı oluşturabilirim artık.

Bir defa hata aldım ama sanırım siteden çok hızlı veri çektiği için diye düşünüyorum.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,376
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Hatanın çıkış satırı ve hata mesajını yazarsanız kod biraz daha kullanışlı olabilir.
Ne şekilde düzenlediğiniz de önemli...
 

irfancantr

Altın Üye
Katılım
18 Haziran 2007
Mesajlar
625
Excel Vers. ve Dili
Excel 365 - İmngilizce
Altın Üyelik Bitiş Tarihi
07-05-2029
Hatanın çıkış satırı ve hata mesajını yazarsanız kod biraz daha kullanışlı olabilir.
Ne şekilde düzenlediğiniz de önemli...
Hocam sadece zaten tek makro hazırladım onu da size hata veren yeri ile birlikte göstereyim.

Kod:
Sub Makro1()
If [Sayfa3!G1] > 1000 Then Exit Sub
Cells(1, 9).FormulaR1C1 = "=VLOOKUP(RC[-2],Sayfa1!C[-8]:C[-5],4,0)"
With [I1]: .Formula = .Value: End With
Worksheets("Sayfa3").Range("A1:B100").ClearContents
Const URL = "http://www.motorsporlari.net/car/"

Set HTTP = CreateObject("MSXML2.XMLHTTP")
Set doc = CreateObject("HTMLFile")

HTTP.Open "get", URL & [I1], False
HTTP.send

doc.write (StrConv(HTTP.responsebody, vbUnicode))

Set tbl = doc.getElementsByTagName("table").Item(3)

For i = 0 To tbl.Rows.Length - 1
    For j = 0 To tbl.Rows(i).Cells.Length - 1
        [COLOR="Red"][B]Cells(i + 1, j + 1) = tbl.Rows(i).Cells(j).innerText[/B][/COLOR]
    Next
Next

Set tbl = Nothing
Set doc = Nothing
Set HTTP = Nothing

Dim sat, a
sat = Range("K" & Rows.Count).End(xlUp).Row + 1
On Error Resume Next
Cells(sat, "L") = [B2].Value
Cells(sat, "M") = [B3].Value
Cells(sat, "N") = [B4].Value
Cells(sat, "O") = [B5].Value
Cells(sat, "P") = [B6].Value
Cells(sat, "Q") = [B7].Value
Cells(sat, "R") = [B8].Value
Cells(sat, "S") = [B9].Value
Cells(sat, "T") = [B12].Value
Cells(sat, "U") = [B13].Value
Cells(sat, "V") = [B14].Value
Cells(sat, "W") = [B15].Value
Cells(sat, "X") = [B16].Value
Cells(sat, "Y") = [B17].Value
Cells(sat, "Z") = [B18].Value
Cells(sat, "AA") = [B19].Value
Cells(sat, "AB") = [B20].Value
Cells(sat, "AC") = [B21].Value
Cells(sat, "AD") = [B22].Value
Cells(sat, "AE") = [B23].Value
Cells(sat, "AF") = [B24].Value
Cells(sat, "AG") = [B27].Value
Cells(sat, "AH") = [B28].Value
Cells(sat, "AI") = [B29].Value
Cells(sat, "AJ") = [B32].Value
Cells(sat, "AK") = [B33].Value
Cells(sat, "AL") = [B34].Value
Cells(sat, "AM") = [B35].Value
Cells(sat, "AN") = [B36].Value
Cells(sat, "AO") = [B37].Value
Cells(sat, "AP") = [B38].Value
Cells(sat, "AQ") = [B39].Value
Cells(sat, "AR") = [B40].Value
Cells(sat, "AS") = [B41].Value
Cells(sat, "AT") = [B42].Value
Cells(sat, "AU") = [B43].Value
Cells(sat, "AV") = [B44].Value
Cells(sat, "AW") = [B45].Value
Cells(sat, "AX") = [B46].Value
Cells(sat, "AY") = [B47].Value
Cells(sat, "AZ") = [B48].Value
Cells(sat, "BA") = [B49].Value
Cells(sat, "BB") = [B50].Value
Cells(sat, "BC") = [B51].Value
Cells(sat, "BD") = [B52].Value
Cells(sat, "BE") = [B53].Value
Cells(sat, "BF") = [B54].Value
Cells(sat, "BG") = [B55].Value
Cells(sat, "BH") = [B56].Value
Cells(sat, "BI") = [B57].Value
Cells(sat, "BJ") = [B58].Value
Cells(sat, "BK") = [B59].Value
Cells(sat, "BL") = [B60].Value
Cells(sat, "BM") = [B63].Value
Cells(sat, "BN") = [B64].Value
Cells(sat, "BO") = [B65].Value
Cells(sat, "BP") = [B66].Value
Cells(sat, "BQ") = [B67].Value
Cells(sat, "BR") = [B68].Value
Cells(sat, "BS") = [B69].Value
Cells(sat, "BT") = [B70].Value
Cells(sat, "BU") = [B73].Value
Cells(sat, "BV") = [B74].Value
Cells(sat, "BW") = [B75].Value
Cells(sat, "BX") = [B76].Value
Cells(sat, "BY") = [B79].Value
Cells(sat, "BZ") = [B80].Value
Cells(sat, "CA") = [B81].Value
Cells(sat, "CB") = [B82].Value
Cells(sat, "CC") = [B83].Value
Cells(sat, "CD") = [B84].Value
Cells(sat, "CE") = [B85].Value
Cells(sat, "CF") = [B86].Value
Cells(sat, "CG") = [B87].Value
Cells(sat, "CH") = [B88].Value
Cells(sat, "CI") = [B89].Value
Cells(sat, "CJ") = [B90].Value



a = Range("L" & Rows.Count).End(xlUp).Row: Range("K2") = 1
Range("K2:K" & a).DataSeries rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, Step:=1, Trend:=False

[g1].Value = [g1].Value + 1
End Sub
Kırmızı ile işaretli olan kısım her 80 veya 90 sayfa alımı yaptıktan sonra hata olarak makroyu durduruyor.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,376
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Şu hücredeki adresi de ekler misiniz? 3 nolu tablo mevcut olmayabilir. Yine olmazsa "on error resume next" ile ezip geçersiniz. :)

Kod:
Cells(1, 9)
 

irfancantr

Altın Üye
Katılım
18 Haziran 2007
Mesajlar
625
Excel Vers. ve Dili
Excel 365 - İmngilizce
Altın Üyelik Bitiş Tarihi
07-05-2029
Şu hücredeki adresi de ekler misiniz? 3 nolu tablo mevcut olmayabilir. Yine olmazsa "on error resume next" ile ezip geçersiniz. :)

Kod:
Cells(1, 9)
Hocam adreste bir problem olduğunu düşünmüyorum ama adresi yinede ekliyeyim,
tech_spec.asp?specID=18313&make=Audi

Lakin ben makroda hata verdiğinde End butonu ile hatayı es geçip dosyayı kayıt altına alıp tekrardan kapatıp açıyorum. Lakin bu sefer hata verdiği sayfayı bu sefer hata vermeden kabul ediyor ve devam ediyor ama bu sefer de hatayı ilk satırda ki
Kod:
If [Sayfa3!G1] > 1000 Then
olarak gösteriyor :)

Bunu da es geçersem tekrar ilk söylediğimi hata olarak gösteriyor. Yani hataları bir o bir bu olarak gösterip duruyor.
 

irfancantr

Altın Üye
Katılım
18 Haziran 2007
Mesajlar
625
Excel Vers. ve Dili
Excel 365 - İmngilizce
Altın Üyelik Bitiş Tarihi
07-05-2029
Şu hücredeki adresi de ekler misiniz? 3 nolu tablo mevcut olmayabilir. Yine olmazsa "on error resume next" ile ezip geçersiniz. :)

Kod:
Cells(1, 9)
Zeki hocam On Error Resume Next ile hiç uğraşmadan işime bakayım en iyisi diye düşünürken bu seferde makro hiç hata vermeden durdu :) .

Acaba bu durum site ile alakalı olabilir mi?

Durumu değerlendirmek için farklı bir sitede deneme yapmayı deneyeceğim.
 

irfancantr

Altın Üye
Katılım
18 Haziran 2007
Mesajlar
625
Excel Vers. ve Dili
Excel 365 - İmngilizce
Altın Üyelik Bitiş Tarihi
07-05-2029
Site ile ilgili olduğunu düşünmüyorum. Aynı formatta ve şekilde farklı bir site de deneme yaptım, konu başında ki bahsettiğim hatayı alıyorum.
 

irfancantr

Altın Üye
Katılım
18 Haziran 2007
Mesajlar
625
Excel Vers. ve Dili
Excel 365 - İmngilizce
Altın Üyelik Bitiş Tarihi
07-05-2029
Bu siteden alırken de hata alıyorum ve bu siteden sadece 65 sayfa bilgi çekebiliyorum. Şu an üzerinde durduğumuz 82 sayfa da bir hata veriyor .

Bu durum excel ile mi alakalı acaba?
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,376
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Düzenleme : Cache sorunu...
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,850
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
web sitesini açılırken bir kaç saniye bekleterek denermisiniz.

Zeki beyin kaduna aşağıdakinden önce gelmek üzere

Kod:
Set tbl = doc.getElementsByTagName("table").Item(3)
bunu eklermisiniz.

Kod:
Application.Wait (Now + TimeValue("0:00:2"))
not:kod iki saniye bekletiyor eğer olmazsa siz bunu bir kaç saniye daha arttırarak deneyin.
 

irfancantr

Altın Üye
Katılım
18 Haziran 2007
Mesajlar
625
Excel Vers. ve Dili
Excel 365 - İmngilizce
Altın Üyelik Bitiş Tarihi
07-05-2029
web sitesini açılırken bir kaç saniye bekleterek denermisiniz.

Zeki beyin kaduna aşağıdakinden önce gelmek üzere

Kod:
Set tbl = doc.getElementsByTagName("table").Item(3)
bunu eklermisiniz.

Kod:
Application.Wait (Now + TimeValue("0:00:2"))
not:kod iki saniye bekletiyor eğer olmazsa siz bunu bir kaç saniye daha arttırarak deneyin.
Merhaba Halit hocam,

Verdiğiniz kodu ekleyerek denedim ama hata yine aynı sayıda verdi ve makro da aynı yerde gösterdi.Bu excel'in webten bilgi almada üst limiti gibi bir durum diye düşünüyorum.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,850
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Merhaba Halit hocam,

Verdiğiniz kodu ekleyerek denedim ama hata yine aynı sayıda verdi ve makro da aynı yerde gösterdi.Bu excel'in webten bilgi almada üst limiti gibi bir durum diye düşünüyorum.
Aklıma başkada bir şey gelmiyor birde hata verilen sayı doğrultusunda kodu bir sefer çalıştırın aynımı olacak yani hata sayısı döngünüzde hangisi ise a sayı doğrultu kodunuzu bir deneyin.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,376
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Bir veri tablosu oluşturmak istediğinizi düşünerekten cache sorununu düzelttim.
RAM' şişirmemek için veri listeleme 1000 adres çekildikten sonra kaydedilip kapatılacak. Sonraki 1000 adres için dosyayı tekrar açıp 'Test' isimli makroda aradaki açıklamada göreceğiniz gibi düzenlemeyi yapın; butona basın...

Kod:
Sub test()
    Call Makro1(1, 1000)
    [COLOR=DarkGreen]'Call Makro1(1001, 2000) 'Sonraki 1000 adres
    'Call Makro1(2001, 3000) 'Sonraki 1000 adres
    'Call Makro1(3001, 4000) 'Sonraki 1000 adres[/COLOR]
End Sub

Private Sub Makro1(alt As Long, ust As Long)
Const URL = "http://www.motorsporlari.net/car/"
    
    With Sayfa3
        
        For L = alt To ust
            
            Set HTTP = CreateObject("MSXML2.XMLHTTP")
            Set doc = CreateObject("HTMLFile")

            DoEvents
            
            Application.StatusBar = L & " / " & ust & " işlemi yapılıyor..."
            
            .Range("A1:B100").ClearContents
            
            HTTP.Open "get", URL & Sayfa1.Cells(L, "d"), False
            HTTP.send
            
            doc.write (StrConv(HTTP.responsebody, vbUnicode))
            
            Set tbl = doc.getElementsByTagName("table").Item(3)
            
            For i = 0 To tbl.Rows.Length - 1
                DoEvents
                For j = 0 To tbl.Rows(i).Cells.Length - 1
                    DoEvents
                    .Cells(i + 1, j + 1) = tbl.Rows(i).Cells(j).innerText
                Next
            Next
            
            For M = 100 To 1 Step -1
                DoEvents
                If Len(.Cells(M, "a")) = 0 Then _
                    .Range("a" & M & ":b" & M).Delete (xlUp)
            Next
            
            .Cells(L + 1, "d") = L
            
            For N = 1 To 83
                DoEvents
                .Cells(L + 1, N + 4) = .Cells(N + 1, "b")
            Next
            
            .Cells(L + 1, "d").Select
            
            Set tbl = Nothing
            Set doc = Nothing
            Set HTTP = Nothing
        Next
        
    End With
    
    Application.StatusBar = False
    
    MsgBox "İşlem tamamlandı. Dosya kaydedilip kapatılacak." & Chr(13) & _
        "Sonraki '1000' adres için 'Test' makrosunu düzenleyin", vbInformation
        
    ThisWorkbook.Close True
End Sub
 

Ekli dosyalar

irfancantr

Altın Üye
Katılım
18 Haziran 2007
Mesajlar
625
Excel Vers. ve Dili
Excel 365 - İmngilizce
Altın Üyelik Bitiş Tarihi
07-05-2029
Bir veri tablosu oluşturmak istediğinizi düşünerekten cache sorununu düzelttim.
RAM' şişirmemek için veri listeleme 1000 adres çekildikten sonra kaydedilip kapatılacak. Sonraki 1000 adres için dosyayı tekrar açıp 'Test' isimli makroda aradaki açıklamada göreceğiniz gibi düzenlemeyi yapın; butona basın...
Zeki hocam emeğine sağlık, sayenizde mükemmel bir veri tablosu oluşturuyorum, Allah razı olsun.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,850
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Ben bu kodu çalıştırdım D260 hücrede 259 yazarken kendim durdurdum ve hiç bir hata ile karşılaşmadım kada aşağıdaki kırmızı yeri ekledim.

Kod:
Sub test()

Const URL = "[URL]http://www.motorsporlari.net/car/[/URL]"
Dim L As Long
With Sayfa3
For L = 1 To 10000
Set HTTP = CreateObject("MSXML2.XMLHTTP")
Set doc = CreateObject("HTMLFile")
DoEvents
Application.StatusBar = L & " / " & ust & " işlemi yapılıyor..."
.Range("A1:B100").ClearContents
HTTP.Open "get", URL & Sayfa1.Cells(L, "d"), False
HTTP.send
doc.write (StrConv(HTTP.responsebody, vbUnicode))
Set tbl = doc.getElementsByTagName("table").Item(3)
For i = 0 To tbl.Rows.Length - 1
DoEvents
For j = 0 To tbl.Rows(i).Cells.Length - 1
DoEvents
.Cells(i + 1, j + 1) = tbl.Rows(i).Cells(j).innerText
Next
Next
For M = 100 To 1 Step -1
DoEvents
If Len(.Cells(M, "a")) = 0 Then _
.Range("a" & M & ":b" & M).Delete (xlUp)
Next
.Cells(L + 1, "d") = L
For N = 1 To 83
DoEvents
.Cells(L + 1, N + 4) = .Cells(N + 1, "b")
Next
.Cells(L + 1, "d").Select
Set tbl = Nothing
Set doc = Nothing
Set HTTP = Nothing
[COLOR=red][B]Dim qt As QueryTable
For Each qt In ActiveSheet.QueryTables
qt.Delete[/B][/COLOR]
Next qt

Next
End With
Application.StatusBar = False
MsgBox "İşlem tamamlandı. Dosya kaydedilip kapatılacak." & Chr(13) & _
"Sonraki '1000' adres için 'Test' makrosunu düzenleyin", vbInformation
ThisWorkbook.Close True
End Sub
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst