VBA Открыть несколько файлов HTML в электронных таблицах только в рабочей книге, открытой в данный момент

0

Я загружаю файлы HTML с помощью VBA и Python. Эти файлы находятся в каталоге файлов, таких как C:\files. Каждая загрузка дает мне около 7 - 12 файлов HTML.

Я хочу, чтобы открыть каждый HTML файл на одной книге, с которой я сейчас работаю.

Используя функцию Open VBA для каждого файла HTML я получаю новую книгу, которая создает перегруженность и беспорядок.

Есть ли способ иметь команду внутри цикла, которая открывает HTML файл на новой вкладке и внутри текущей книги?

Теги:
excel-vba
excel
excel-2010

1 ответ

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 будет отображаться в браузере. Как правило, результаты не будут выглядеть так же, как на веб-странице, но вы получите больше контроля. Это может быть или не быть полезным в зависимости от того, что вы собираетесь делать с данными впоследствии. Дополнительную информацию см. В документации 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
  • 0
    Спасибо за отличный ответ, который я не знал о Querytables !!!! Однако есть одна вещь, которую я хотел бы спросить. В первом решении, где вы перемещаете лист ... Есть ли способ скопировать вкладку в активную рабочую книгу, не открывая wb, который является источником, и данные копируются? Каким-то образом скопируйте вкладку из исходной рабочей книги, не открывая ее ...
  • 0
    Я так не думаю . Если это файл Excel, тогда вам действительно нужно открыть его для работы с ним из VBA. Для других типов файлов (например, HTML или XML) вы можете читать из них напрямую - но это фактически то, что делает опция Querytables выше.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню