Merhaba.
Öncelikle gerek sitenizden gerek diğer sitelerden onlarca örnek denediğimi belirtmek istiyorum.
Amacım exceldeki a sütununda konu başlığı, b sütununda konu içeriği olan veri setini web sayfasındaki sistemlere aktarabilecek bir makro yazmak istiyorum.
mesaj başlığını aşağıdaki kod ile yazdırabiliyorum. (Mesaj_baslik değişkenine atadığım değer kaynak sayfa kodunda tek bir yerde ve tek element ismi olarak geçiyor)
konu içerik kısmı ise aşağıda kodları verilmiş alana giriş yapmam gerekiyor.
Bunun için
Hatanın buradan kaynaklandığını düşünüyorum.
Ancak şöyle bir durum var
Sitede ki https://www.excel.web.tr/threads/vba-web-scrap-ile-veri-cekme.163369/ örneğindeki kodları da uyguladığım da yine içerisinde
Acaba getElementByid () kodu excel 16.0 sürümünde çalışmıyor mu?
Kodlar
Öncelikle gerek sitenizden gerek diğer sitelerden onlarca örnek denediğimi belirtmek istiyorum.
Amacım exceldeki a sütununda konu başlığı, b sütununda konu içeriği olan veri setini web sayfasındaki sistemlere aktarabilecek bir makro yazmak istiyorum.
mesaj başlığını aşağıdaki kod ile yazdırabiliyorum. (Mesaj_baslik değişkenine atadığım değer kaynak sayfa kodunda tek bir yerde ve tek element ismi olarak geçiyor)
Kod:
ie.Document.getElementsByName(Mesaj_baslik).Item(0).Value = baslik
konu içerik kısmı ise aşağıda kodları verilmiş alana giriş yapmam gerekiyor.
Kod:
<div id="mesaj_icerik_1" class="mesajyaz" style="display: inline;" contenteditable="true"></div>
Bunun için
readystate
ve busy
seçenekleri de dahil olmak üzere ie.Document.getElementById("mesaj_icerik_div").Item(0).Value = icerik
ve türevleri kodlarla yazdırmaya çalıştığımda sürekli bu satırda hata mesajı aldım. Kaynak site kodlamasında giriş alanı olarak değil ama başka amaçlarla id="mesaj_icerik_div"
ifadesi kullanılmış. Hatanın buradan kaynaklandığını düşünüyorum.
Ancak şöyle bir durum var
Sitede ki https://www.excel.web.tr/threads/vba-web-scrap-ile-veri-cekme.163369/ örneğindeki kodları da uyguladığım da yine içerisinde
getElementByid
geçen satırda hata mesajı verdi. Acaba getElementByid () kodu excel 16.0 sürümünde çalışmıyor mu?
Kodlar
Sub calistir()
'--------- HANGİ SİTEYE GİRİŞ YAPILACAĞINI SOR VE CANCEL OLURSA İŞLEMİ BİTİR
URL = InputBox("Site adresi:")
If URL = "cancel" Then GoTo 10000
bekleme = "00:00:20"
10 '-----------------------------------EXCELDEKİ A SÜTUNUNDAKİ SON SATIRI BUL VE DEĞERLERİ AL - DÖNGÜ BAŞLAT
B = 0
20 B = B + 1
30 ba = "a" & B: If Range(ba) = "" Then GoTo 9000
40 ic = "b" & B: If Range(ic) = "" Then GoTo 9000
50 baslik = Range(ba)
60 icerik = Range(ic)
'-----------------------internet explorer ayarlarını yap
say = say + 1
If say = 1 Then
Set IE = CreateObject("InternetExplorer.Application")
With IE
.Navigate URL
.Visible = 1
End With
End If
Do Until IE.ReadyState = 4: DoEvents: Loop
Do While IE.Busy: DoEvents: Loop
'-------------------------------------------------------- textboxlara veri ataması
IE.Document.getElementsByName("mesaj_baslik").Item(0).Value = baslik
IE.Document.GetElementsByclassname("formlar_mesajyaz")(1).getElementByid("mesaj_icerik_div").Item(0).Value = icerik
'IE.Document.getElementById("tablo_buyut2").getElementById("duzenleyici_govde").getElementById("mesaj_icerik_mesaj_tamekran").getElementById("mesaj_icerik_duzenleyici_ana").getElementById("mesaj_icerik_div").Item(0).Value = icerik
IE.Document.getElementByid("mesaj_gonder").Item(1).Click ' gönder butonu için name özelliği kullanıldı
CreateObject("WScript.Shell").PopUp "Dikkat", 20, "Bakalım ne olacak", vbOKOnly + vbExclamation
'Application.Wait (Now + TimeValue(bekleme))
IE.Quit
GoTo 20
9000 hhh = MsgBox("Boş hücre olduğu için makro durduruldu...", vbOKCancel)
10000
End Sub
'--------- HANGİ SİTEYE GİRİŞ YAPILACAĞINI SOR VE CANCEL OLURSA İŞLEMİ BİTİR
URL = InputBox("Site adresi:")
If URL = "cancel" Then GoTo 10000
bekleme = "00:00:20"
10 '-----------------------------------EXCELDEKİ A SÜTUNUNDAKİ SON SATIRI BUL VE DEĞERLERİ AL - DÖNGÜ BAŞLAT
B = 0
20 B = B + 1
30 ba = "a" & B: If Range(ba) = "" Then GoTo 9000
40 ic = "b" & B: If Range(ic) = "" Then GoTo 9000
50 baslik = Range(ba)
60 icerik = Range(ic)
'-----------------------internet explorer ayarlarını yap
say = say + 1
If say = 1 Then
Set IE = CreateObject("InternetExplorer.Application")
With IE
.Navigate URL
.Visible = 1
End With
End If
Do Until IE.ReadyState = 4: DoEvents: Loop
Do While IE.Busy: DoEvents: Loop
'-------------------------------------------------------- textboxlara veri ataması
IE.Document.getElementsByName("mesaj_baslik").Item(0).Value = baslik
IE.Document.GetElementsByclassname("formlar_mesajyaz")(1).getElementByid("mesaj_icerik_div").Item(0).Value = icerik
'IE.Document.getElementById("tablo_buyut2").getElementById("duzenleyici_govde").getElementById("mesaj_icerik_mesaj_tamekran").getElementById("mesaj_icerik_duzenleyici_ana").getElementById("mesaj_icerik_div").Item(0).Value = icerik
IE.Document.getElementByid("mesaj_gonder").Item(1).Click ' gönder butonu için name özelliği kullanıldı
CreateObject("WScript.Shell").PopUp "Dikkat", 20, "Bakalım ne olacak", vbOKOnly + vbExclamation
'Application.Wait (Now + TimeValue(bekleme))
IE.Quit
GoTo 20
9000 hhh = MsgBox("Boş hücre olduğu için makro durduruldu...", vbOKCancel)
10000
End Sub