我想在 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
关于javascript - 在 Mac 上的 Excel 上从 VBA 调用 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52591340/