LV2 LiteView2
Try LiteView2
Microsoft Access

WebView2 in Microsoft Access — Without Microsoft’s Limitations

Also works in Excel, Word, Outlook, PowerPoint, VB6, VB.NET, C#, Delphi, Python — and any COM host.

LiteView2 is a WebView2-based ActiveX control for Access VBA. It exposes 270+ methods including full DOM access, a JavaScript-to-VBA bridge, PushRecordset for sending DAO data to HTML pages, and a standalone JSON engine. It runs on top of Chromium — the same engine as Microsoft's Edge Browser Control, with far more VBA surface area.

30-day commercial trial · No telemetry · DAO PushRecordset built in · No admin required (reg-free)

Edge Browser Control vs LiteView2 in Access

Access Edge Browser Control (Microsoft)

  • Navigate, Refresh, ExecuteJavascript, RetrieveJavascriptValue
  • 1 event: DocumentComplete
  • No DOM access (no Document object)
  • No JSON engine
  • No JavaScript-to-VBA callbacks
  • Access only — not Excel, Word, VB6

LiteView2

  • 270+ methods including full navigation, DOM, scripting, PDF, screenshots
  • 59 events: navigation, DOM ready, web message, downloads, auth
  • GetElementValueById, SetInnerHtmlById, WaitForElement, and more
  • Standalone C++ JSON engine
  • AddHostObjectToScript — call VBA from JavaScript
  • PushRecordset — send DAO/ADO data to page as JSON

Access VBA code sample

Push a DAO recordset to an HTML dashboard in one call:

Private WithEvents m_lv As LiteView2.LiteView2Ctrl

Private Sub Form_Load()
    Set m_lv = Me.LiteView2Ctrl1.Object
End Sub

Private Sub m_lv_WebViewReady()
    m_lv.SetLocalContentRoot CurrentProject.Path & "\Access\demos"
    m_lv.Navigate "https://lv2.local/analytics_dashboard.html"
End Sub

Private Sub m_lv_NavigationCompleted(ByVal url As String, ByVal success As Boolean)
    ' Push DAO query result to dashboard — no manual JSON needed
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Set db = CurrentDb()
    Set rs = db.OpenRecordset("SELECT Category, SUM(Amount) AS Total " & _
                              "FROM tblSales GROUP BY Category", dbOpenSnapshot)
    rs.MoveLast : rs.MoveFirst          ' materialise all rows
    m_lv.PushRecordset rs, "onSalesData"
    rs.Close
End Sub

Private Sub m_lv_WebMessageReceived(ByVal message As String, ByVal source As String)
    ' JS posted back — decode via JSON engine, never call JsonGetValue here
    m_LastMessage = message
    Me.TimerInterval = 50   ' process in Form_Timer to avoid re-entrancy
End Sub

FAQ

Can I use WebView2 in Microsoft Access?

Yes. LiteView2 works in Access forms in both Registered Mode (drop on form at design time) and Reg-Free Mode (embed at runtime in a Frame control using IBrowserPool).

Does LiteView2 work with DAO recordsets?

Yes. PushRecordset accepts any DAO or ADO Recordset object and sends all rows to a JavaScript callback function in the page as a JSON array. Use dbOpenSnapshot for GROUP BY queries, and call rs.MoveLast : rs.MoveFirst before PushRecordset to ensure all rows are materialised.

Why not use the new Access Edge Browser Control?

The Edge Browser Control exposes four methods and one event. As documented by the developer community: "the lack of the Document object is a huge loss" (devhut.net). LiteView2 provides full DOM access, JS-to-VBA callbacks, PushRecordset, and 59 events. See the full comparison.

Can JavaScript in the HTML page call Access VBA methods?

Yes. In Registered Mode, use m_lv_WebMessageReceived to receive postMessage calls from the page. In Reg-Free Mode, pool.AddHostObjectToScript exposes a VBA class directly to JavaScript as a native object — JavaScript calls VBA methods like any other JS method call.

Full WebView2 in Access — beyond the 4-method Edge control

270+ methods. DAO PushRecordset. DOM access. JSON engine. Free 30-day trial.

Download free 30-day trial
30-day commercial trial · No telemetry · No admin required (reg-free mode)

vs Edge Browser Control · Embed Chromium in Excel · Reg-Free Mode (IBrowserPool) · Full API reference