Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Как открыть файл html на листе Excel?


Автор: Frekenbok 22.11.2007, 10:56
Здравствуйте, уважаемые!
Вот моя проблема. Есть книга Excel. В ней 3 листа. на первых двух листах какие-то таблицы. На 3-м листе данные из файла html. А именно.... Имеется файл html с парочкой заголовков и большой табличкой. Если открыть его в Excel, то он очень здорово открывается (как новая книга). Все заголовки и таблички встают как надо.  Потом я через буфер обмена копирую все это дело на 3-й лист. А мне бы хотелось, чтобы по кнопочке на 3-м листе этот html-файлик открывался именно на 3-м листе, при этом данные на других листах сохранялись. Как это осуществить? 

Автор: Akina 22.11.2007, 12:34
Запиши это макрорекордером и проанализируй полученный код.

Автор: Frekenbok 23.11.2007, 05:50
Пардон, а макрорекордер - это что такое? Обычный макрос записать? Или не совсем? Стыдно, но такое в первый раз слышу 

Автор: Akina 23.11.2007, 08:40
Цитата(Frekenbok @  23.11.2007,  06:50 Найти цитируемый пост)
макрорекордер - это что такое?

Это сервис-макрос-начать запись. 
Затем вручную выполняешь требуемые действия.
Далее сервис-макрос-остановить запись.
И наконец сервис-макрос-редактор VBA.
Осталось изучить программную запись выполненных действий.

Автор: Frekenbok 24.11.2007, 09:13
В общем получилось вот что...
Код

    Windows("Detail.html").Activate
    Cells.Select
    Selection.Copy
    Windows("отчет.xls").Activate
    ActiveSheet.Paste

Это при условии, что файл html уже открыт в Excel. Если копировать прямо из браузера, то кусок про браузер вообще в макрос не пишется, сразу Paste, мол, и все... А мне бы хотелось, чтобы просто в стандар

Автор: kapbepucm 26.11.2007, 10:51
Код
Public Function ExtractTableName(MyFileName As String) As String
  ExtractTableName = MyFileName
  Dim I As Long
  For I = Len(MyFileName) To 1 Step -1
    If Mid(MyFileName, I, 1) = "\" Then
      ExtractTableName = Right(MyFileName, Len(MyFileName) - I)
      Exit For
    End If
  Next I
End Function
Public Sub ImportTable()
  Const HTMLfile As String = "путь\table.htm"
  Dim WrkNm As String
  WrkNm = Application.ActiveWorkbook.Name
  Application.Workbooks.Open HTMLfile
  Application.Workbooks(ExtractTableName(HTMLfile)).Sheets(1).Cells.Select
  Selection.Copy
  Application.Workbooks(WrkNm).Sheets(3).Paste
  Application.CutCopyMode = False
  Application.Workbooks(ExtractTableName(HTMLfile)).Close False
End Sub

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)