VBA İLE WEB SAYFASI YAZDIRMA

Katılım
12 Aralık 2020
Mesajlar
74
Excel Vers. ve Dili
2016 tr
Merhaba

Excel vba ile istediğimiz web sayfasını açıp açılan web sayfasını yazdırabileceğimiz bir makro varmıdır acaba ?
 
Katılım
5 Ocak 2020
Mesajlar
73
Excel Vers. ve Dili
2007
Altın Üyelik Bitiş Tarihi
22-02-2023
Sayfa aynı sayfamı olacak değişkenmi?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.


C++:
Option Explicit

Sub View_Tech_Recalls()
    Dim ie As Object, TimeOutWebQuery As Byte, TimeOutTime As Double
    
    Set ie = CreateObject("InternetExplorer.Application")
    
    ie.navigate "https://www.excel.web.tr/threads/vba-ile-web-sayfasi-yazdirma.197188/#post-1102463"
    ie.StatusBar = False
    ie.Toolbar = True
    ie.Visible = True
    ie.Resizable = True
    ie.AddressBar = False
    
    TimeOutWebQuery = 5
    TimeOutTime = DateAdd("s", TimeOutWebQuery, Now)
    Do Until ie.readyState = 4
        DoEvents
        If Now > TimeOutTime Then
            ie.stop
            GoTo ErrorTimeOut
        End If
    Loop

    ie.ExecWB 6, 2
    Application.Wait (Now + TimeValue("0:00:03"))
    ie.Quit
    
ErrorTimeOut:
    Set ie = Nothing
End Sub
 
Katılım
12 Aralık 2020
Mesajlar
74
Excel Vers. ve Dili
2016 tr
Run time error

Automation error
Uzaktan işlem çağrısı başarısız

hatası veriyor
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Internet Explorer gerekiyor. Ben deneyerek çalıştığını gözlemleyerek paylaştım.
 
Katılım
26 Nisan 2021
Mesajlar
178
Excel Vers. ve Dili
TR 2021
Altın Üyelik Bitiş Tarihi
27-04-2022
Kodları bende denedim gayet başarılı çalışıyor.
 
Katılım
20 Şubat 2012
Mesajlar
242
Excel Vers. ve Dili
office2007 Türkçe
Merhaba,

Size yardımcı olunmasını istiyorsanız öncelikli olarak --mahsuru yoksa-- link paylaşmanızda fayda var.
Çünkü websayfasının yapısı istenen verinin nasıl temin edileceğini belirler ve çoğu zaman değişkendir.
Mesela bir veriyi "id" ile çekersiniz yahut başka bir veriyi "class" adına göre yahut da veriniz bir "table"
ise farklı bir yöntem denersiniz.

Bazen hiç ayrıntıya girmeden sayfayı kopyala yapıştır komutları ile bu işi halledebilirsiniz.
Bazen excelin webten veri çekme özelliği size yardımcı olabilir.

Yani yollar değişkendir.

Örnek vermek için deneyiniz
Kod:
Sub dene()
Dim IE

Set IE = CreateObject("InternetExplorer.Application")

IE.Visible = True
IE.FullScreen = True
IE.StatusBar = False
IE.MenuBar = False
IE.Toolbar = False
IE.AddressBar = False
IE.TheaterMode = False
With IE
   .Top = 100 ' check if the propery names are correct
   .Left = 200
   .Width = 1200
   .Height = 950
End With

IE.Navigate "https://www.excel.web.tr/threads/vba-ile-web-sayfasi-yazdirma.197188/"
Do Until IE.ReadyState = 4: DoEvents: Loop
    Do While IE.Busy: DoEvents: Loop


sat = 1
For Each a In IE.Document.GetElementsByTagName("div") ' div içindeki tüm tekstleri almak siterseniz

Range("A" & sat).Value = a.innerText

sat = sat + 1
Next
IE.Quit
End Sub
veya

Kod:
Sub dene2()

Dim IE


Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.FullScreen = True
IE.StatusBar = False
IE.MenuBar = False
IE.Toolbar = False
IE.AddressBar = False
IE.TheaterMode = False
With IE
   .Top = 100
   .Left = 200
   .Width = 1200
   .Height = 950
End With

IE.Navigate "https://www.excel.web.tr/threads/vba-ile-web-sayfasi-yazdirma.197188/"
Do Until IE.ReadyState = 4: DoEvents: Loop
    Do While IE.Busy: DoEvents: Loop

' Set getir = IE.document.getElementById("SayfaKONU").innerText 'Id ile ilgili text isterseniz mesela



sat = 1
For Each a In IE.Document.GetElementsByTagName("pre") ' belirli bir text isterseniz mesela

Range("A" & sat).Value = a.innerText

sat = sat + 1
Next
IE.Quit
End Sub
 
Katılım
12 Aralık 2020
Mesajlar
74
Excel Vers. ve Dili
2016 tr
Merhaba,

Size yardımcı olunmasını istiyorsanız öncelikli olarak --mahsuru yoksa-- link paylaşmanızda fayda var.
Çünkü websayfasının yapısı istenen verinin nasıl temin edileceğini belirler ve çoğu zaman değişkendir.
Mesela bir veriyi "id" ile çekersiniz yahut başka bir veriyi "class" adına göre yahut da veriniz bir "table"
ise farklı bir yöntem denersiniz.

Bazen hiç ayrıntıya girmeden sayfayı kopyala yapıştır komutları ile bu işi halledebilirsiniz.
Bazen excelin webten veri çekme özelliği size yardımcı olabilir.

Yani yollar değişkendir.

Örnek vermek için deneyiniz
Kod:
Sub dene()
Dim IE

Set IE = CreateObject("InternetExplorer.Application")

IE.Visible = True
IE.FullScreen = True
IE.StatusBar = False
IE.MenuBar = False
IE.Toolbar = False
IE.AddressBar = False
IE.TheaterMode = False
With IE
   .Top = 100 ' check if the propery names are correct
   .Left = 200
   .Width = 1200
   .Height = 950
End With

IE.Navigate "https://www.excel.web.tr/threads/vba-ile-web-sayfasi-yazdirma.197188/"
Do Until IE.ReadyState = 4: DoEvents: Loop
    Do While IE.Busy: DoEvents: Loop


sat = 1
For Each a In IE.Document.GetElementsByTagName("div") ' div içindeki tüm tekstleri almak siterseniz

Range("A" & sat).Value = a.innerText

sat = sat + 1
Next
IE.Quit
End Sub
veya

Kod:
Sub dene2()

Dim IE


Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.FullScreen = True
IE.StatusBar = False
IE.MenuBar = False
IE.Toolbar = False
IE.AddressBar = False
IE.TheaterMode = False
With IE
   .Top = 100
   .Left = 200
   .Width = 1200
   .Height = 950
End With

IE.Navigate "https://www.excel.web.tr/threads/vba-ile-web-sayfasi-yazdirma.197188/"
Do Until IE.ReadyState = 4: DoEvents: Loop
    Do While IE.Busy: DoEvents: Loop

' Set getir = IE.document.getElementById("SayfaKONU").innerText 'Id ile ilgili text isterseniz mesela



sat = 1
For Each a In IE.Document.GetElementsByTagName("pre") ' belirli bir text isterseniz mesela

Range("A" & sat).Value = a.innerText

sat = sat + 1
Next
IE.Quit
End Sub
Merhaba hocam

Link paylaşmayı bende çok isterdim ama şirket bilgileri olduğu için paylaşamıyorum ama link bir pdf dosyası açtırıyor , uzantısı jsp göndermiş olduğunuz 2 kodu da denedim yine hata alıyorum linki bir internet explorer sayfasında açıyor orda sorun yok ama yazdırmıyor , ve çağırılan nesne istemcilerinden ayrılmış diye hata veriyor , kullandığım bilgisayar şirket bilgisayarı arkada bişeyler kapalı olabilir mi ?
 
Katılım
12 Aralık 2020
Mesajlar
74
Excel Vers. ve Dili
2016 tr
Ve birde şu hatayı alıyorum sub dene2 kodunda

class does not support automation or does not support Expected interface
 
Katılım
20 Şubat 2012
Mesajlar
242
Excel Vers. ve Dili
office2007 Türkçe
Sanırım sorunun kaynağını aşağıdaki linkten öğrenebilirsiniz.
Not: Şirket bilgisayarında çalıştığınızı varsayarak gerekli ise teknik servisten bilgi almanızı ;
Teknik bilginiz yeterli değilse bilgisayara kesinlikle müdahale etmemenizi;
şiddetle öneririm.
 
Katılım
12 Aralık 2020
Mesajlar
74
Excel Vers. ve Dili
2016 tr
Deneyiniz.


C++:
Option Explicit

Sub View_Tech_Recalls()
    Dim ie As Object, TimeOutWebQuery As Byte, TimeOutTime As Double
   
    Set ie = CreateObject("InternetExplorer.Application")
   
    ie.navigate "https://www.excel.web.tr/threads/vba-ile-web-sayfasi-yazdirma.197188/#post-1102463"
    ie.StatusBar = False
    ie.Toolbar = True
    ie.Visible = True
    ie.Resizable = True
    ie.AddressBar = False
   
    TimeOutWebQuery = 5
    TimeOutTime = DateAdd("s", TimeOutWebQuery, Now)
    Do Until ie.readyState = 4
        DoEvents
        If Now > TimeOutTime Then
            ie.stop
            GoTo ErrorTimeOut
        End If
    Loop

    ie.ExecWB 6, 2
    Application.Wait (Now + TimeValue("0:00:03"))
    ie.Quit
   
ErrorTimeOut:
    Set ie = Nothing
End Sub
Hocam merhaba bu kod çalıştı ama sayfa pdf olduğu içinmi bilmiyorum sayfayı açıp yazdırmadan kapatıyor , pdf olmayan sayfaları yazdırıyor
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Link paylaşma imkanınız varsa bizde deneme yapabiliriz.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Şuan evdeyim. Evde yazıcım yok. Verdiğiniz linki yazıcı bağlı olmayan bir laptopta denediğimde kod sistemde yüklü olan pdf programının adını belirterek bir uyarı verdi. Yarın yazıcı olan bir yerde deneyip sonucu bildiririm.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bir de aklıma PDF dosyasını bilgisayara kaydedip yazdırma yöntemi geldi.

Bir deneyin belki sonuç alabilirsiniz.

C++:
Option Explicit

Sub Download_File_Then_Print()
    Dim My_Url As String
    Dim My_Http As Object
    Dim My_Stream As Object
    Dim File_Name As String
    Dim My_Service As Object
    Dim Activate_App As Variant
    Dim My_App As Object
   
    Set My_Http = CreateObject("Microsoft.XmlHttp")
    Set My_Stream = CreateObject("AdoDb.Stream")
   
    My_Url = "https://www.zebra.com/content/dam/zebra_new_ia/en-us/manuals/barcode-scanners/ls2208-product-reference-guide-en-us.pdf"
    File_Name = Environ("UserProfile") & "\Desktop\Deneme.pdf"

    My_Http.Open "Get", My_Url, False
    My_Http.Send

    My_Url = My_Http.ResponseBody
    My_Stream.Open
    My_Stream.Type = 1
    My_Stream.Write My_Http.ResponseBody
    My_Stream.SaveToFile (File_Name), 2
    My_Stream.Close
   
    CreateObject("Shell.Application").Namespace(0).ParseName(File_Name).InvokeVerb ("Print")
   
    Application.Wait Now + TimeSerial(0, 0, 3)
   
    Set My_Service = GetObject("winmgmts:")
    Set Activate_App = My_Service.ExecQuery("Select * From Win32_Process")
   
    For Each My_App In Activate_App
        If InStr(1, My_App.Name, "PDF") > 0 Then My_App.Terminate
    Next
   
    Kill File_Name
   
    MsgBox "PDF dosyası yazıcıya gönderilmiştir."
End Sub
 
Katılım
12 Aralık 2020
Mesajlar
74
Excel Vers. ve Dili
2016 tr
Bir de aklıma PDF dosyasını bilgisayara kaydedip yazdırma yöntemi geldi.

Bir deneyin belki sonuç alabilirsiniz.

C++:
Option Explicit

Sub Download_File_Then_Print()
    Dim My_Url As String
    Dim My_Http As Object
    Dim My_Stream As Object
    Dim File_Name As String
    Dim My_Service As Object
    Dim Activate_App As Variant
    Dim My_App As Object
  
    Set My_Http = CreateObject("Microsoft.XmlHttp")
    Set My_Stream = CreateObject("AdoDb.Stream")
  
    My_Url = "https://www.zebra.com/content/dam/zebra_new_ia/en-us/manuals/barcode-scanners/ls2208-product-reference-guide-en-us.pdf"
    File_Name = Environ("UserProfile") & "\Desktop\Deneme.pdf"

    My_Http.Open "Get", My_Url, False
    My_Http.Send

    My_Url = My_Http.ResponseBody
    My_Stream.Open
    My_Stream.Type = 1
    My_Stream.Write My_Http.ResponseBody
    My_Stream.SaveToFile (File_Name), 2
    My_Stream.Close
  
    CreateObject("Shell.Application").Namespace(0).ParseName(File_Name).InvokeVerb ("Print")
  
    Application.Wait Now + TimeSerial(0, 0, 3)
  
    Set My_Service = GetObject("winmgmts:")
    Set Activate_App = My_Service.ExecQuery("Select * From Win32_Process")
  
    For Each My_App In Activate_App
        If InStr(1, My_App.Name, "PDF") > 0 Then My_App.Terminate
    Next
  
    Kill File_Name
  
    MsgBox "PDF dosyası yazıcıya gönderilmiştir."
End Sub
Hocam peki bi önceki yazdığınız kodda döngünün içine vba ile ctrl p yapıp entera bastıktan sonra web sayfasını kapatmayı ekleyebilirmiyiz
 
Üst