在 Mac 上的 Excel 上从 VBA 调用 Javascript



我想在 excel 上创建一个 VBA 宏,只需单击按钮即可打开浏览器(chrome 或 safari(登录到网站,提取所需的浮点值,然后使用该值填充工作表中的给定单元格。

网上有一些关于如何使用Internet Explorer实现此目的的示例,但这在Mac上不可用。我也见过使用Selenium的指南,但这似乎不适用于Mac。

javascript本身是这样的(在某个网站上打开浏览器之后(:

document.getElementById("username").value = "username"
document.getElementById("password").value = "password"
document.getElementsByClassName("button")[0].click()
value = parseFloat(document.getElementsByClassName("value")[1].innerText.slice(1))

我已经通过使用python-selenium和xlwings的组合来解决这个问题。我的 VBA 调用RunPython ("import python_script; python_script.fun()")

python_script.py

import xlwings as xw
from selenium import webdriver
def fun():
# Creates a reference to the calling Excel file
wb = xw.Book.caller()
# opens chrome
chrome_driver_path = '/usr/local/bin/chromedriver'
driver = webdriver.Chrome(chrome_driver_path)
# open website and login
driver.get('url')
driver.find_element_by_id('username').send_keys('username')
driver.find_element_by_id('password').send_keys('password')
driver.find_element_by_name('buttonId').click()
# finds member price sum
table_body = driver.find_element_by_xpath("//*[@class='classname']").text
price = float(table_body.split()[2][1:])
# closes chrome
driver.quit()
# changes cell value
sheet = wb.sheets['sheetname']
sheet.range('cell').value = price

最新更新