Özellik ikonu

WebBrowser

İndirme izni yok

Genel Bakış

WebBrowser (Microsoft Web Browser), bir UserForm üzerine yerleştirilen ve Windows'un Internet Explorer (Trident) bileşenini kullanarak web sayfalarını form içinde gösteren ActiveX denetimidir. Adres açma, ileri-geri gitme, yenileme ve sayfa yüklenince tepki verme gibi işleri VBA kodundan yönetmenizi sağlar. Modern web siteleri için sınırlı olduğundan, kullanmadan önce sınırlarını bilmeniz gerekir.

Denetimi forma ekleme​

WebBrowser denetimi, Araç Kutusu'nda varsayılan olarak bulunmaz; elle eklemeniz gerekir:
  • Düzenleyiciyi açın: Alt+F11 tuşlarıyla Visual Basic Düzenleyicisi'ni açın ve Ekle > Kullanıcı Formu (Insert > UserForm) komutuyla bir form ekleyin.
  • Denetimi seçin: Araç Kutusu'ndaki boş bir alana sağ tıklayın, Ek Denetimler (Additional Controls) komutunu seçin ve listeden Microsoft Web Browser kutusunu işaretleyin.
  • Forma çizin: Araç Kutusu'nda beliren simgeyi seçip form üzerinde bir alan çizin. Denetimin varsayılan adı WebBrowser1 olur.
Denetim yalnızca Windows için Excel'de çalışır ve sistemde Internet Explorer bileşenlerinin (ieframe.dll) bulunmasına bağlıdır.

Önemli özellikler​

  • LocationURL: Denetimde o anda açık olan sayfanın adresini döndürür.
  • LocationName: Açık sayfanın başlığını ya da adını döndürür.
  • Busy: Denetim bir sayfayı yüklüyorsa True döndürür.
  • ReadyState: Yükleme durumunu verir; sayfa tamamen yüklendiğinde 4 değerini (READYSTATE_COMPLETE) alır.
  • Document: Yüklenen sayfanın belge nesnesine erişim sağlar; sayfa içeriğini okumak için kullanılır.
  • Silent: True yapıldığında betik hatası ve uyarı iletilerinin gösterilmesini engeller.
  • Left, Top, Width, Height: Denetimin form üzerindeki konumunu ve boyutunu belirler.

Önemli yöntemler ve olaylar​

Sayfa açmak için Navigate yöntemi kullanılır. Yöntem eşzamansızdır; çağrıldığında sayfanın yüklenmesini beklemeden kodun sonraki satırına geçilir.
VBA
WebBrowser1.Navigate URL, [Flags], [TargetFrameName], [PostData], [Headers]
  • URL: Açılacak adres; zorunludur. Adres, protokol öneki dahil tam olarak yazılmalıdır.
  • Flags: Gezinme davranışını belirleyen seçenekler; isteğe bağlıdır.
  • TargetFrameName: Hedef çerçevenin adı; isteğe bağlıdır.
  • PostData: POST ile gönderilecek veri; isteğe bağlıdır.
  • Headers: Gönderilecek ek HTTP üst bilgileri; isteğe bağlıdır.
Diğer yöntemler:
  • GoBack, GoForward: Gezinti geçmişinde geri ve ileri gider; geçmişte sayfa yoksa hata oluşur.
  • GoHome: Giriş sayfasını açar.
  • Refresh: Açık sayfayı yeniler.
  • Stop: Süren yüklemeyi durdurur.
Önemli olaylar:
  • DocumentComplete: Sayfa yüklemesi bittiğinde oluşur; yüklenen sayfayla ilgili işlem için en uygun olaydır.
  • BeforeNavigate2: Gezinme başlamadan önce oluşur; Cancel parametresini True yaparak gezintiyi iptal edebilirsiniz.
  • NavigateComplete2: Gezinme başarıyla başladıktan sonra oluşur; belge henüz tam yüklenmemiş olabilir.
  • TitleChange: Sayfa başlığı değiştiğinde oluşur.
  • StatusTextChange: Durum çubuğu metni değiştiğinde oluşur.
Bu olaylar, WebBrowser denetimini içeren UserForm'un kod modülüne yazılır.

1. Adreslere protokol öneki ekleme​

WebBrowser1.Navigate yalnızca protokolü yazılmış adreslerle sorunsuz çalışır. Bu makro, B sütunundaki adreslerin başında http yoksa güvenli protokol önekini ekleyerek C sütununa tam adresi yazar. Kodu standart bir modüle yapıştırın.
VBA 20 satır
Option Explicit

' Adresin başında http yoksa https:// ekler ve sonucu C sütununa yazar
Sub TamAdresOlustur()
    Dim ws As Worksheet
    Dim i As Long
    Dim sonSatir As Long
    Dim adres As String

    Set ws = ThisWorkbook.Worksheets("Adres Listesi")
    sonSatir = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    For i = 2 To sonSatir
        adres = Trim(CStr(ws.Cells(i, "B").Value))
        If LCase(Left(adres, 4)) <> "http" Then
            adres = "https://" & adres
        End If
        ws.Cells(i, "C").Value = adres
    Next i
End Sub
WebBrowser
Formülünü incelemek için bir hücre seçin.
ABC
1ÜrünAdresTam Adres
2Kahve Makinesiwww.example.com/kahvehttps://www.example.com/kahve
3Çay Bardağıhttps://www.example.com/cayhttps://www.example.com/cay
4Termosexample.com/termoshttps://example.com/termos
5Cezvewww.example.com/cezvehttps://www.example.com/cezve
6Süzgeçhttp://www.example.com/suzgechttp://www.example.com/suzgec
Adres ListesiExcelDepo v1.0.0
Protokolü olmayan adreslerin başına güvenli protokol öneki eklenir; zaten önekle başlayan adresler olduğu gibi kalır. Tam adresleri Mini Sayfa içindeki C sütununda görebilirsiniz. Bu sütundaki değerleri doğrudan WebBrowser1.Navigate yöntemine verebilirsiniz.

2. Arama adreslerini kodlayarak oluşturma​

Türkçe karakter ve boşluk içeren arama sözcüklerini adrese eklerken kodlamak gerekir. Makro, A sütunundaki ürün adlarını WorksheetFunction.EncodeURL ile kodlayıp B sütununa tam arama adresini yazar. EncodeURL, Excel 2013 ve sonrasında Windows'ta kullanılabilir. Kodu standart bir modüle yapıştırın.
VBA 17 satır
Option Explicit

' Ürün adını URL için kodlayıp arama adresini B sütununa yazar
Sub AramaAdresiOlustur()
    Dim ws As Worksheet
    Dim i As Long
    Dim sonSatir As Long
    Dim kodlu As String

    Set ws = ThisWorkbook.Worksheets("Arama Adresleri")
    sonSatir = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    For i = 2 To sonSatir
        kodlu = Application.WorksheetFunction.EncodeURL(CStr(ws.Cells(i, "A").Value))
        ws.Cells(i, "B").Value = "https://www.example.com/ara?q=" & kodlu
    Next i
End Sub
WebBrowser
Formülünü incelemek için bir hücre seçin.
AB
1Aranan ÜrünSorgu Adresi
2Çay Bardağıhttps://www.example.com/ara?q=%C3%87ay%20Barda%C4%9F%C4%B1
3Şeker Kutusuhttps://www.example.com/ara?q=%C5%9Eeker%20Kutusu
4Ütü Masasıhttps://www.example.com/ara?q=%C3%9Ct%C3%BC%20Masas%C4%B1
5Işıklı Lambahttps://www.example.com/ara?q=I%C5%9F%C4%B1kl%C4%B1%20Lamba
6Öğütücühttps://www.example.com/ara?q=%C3%96%C4%9F%C3%BCt%C3%BCc%C3%BC
Arama AdresleriExcelDepo v1.0.0
Her ürün için sorgu adresi oluşur; örneğin B2 hücresi değerini alır. Boşluk ve Türkçe karakterler adreste kodlanmış olarak yer alır. Bu adresi WebBrowser1.Navigate yöntemine vererek arama sonucunu form içinde açabilirsiniz.

3. UserForm içinde sayfa açma ve başlığı gösterme​

Bu örnek UserForm1 adlı bir formun kod modülüne yazılır; Araç Kutusu'ndan eklediğiniz WebBrowser1 denetimi form üzerinde bulunmalıdır. Form açılırken sayfadaki B2 hücresinde yazan adres yüklenir, yükleme bitince form başlığı sayfa başlığıyla güncellenir. Formu kodla açmak için Sub içinde UserForm1.Show satırını kullanabilirsiniz. Örnek, kullanıcı formu açtığı için çalıştırılmaz.
VBA 32 satır
' UserForm1 kod modülüne yazın (WebBrowser1 ve CommandButton1-3 denetimleri formda olmalı)
Private Sub UserForm_Initialize()
    Dim adres As String

    adres = CStr(ThisWorkbook.Worksheets("Form Adresleri").Range("B2").Value)
    WebBrowser1.Silent = True
    WebBrowser1.Navigate adres
End Sub

' Sayfa tamamen yüklenince form başlığını günceller
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    Me.Caption = WebBrowser1.LocationName
End Sub

' Geri düğmesi
Private Sub CommandButton1_Click()
    On Error Resume Next
    WebBrowser1.GoBack
    On Error GoTo 0
End Sub

' İleri düğmesi
Private Sub CommandButton2_Click()
    On Error Resume Next
    WebBrowser1.GoForward
    On Error GoTo 0
End Sub

' Yenile düğmesi
Private Sub CommandButton3_Click()
    WebBrowser1.Refresh
End Sub
WebBrowser
Formülünü incelemek için bir hücre seçin.
AB
1BaşlıkAdres
2Ana Sayfahttps://www.example.com
3Ürün Kataloğuhttps://www.example.com/katalog
4İletişimhttps://www.example.com/iletisim
Form AdresleriExcelDepo v1.0.0
Form açıldığında UserForm_Initialize yordamı B2 hücresindeki adresi Navigate ile yükler. Sayfa yüklemesi bittiğinde DocumentComplete olayı çalışır ve form başlığı sayfanın adıyla değişir. Düğmeler geri, ileri ve yenileme işlemlerini yapar; GoBack ve GoForward için geçmişte sayfa yoksa oluşan hata On Error Resume Next ile atlanır.

Kullanırken dikkat edin​

  • Internet Explorer bağımlılığı: Denetim Internet Explorer'ın eski Trident motorunu kullanır. Internet Explorer 2022'de kullanımdan kaldırıldığı için birçok modern site (güncel JavaScript, güvenlik protokolleri) bu denetimde düzgün görüntülenmeyebilir ya da betik hataları verebilir. Kritik işlerde buna güvenmeyin.
  • Eşzamansız yükleme: Navigate çağrısı sayfanın yüklenmesini beklemez. Sayfa içeriğine (Document) erişmeden önce DocumentComplete olayını kullanın ya da Busy ve ReadyState değerlerini kontrol edin. Bekleme için sonsuz döngü kurmayın; olay tabanlı yaklaşım daha güvenlidir.
  • Adres biçimi: Adresi protokol önekiyle birlikte tam olarak yazmayı unutmayın. Türkçe karakter ve boşluk içeren sorgu parametrelerini EncodeURL ile kodlayın.
  • Ortam ve sürüm farkları: Denetim Mac için Excel'de bulunmaz. Bazı Office kurulumlarında, özellikle 64 bit sürümlerde, Ek Denetimler listesinde görünmeyebilir ya da başka bilgisayarda açıldığında çalışmayabilir; dosyayı paylaşmadan önce hedef bilgisayarda deneyin.
  • Güvenlik: Denetim ActiveX tabanlı olduğundan kurumsal güvenlik ilkeleri kullanımını kısıtlayabilir. Bilmediğiniz sitelerin sayfalarını form içinde açmaktan kaçının ve Silent özelliğini hata iletilerini gizlemek amacıyla bilinçli kullanın.
  • İlgili konular: UserForm, Araç Kutusu ve Ek Denetimler, UserForm_Initialize olayı, Hyperlinks.Add yöntemi, FollowHyperlink yöntemi, WorksheetFunction.EncodeURL, KÖPRÜ işlevi.
Örneklerdeki makroların tamamı indirilebilir Excel dosyasındadır (.xlsm). Dosyayı açtıktan sonra makroları etkinleştirin, ardından Alt + F11 ile Visual Basic Düzenleyicisi'nde kodları inceleyebilir ve Alt + F8 ile çalıştırabilirsiniz.
Yazar
ExcelDepo
İndirme sayısı
0
Gösterim
16
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst