尝试使用VBA在webbrowser控件上执行javascript命令

时间:2011-01-14 22:13:17

标签: javascript vba webbrowser-control

我正在尝试在javascript页面上执行命令toggletable或showall功能,该页面信息隐藏,直到您单击旁边的+按钮。我想让这些自动扩展用于打印目的。这是我到目前为止所拥有的。

Function PrintWebPage()
Const OLECMDID_PRINT = 6
Const OLECMDEXECOPT_PROMPTUSER = 1
Const OLECMDEXECOPT_DONTPROMPTUSER = 2

Dim ie As Object
Dim strWebPage As String, stblAutoNumber(99999) As String, stblBadgeNumber(999999) As String, stblShopNumber(99999) As String

DoCmd.SetWarnings False
' Connect to DB
Set db = CurrentDb()

' Select Statement for scrolling through everyone
sqlString = "SELECT tblPersonal.AutoNumber, tblPersonal.[Badge Number], tblPersonal.Shop , tblPersonal.[Last Name] FROM tblPersonal WHERE tblPersonal.[Shop] = " & """" & ShopUserATMS & """" & ";"

' Sets mRecordset to query the database
Set mRecordset = db.OpenRecordset(sqlString)

' Goes to first record of the generated list
mRecordset.MoveFirst
Do While Not mRecordset.EOF
    ' Scroll through personal List
    stblAutoNumber(i) = mRecordset("AutoNumber")
    CheckBadgeNull = mRecordset("Badge Number")
    If IsNull(CheckBadgeNull) = True Then
        GoTo NoRec:
    End If
    stblBadgeNumber(i) = mRecordset("Badge Number")
    stblShopNumber(i) = mRecordset("Shop")
    strWebPage = "https://was3.nnsy.navy.mil/atms/components/supervisor/atms_supv_detail.cfm?BADGE=" & stblBadgeNumber(i)
    DoEvents: DoEvents: DoEvents
    Set ie = CreateObject("internetexplorer.application")


    ie.Navigate strWebPage

    Do Until ie.Busy = False
        sSleep (1)
    Loop
    Call ie.Document.parentWindow.execScript("toggletable(Quals)", "JavaScript")
    'ie.getelementsbyid("Showall") = True
    'stblShopNumber(99) = ie.Document.execcommand("toggletable", False, Null)
    ie.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER

    sSleep (2)
NoRec:

Loop

    ie.Quit

    Set ie = Nothing

End Function

当我使用以下命令时,它会拒绝访问: 调用ie.Document.parentWindow.execScript(“toggletable(Quals)”,“JavaScript”)

感谢任何帮助。在这个问题上打了8个多小时......

2 个答案:

答案 0 :(得分:1)

您需要启用"允许活动内容在“我的电脑”上的文件中运行" Internet选项中的选项 - >高级 - >安全性。 如果要以编程方式更改此IE设置,下面是它的vbscript代码:

Const HKEY_CURRENT_USER = &H80000001    
strComputer = "."
dwValue = 0
Set objReg = GetObject("winmgmts:" & "{impersonationLevel=impersonate}\\" & strComputer & "\root\default:StdRegProv")   
strKeyPath = "Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_LOCALMACHINE_LOCKDOWN"
objReg.SetDWORDValue HKEY_CURRENT_USER, strKeyPath,"iexplore.exe",dwValue

将dwValue设置为0以启用,将1设置为禁用IE设置。

答案 1 :(得分:0)

Dim IE As New InternetExplorer
IE.Visible = True
IE.navigate "http://www.google.com"
Do: DoEvents: Loop Until IE.readyState = READYSTATE_COMPLETE
IE.navigate "javascript:alert('hi');"