我正在使用VBA和Python下载HTML文件。这些文件位于C:\files
等文件目录中。每次下载都会给我提供大约7到12个HTML文件。
我想要的是一种在我目前使用的工作簿上打开每个HTML文件的方法。
通过对每个Open
文件使用VBA
HTML
函数,我得到一个新的工作簿,会产生拥塞和混乱。
有没有办法让循环中的命令在新选项卡和当前工作簿中打开HTML文件?
答案 0 :(得分:1)
我可以想到两个选项:每次将工作表从新工作簿移动到当前工作簿;或者查看使用Querytables。
移动工作表非常简单:
Dim wb As Workbook
For Each varFilePath In colFilePaths 'whatever your loop logic is...
Set wb = Workbooks.Open(varFilePath)
wb.Worksheets(1).Copy Before:=ThisWorkbook.Worksheets(1)
wb.Close False
Next varFilePath
另一个选项Querytables旨在从HTML中提取数据,而不是仅创建一个看起来与HTML在浏览器中呈现方式接近的工作表。通常情况下,结果看起来与网页看起来不一样,但您可以获得更多控制权。根据您之后要对数据执行的操作,这可能有用也可能没用。有关详细信息,请参阅QueryTables
的VBA文档,但基本步骤是创建指向文件和目标单元格的新QueryTable
,设置选项,然后调用其Refresh
方法填充单元格:
'inside your loop...
Set ws = ThisWorkbook.Worksheets.Add
Set qt = ws.QueryTables.Add("URL;file:///" & varFilePath, ws.Range("A1"))
'set various options here...
qt.WebFormatting = xlWebFormattingAll
qt.WebSelectionType = xlEntirePage
'Get the data
qt.Refresh