Я загружаю файлы HTML с помощью VBA и Python. Эти файлы находятся в каталоге файлов, таких как C:\files
. Каждая загрузка дает мне около 7 - 12 файлов HTML.
Я хочу, чтобы открыть каждый HTML файл на одной книге, с которой я сейчас работаю.
Используя функцию Open
VBA
для каждого файла HTML
я получаю новую книгу, которая создает перегруженность и беспорядок.
Есть ли способ иметь команду внутри цикла, которая открывает HTML файл на новой вкладке и внутри текущей книги?
Я могу думать о двух вариантах: каждый раз перемещать лист из новой книги в текущую; или посмотрите на использование 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 будет отображаться в браузере. Как правило, результаты не будут выглядеть так же, как на веб-странице, но вы получите больше контроля. Это может быть или не быть полезным в зависимости от того, что вы собираетесь делать с данными впоследствии. Дополнительную информацию см. В документации VBA для QueryTables
, но основными шагами являются создание нового 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