Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA仅在当前打开的工作簿中打开电子表格中的几个HTML文件_Html_Vba_Excel_Excel 2010 - Fatal编程技术网

VBA仅在当前打开的工作簿中打开电子表格中的几个HTML文件

VBA仅在当前打开的工作簿中打开电子表格中的几个HTML文件,html,vba,excel,excel-2010,Html,Vba,Excel,Excel 2010,我正在使用VBA和Python下载HTML文件。这些文件位于类似C:\files的文件目录中。每次下载给我大约7-12个HTML文件 我想要的是一种在我当前使用的工作簿上打开每个HTML文件的方法。 通过对每个HTML文件使用VBA的Open功能,我得到了一个新的工作簿,它会造成阻塞和混乱 是否有一种方法可以在循环中使用命令,在新选项卡和当前工作簿中打开HTML文件?我可以想到两个选项:每次将工作表从新工作簿移动到当前工作簿中;或者看看如何使用查询表 移动图纸非常简单: Dim wb As Wo

我正在使用VBA和Python下载HTML文件。这些文件位于类似
C:\files
的文件目录中。每次下载给我大约7-12个HTML文件

我想要的是一种在我当前使用的工作簿上打开每个HTML文件的方法。

通过对每个
HTML
文件使用
VBA
Open
功能,我得到了一个新的工作簿,它会造成阻塞和混乱


是否有一种方法可以在循环中使用命令,在新选项卡和当前工作簿中打开HTML文件?

我可以想到两个选项:每次将工作表从新工作簿移动到当前工作簿中;或者看看如何使用查询表

移动图纸非常简单:

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
,设置选项,然后调用其
刷新
方法填充单元格:

'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

谢谢你给我一个很棒的答案,我不知道查询表!!!!然而,我想问一件事。在第一个移动工作表的解决方案中……是否有任何方法可以将选项卡复制到活动工作簿,而不打开wb,wb是数据的源和复制源?不知何故,从源工作簿复制一个选项卡而不打开它…我不这么认为。如果它是一个Excel文件,那么您确实需要从VBA打开它来使用它。对于其他文件类型(例如HTML或XML),您可以直接从中读取,但上面的Querytables选项实际上就是这么做的。。。不用用Excel打开它们,我可以使用Querytables获得我想要的,而不必用Excel打开整个HTML,用Excel复制整个选项卡。是这样吗?