Giúp code In và đóng trang web theo Tab trên trình duyệt Web (1 người xem)

  • Thread starter Thread starter meocon01
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

meocon01

Thành viên mới
Tham gia
29/9/08
Bài viết
29
Được thích
2
Em sử dụng VBA để mở trang web vietnamnet.vn trước rồi mở tiếp trang web dantri.com.vn trong thẻ mới.
giờ em muốn in trang web dantri.com.vn sử dụng lệnh in như mã code bên dươi nhưng nó lại in trang vietnamnet.vn,
có cách nào để in được trang web mình muốn không, và có cách nào đóng trang web theo Tab, giả dụ ví dụ trên em muốn in trang dantri.com.vn dùng lệnh in
in xong thì đóng trang web dantri.com.vn, vì có lý do nên em mới mở trang web theo thẻ như vậy.
Các bác nào có code giúp em thì hay quá.
PHP:
''Hang so cho lenh In
Const OLECMDID_PRINT = 6
Const OLECMDEXECOPT_PROMPTUSER = 1  'Execute the command after obtaining user input.
Const OLECMDEXECOPT_DONTPROMPTUSER = 2  '_
'Goi lenh:  objIE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER 'in trang web 
Const navOpenInNewTab = &H800 'hang so mo IE theo Tab moi

Sub testie()
   Set objIE = CreateObject("InternetExplorer.Application")
  objIE.Visible = True
  objIE.navigate "vietnamnet.vn"
  objIE.navigate "dantri.com.vn", CLng(navOpenInNewTab)
  Do While objIE.Busy Or Not objIE.readyState = IE_READYSTATE.complete: DoEvents: Loop  'wait for IE ready
  objIE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER  ' in trang web tai khoan VND
 End sub
 
Trước hết xin bạn thỏa mãn sự tò mò của tôi.
IE_READYSTATE là cái gì vậy mà có thuộc tính, method "complete"???
Nếu là Object thì khai báo ở đâu, tạo ở đâu?
Nhìn thì có vẻ là hằng số nhưng trong thư viện không có hằng số tên như thế. Và nếu là hằng số thì làm gì có thuộc tính?
---------------
vì có lý do nên em mới mở trang web theo thẻ như vậy

Bạn hãy nói cái lý do ấy cho tôi biết với. Tôi nghĩ đơn giản là bạn muốn mở trang 1 sau đó trang 2. Nhưng bạn cứ mở trang 1, làm những gì bạn phải làm, sau đó mở trang 2 (không có mở thẻ mới làm gì). Khi bạn cần làm việc ở trang 2 thì trang 1 "phơi" ra thế với mục đích gì? Sau khi giải quyết trang 2 thì nếu cần thì bạn vẫn trở về trang 1 được cơ mà.
Tôi chưa in trang web có nhiều thẻ bao giờ. Nếu bạn cứ cố tình mở thẻ thì hãy thử xem có được không
Mã:
[COLOR=#ff0000]Const READYSTATE_COMPLETE = 4
[/COLOR]
Sub testie()
Dim objIE As Object
    Set objIE = CreateObject("InternetExplorer.Application")
    objIE.Visible = True
    objIE.Navigate "vietnamnet.vn"
    [COLOR=#ff0000]Do While objIE.Busy Or Not objIE.ReadyState = READYSTATE_COMPLETE
        DoEvents
    Loop
[/COLOR] 
    objIE.Navigate "dantri.com.vn", CLng(navOpenInNewTab)    
    Do While objIE.Busy Or Not objIE.ReadyState = READYSTATE_COMPLETE
        DoEvents
    Loop
 
    [COLOR=#ff0000]'objIE.document.execCommand "Print"
[/COLOR]    objIE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
 End Sub

Nhưng theo tôi cứ mở trang 1 xử lý xong thì mở trang 2, không có thẻ thủng gì cả

Mã:
Const READYSTATE_COMPLETE = 4

Sub testie()
Dim objIE As Object
    Set objIE = CreateObject("InternetExplorer.Application")
    objIE.Visible = True
    objIE.Navigate "vietnamnet.vn"
    Do While objIE.Busy Or Not objIE.ReadyState = READYSTATE_COMPLETE
        DoEvents
    Loop
 ' xử lý trang 1
 ' mở trang 2
    objIE.Navigate "dantri.com.vn"    
    Do While objIE.Busy Or Not objIE.ReadyState = READYSTATE_COMPLETE
        DoEvents
    Loop
 ' xử lý trang 2
    'objIE.document.execCommand "Print"
    objIE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
 End Sub
 
Upvote 0
Lại gặp bác ở đây rồi, thật là vui. thực ra đó là ví dụ em nêu ra thôi, lý do là đây là tiếp cái đề tài " Tự động login vào Web sử dụng ID và pass thôi,
Lý do em muốn mở theo thẻ là vì in xong mình có thể đóng luôn ko cần phải duyệt web đi lại mấy trang đó, em sợ mình duyệt đi duyệt lại sợ nó lại đòi ID và pass thôi.
 
Upvote 0
Em có code này mong bác kiểm tra hộ, nó chạy ko chuẩn lắm hay báo lỗi Script trên trang web

PHP:
Sub test()
 Const navOpenInNewTab = &H800  'Hang mo theo Tab
 Const OLECMDEXECOPT_DONTPROMPTUSER = 2  'hang lenh in
 Set objIE = CreateObject("InternetExplorer.Application")
 objIE.navigate "http://dantri.com.vn/"
  Do While objIE.Busy Or Not objIE.readyState = IE_READYSTATE.complete: DoEvents: Loop 'wait for IE ready
 objIE.Visible = True
 objIE.navigate "http://khoahoc.com.vn/", CLng(navOpenInNewTab) 'Mo theo Tab moi
 objIE.navigate "http://vietnamnet.vn/", CLng(navOpenInNewTab)   'Mo theo Tab moi

    findwindows ("http://dantri.com.vn/")
    findwindows ("http://khoahoc.com.vn/")
    findwindows ("http://vietnamnet.vn/")
End Sub


  Sub findwindows(url As String)
    Dim allwindows As Object
    Set myTab = CreateObject("Shell.application")
    Set allwindows = mywinie.Windows
    For Each myTab In allwindows
         If myTab.LocationURL = url Then   ' kiem tra IE co dung url dang tim
            Set IEhandle3 = myTab
             IEhandle3.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER  'in trang web
             IEhandle3.Quit   ' thoat IE
                Exit For
        End If
    Next
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Lại gặp bác ở đây rồi, thật là vui. thực ra đó là ví dụ em nêu ra thôi, lý do là đây là tiếp cái đề tài " Tự động login vào Web sử dụng ID và pass thôi,
Lý do em muốn mở theo thẻ là vì in xong mình có thể đóng luôn ko cần phải duyệt web đi lại mấy trang đó, em sợ mình duyệt đi duyệt lại sợ nó lại đòi ID và pass thôi.

Tôi cũng đoán được là tiếp bài trước nhưng tôi hỏi tại sao lại mở thẻ kia. Khi bạn đã đăng nhập vào dịch vụ và bạn qua lại trong dịch vụ đó thì chả lý gì nó cứ đoài password mãi. Nhưng bạn có thể thử qua lại "bằng tay" thì sẽ biết
À, thế IE_READYSTATE là cái gì thế? Mà sao code thế lại chạy được ở chỗ bạn?
 
Upvote 0
Em có code này mong bác kiểm tra hộ, nó chạy ko chuẩn lắm hay báo lỗi Script trên trang web

PHP:
Sub test()
 Const navOpenInNewTab = &H800  'Hang mo theo Tab
 Const OLECMDEXECOPT_DONTPROMPTUSER = 2  'hang lenh in
 Set objIE = CreateObject("InternetExplorer.Application")
 objIE.navigate "http://dantri.com.vn/"
  Do While objIE.Busy Or Not objIE.readyState = IE_READYSTATE.complete: DoEvents: Loop 'wait for IE ready
 objIE.Visible = True
 objIE.navigate "http://khoahoc.com.vn/", CLng(navOpenInNewTab) 'Mo theo Tab moi
 objIE.navigate "http://vietnamnet.vn/", CLng(navOpenInNewTab)   'Mo theo Tab moi

    findwindows ("http://dantri.com.vn/")
    findwindows ("http://khoahoc.com.vn/")
    findwindows ("http://vietnamnet.vn/")
End Sub


  Sub findwindows(url As String)
    Dim allwindows As Object
    Set myTab = CreateObject("Shell.application")
    Set allwindows = mywinie.Windows
    For Each myTab In allwindows
         If myTab.LocationURL = url Then   ' kiem tra IE co dung url dang tim
            Set IEhandle3 = myTab
             IEhandle3.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER  'in trang web
             IEhandle3.Quit   ' thoat IE
                Exit For
        End If
    Next
End Sub

1. Về nguyên nhân thì tôi không biết. Bạn có thể mở nhiều trang web cùng lúc và làm thế 1 năm, 2 năm mà chả gặp sự cố gì. Nhưng một ngày đẹp trời tự dưng 1 trang trong các trang đó bị "đơ". Nguyên nhân? Ai mà biết được.
2. Về code tôi nghĩ không sai. Cái tôi không ưa là bạn coi url như là cái bất di bất dịch.
Không phải bạn Navigate "xyz.com" là sau đó sẽ có 1 myie3 thỏa myie3.LocationURL = "xyz.com".
Bạn có thể nhập bằng tay "http://www.giaiphapexcel.com/" vào ô URL trong IExplorer nhưng sau đó nó "biến thành" http://www.giaiphapexcel.com/forum/content.php
Bạn cũng có thể trong code Navigate "http://www.giaiphapexcel.com/" và sau đó dùng code đọc thì sẽ thấy không có myie3.LocationURL nào = "http://www.giaiphapexcel.com/"
Tức đk "If myie3.LocationURL = url Then" không thỏa. Nó phụ thuộc vào trang web, vào may rủi.
3. Nếu muốn thì bạn tiếp tục nghiên cứu. Tôi thích đi đường phảng. Cứ làm việc xong ở trang web nào thì Navigate sang trang khác, không có thẻ thủng gì để rồi nhọc thân.
 
Upvote 0
về kinh nghiệm lập trình em ko bằng bác được em chỉ học nó với mục đích giúp công việc một chút thôi,
cám ơn bác nhiều về chia sẻ kinh nghiệm.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom