VBA - 使用.ExecWB

时间:2015-09-03 20:49:21

标签: vba internet-explorer printing webforms

我正在使用 对象 .ExecWB 在我的VBA代码中打印出一个网页。具体来说,我正在使用这一行(IE是" Application.InternetExplorer"对象):

Const OLECMDID_PRINT = 6
Const OLECMDEXECOPT_DONTPROMPTUSER = 2
IE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER

它在打印页面时应该这样做,但是,它不会打印正确的页面。

网页是一个具有相同网址的网络表单,我所拥有的代码可以正确地找到我要打印的正确页面(第二个"页面"或"屏幕&# 34;形式),但命令仍然打印第一页。

如果我逐行浏览代码,它会打印正确的页面,但是,当我让它自己翻录时,它只打印第一页,即使我可以清楚地看到IE在打印之前导航到第二页。

我已经尝试将sleep命令放入代码中,但无济于事。有人有什么想法吗?

为了清楚起见,这里是我正在尝试的代码的一些片段(代码在IE.document上使用with语句):

   'this gets to the correct form page
   .getElementsByName("in_1060_1").item(0).Value = "1"
   .parentWindow.setCursorPosition "400", "HATSForm" 
   .parentWindow.ms "[enter]", "HATSForm"

    IEWait IE 'calls a sub that sleeps when IE is busy or not in readystate
    Sleep 5000

    'I then hit the 'OK' button to get to the 2nd page where the info I need to print is
    .parentWindow.ms "[enter]", "HATSForm"

    'yet it still prints out the first page! Ugh!
    Const OLECMDID_PRINT = 6
    Const OLECMDEXECOPT_DONTPROMPTUSER = 2
    IE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER

1 个答案:

答案 0 :(得分:0)

我最终向Word发送了一个打印屏幕并打印了Word文档。有点复杂,但它最终运作良好。

抱歉,我没有使用代码来实现此功能,但它来自之前的工作。