Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallTo capture a webpage from Excel or Access VBA, automate a browser: open the page, wait for the content you need, then save a screenshot from the browser session. A WebDriver wrapper such as the third-party SeleniumBasic exposes screenshot methods to VBA, but it is distinct from Microsoft’s documented Edge WebDriver setup, which requires Selenium 4 if you use Selenium. A browser window or viewport screenshot is not automatically a full-page image.
This guide shows the VBA workflow, explains its limits, and distinguishes it from exporting a workbook as HTML. If you need a maintained, supported VBA binding, the sources cited here do not establish one; verify the wrapper, browser, and driver combination you intend to deploy.
What VBA must do to capture a webpage
A webpage screenshot is an image of a page rendered by a browser. It is not the same as downloading a URL’s HTML, and it is not the same as saving an Excel workbook as an HTML file. The practical VBA route is browser automation: start a browser session, navigate to a URL, wait for the page to be ready, capture the visible browser window or a particular element, and save the resulting image.
That workflow has separate parts: the browser, a browser driver, and the automation framework or VBA wrapper that issues commands. Microsoft describes WebDriver as a way for an out-of-process program to control browser behavior. Its Edge setup guidance calls for Edge, Edge WebDriver, and a WebDriver framework; for Selenium, Microsoft specifies Selenium 4. These facts do not amount to a Microsoft-provided VBA binding or a ready-to-run VBA screenshot macro.
Recommended Free Tools
#1 Best Overall
Choose and set up a VBA browser route
Edge WebDriver and Selenium
For Microsoft Edge automation using Selenium, install Selenium 4 and an Edge WebDriver whose first three version components match the installed Edge version. The fourth component need not match. Microsoft says Selenium Tools for Microsoft Edge are not needed when using Selenium 4. Check Microsoft’s current Edge WebDriver guidance before installing, because browser and driver compatibility can change.
These instructions describe the Microsoft-supported browser automation setup, not a native way to call Selenium from VBA. Selenium’s official documentation demonstrates screenshots in its language bindings, but does not make every binding available through VBA. A VBA-facing wrapper is another software component and has its own compatibility and maintenance status.
SeleniumBasic as a third-party VBA wrapper
SeleniumBasic is a third-party project whose source exposes a VBA-facing WebDriver screenshot method and an element screenshot method. It is not identified here as Microsoft-supported, and the material available does not establish that it is actively maintained or compatible with current Edge and driver releases. Do not assume that installing SeleniumBasic alone supplies a compatible modern Edge driver. Confirm the wrapper’s supported browser, driver, and method syntax in the version you install before relying on it.
The example below illustrates the SeleniumBasic object model and the sequence to implement. SeleniumBasic source documents WebDriver.TakeScreenshot with an optional millisecond delay and documents an element capture method. The source material does not establish an independently tested, end-to-end macro, so treat this as a version-dependent template rather than a guarantee that it will run unchanged in your environment. If your installed wrapper does not expose the methods as shown, follow that version’s documentation rather than substituting unverified commands.
Rank #2
Capture a browser window with VBA
In the VBA editor, add the SeleniumBasic type library reference if your installation requires it, or use late binding if the wrapper supports it. The following early-bound example assumes the SeleniumBasic WebDriver type is available. Change the destination path and target URL. It captures the current browser window, not a guaranteed full-page screenshot.
Option Explicit
Sub CaptureWebPageWindow()
Dim driver As New WebDriver
Dim targetUrl As String
Dim outputPath As String
targetUrl = "https://example.com/"
outputPath = Environ$("USERPROFILE") & "Desktopwebpage.png"
On Error GoTo CaptureError
' Start the browser supported by your installed SeleniumBasic version.
driver.Start "chrome"
driver.Get targetUrl
' SeleniumBasic documents an optional delay in milliseconds.
' Replace this fixed pause with a condition-based wait when available.
driver.TakeScreenshot 3000
driver.TakeScreenshot.SaveAs outputPath
driver.Quit
MsgBox "Screenshot saved to: " & outputPath, vbInformation
Exit Sub
CaptureError:
On Error Resume Next
driver.Quit
MsgBox "Screenshot failed: " & Err.Description, vbExclamation
End Sub
Because wrapper APIs and browser support vary, verify the startup command and screenshot-save syntax against your installed SeleniumBasic version. If that version’s documented usage instead chains the save operation directly from the screenshot result, use its documented form. The critical sequence is to navigate first, wait for the desired state, save the capture, and close the session even after an error.
Use a condition-based wait for dynamic pages
A fixed delay can be adequate for a simple page but is brittle: a slow response may outlast it, while a fast page wastes time. For dynamic content, wait for a concrete condition, such as the presence or visibility of the element that proves the desired section has rendered, using a wait facility supported by your selected wrapper. Do not assume that a page is screenshot-ready merely because navigation returned. Images, client-side rendering, consent overlays, and delayed widgets may still change the capture.
If your wrapper has no reliable condition-based wait, use a bounded delay and inspect the resulting file during development. Keep the delay as short as your actual page permits, and handle timeouts explicitly rather than saving an image when the page is still incomplete.
Free tools Windows power users keep installed
One-click scans. No signup required.
Capture one element instead of the whole window
When the goal is a chart, report, or specific panel, locate that element with the wrapper’s element lookup method and use its documented screenshot method. SeleniumBasic’s element implementation obtains a screenshot and crops it to the element rectangle when the session does not support a native element screenshot capability. The element must fit within the captured image; the implementation can raise an error if its rectangle falls outside the screenshot.
Before capturing an element, scroll it into the visible region using the automation library’s supported scrolling or interaction method, then wait for it to render. If the element extends beyond the visible image, a viewport screenshot and crop cannot produce the entire element reliably. A page section can also be obscured by a sticky header, modal, or cookie dialog; address that state before taking the image.
What “full-page screenshot” means here
SeleniumBasic’s documented current-window screenshot is not evidence of full-page capture. It should be described as a browser-window or viewport capture. Its element screenshot behavior is likewise a crop of the screenshot to the element rectangle, not proof of an image extending through every scroll position on the page.
If you need a long page in one image, confirm that your chosen browser automation implementation explicitly supports full-page capture and test it on pages with lazy-loaded content. Otherwise, capture the visible viewport or use a separate, documented full-page method. Scrolling and stitching multiple images can introduce seams, repeated sticky elements, or missing content, so do not label such a result a native full-page capture without checking it.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemsLegacy Internet Explorer WebBrowser control
Older VBA examples use the Internet Explorer WebBrowser control. Microsoft’s legacy documentation explains that navigation is asynchronous and demonstrates handling navigation completion before working with the contained document. The Internet Explorer DocumentComplete event can fire for each frame in a framed page, not just once for the top-level document. A macro that treats the first event as final can therefore act too early.
This is a legacy route, not a current Edge automation recipe. The old event behavior is useful for understanding why an immediate screenshot after navigation can fail, but it does not make the Internet Explorer control an appropriate substitute for modern browser automation.
Rank #4
Access EdgeBrowserControl is not a screenshot API
Access provides an EdgeBrowserControl based on Edge WebView2. Its reference lists a ControlSource for specifying the webpage and an ExecuteJavascript method. That reference is Access-specific, not a general Excel VBA browser control, and it does not establish a screenshot method. Do not assume that displaying a page in that control also gives VBA a supported way to save its rendered pixels.
Do not confuse a screenshot with Excel’s HTML export
Excel’s ActiveWorkbook.SaveAs with FileFormat:=xlHTML exports workbook content as an HTML document and supporting files. It does not open an external webpage in a browser and capture its appearance as an image. Use that export when the desired output is workbook content in HTML form; use browser automation when the desired output is a rendered webpage screenshot.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Troubleshooting VBA webpage screenshots
The browser will not start
- Cause: The wrapper, browser, or driver combination is missing or incompatible. Edge automation with Selenium requires Selenium 4 under Microsoft’s documented setup, and the first three version components of Edge and Edge WebDriver must match.
- Fix: Check the installed browser and driver versions, then consult Microsoft’s current setup page. If using SeleniumBasic, separately confirm that the wrapper version supports the selected browser and startup command; do not assume Microsoft’s Selenium 4 guidance makes an older VBA wrapper compatible.
The image is blank or shows an unfinished page
- Cause: Navigation is asynchronous, or the page’s content loads after the initial document response.
- Fix: Wait for the actual content you need, preferably with a condition-based wait supported by your framework. For legacy WebBrowser code, account for navigation completion and frame events rather than assuming one event means all page work is finished.
The element screenshot raises an error
- Cause: The element’s rectangle is outside the screenshot image, or the target was not found or rendered.
- Fix: Confirm that the element locator matches, wait for the element, and bring it into the visible captured region before taking its screenshot.
The file is not where expected
- Cause: The path is invalid, the destination directory does not exist, or the process lacks write permission.
- Fix: Use a known writable directory, verify that it exists, and check that the saved file has nonzero size. Ensure the screenshot save method is the one documented by the installed wrapper.
The screenshot contains a popup, consent banner, or chat widget
- Cause: Browser automation captures what the page displays; it does not inherently remove overlays.
- Fix: Handle the page state explicitly in your workflow, such as dismissing an overlay with a permitted interaction or choosing a capture service that has documented cleanup behavior. Avoid hiding content blindly if it is part of the page you need to preserve.
Performance, reliability, and deployment considerations
A local VBA macro depends on the desktop environment: browser installation, driver compatibility, network access, page behavior, and write permissions all affect whether a capture succeeds. A fixed wait increases elapsed time on every run and still cannot guarantee that a slow or blocked page is ready. For repeated captures, log the target URL, the stage that failed, and the output path so that a missing image can be distinguished from a navigation or save error.
Test with the actual websites and user environment where the macro will run. Pages may differ by authentication, geolocation, personalization, or consent state. Keep credentials out of code and workbook files, and follow the site’s access rules. For a batch workflow, consider how a failed page should affect later captures, and close browser sessions in error paths to avoid leaving processes open.
Best Value
- The Microsoft Office 365 Bible: The Most Updated and Complete Guide to Excel, Word, PowerPoint, Outlook, OneNote, OneDrive, Teams, Access, and Publisher from Beginners to Advanced
- ABIS BOOK
Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server. Make a GET request with a URL to return a PNG, JPEG, WebP, or PDF. It removes cookie/consent banners, newsletter popups, and chat widgets from more than 60 known platforms before capture; those cleanup steps can each be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and the response identifies page verdict and billing status in headers. AI agents can use its MCP tools, including take_screenshot, get_page_info, and capture_pdf.
Here is the one-call cURL example; see the ScreenshotNeo API documentation for options and response details.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp
The Free plan includes 1,000 screenshots per month with no card. Paid plans start at $5 for 3,000 shots; every feature is available on every plan. Create an account at ScreenshotNeo sign-up to start with the free monthly allowance.
Frequently Asked Questions
Can VBA take a screenshot without opening a browser?
Not of a rendered webpage using the workflow described here. A screenshot requires rendering the page in a browser or another capture environment; retrieving the page’s HTML alone does not create an image of its appearance.
Can I use this approach from Access as well as Excel?
VBA is available in both Office applications, but browser automation setup and references must be available to the host application. Access’s EdgeBrowserControl is a separate Access-specific feature and is not itself documented as a screenshot API.
Does saving the workbook as HTML create a webpage screenshot?
No. Excel’s HTML save option exports workbook content as HTML and supporting files; it does not capture an unrelated website as an image.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

