Kytx писал(а):При этом на обработчик ошибок "On Error Resume next" не реагирует. Как от них можно избавиться?
В настройках браузера выключи отладку скриптов.
Kytx писал(а):При этом на обработчик ошибок "On Error Resume next" не реагирует. Как от них можно избавиться?
Option Base 1
Public Type Type_Paramers
Name As String
Description As String
Value As Variant
End Type
Dim Parametrs() As Type_Paramers
Sub DataFromHTML(FilePath As String)
Dim nFreeFile As Integer
Dim i As Long
Dim Doc As Object
nFreeFile = FreeFile
Open FilePath For Input As nFreeFile
Set Doc = CreateObject("HTMLFile")
Doc.Write input(FileLen(FilePath), #nFreeFile)
Close nFreeFile
ReDim Preserve Parametrs(100)
Set TableHTML = Doc.body.getElementsByTagName("Table").Item(1).getElementsByTagName("TBODY").Item(0)
For Each TrHTML In TableHTML.getElementsByTagName("TR")
i = i + 1
Parametrs(i).Name = TrHTML.getElementsByTagName("TD").Item(0).getElementsByTagName("A").Item(0).innerText
Parametrs(i).Description = TrHTML.getElementsByTagName("TD").Item(0).getElementsByTagName("DIV").Item(0).innerText
Parametrs(i).Value = TrHTML.getElementsByTagName("TD").Item(1).innerText
Next
ReDim Preserve Parametrs(i)
End Sub
alibek писал(а):1. Зачем считывать содержимое файла в переменную?
2. Зачем ты делаешь Doc.Open и Doc.Close?
3. ReDim Preserve нужно делать только один раз. Задавай массив с запасом перед циклом, а после цикла обрезай по нужному количеству элементов.
nFreeFile = FreeFile
Open FilePath For Input As nFreeFile
Set Doc = CreateObject("HTMLFile")
Doc.Write input(FileLen(FilePath), #nFreeFile) '<--- ОШИБКА ТУТ Input past end of file (Error 62).
Close nFreeFile
kibernetics писал(а):вначале стоят 2 символа 255 и 254, я так понимаю нули
iGrok писал(а):kibernetics писал(а):вначале стоят 2 символа 255 и 254, я так понимаю нули
Это не нули, это Unicode Byte Order Mark (BOM).
Dim s As String
Dim b() As Byte
nFreeFile = FreeFile
Open FilePath For Binary As nFreeFile
ReDim b(FileLen(filepath))
Get #nff, , b
s = b
Close nFreeFile
iGrok писал(а):s = b
Qwertiy писал(а):Неужели такое присваивание прокатит для юникодного файла?
arthur2 писал(а):только ReDim b(FileLen(filepath)-1)А то в конце строки будет лишний байт. А ещё лучше - ReDim b(FileLen(filepath)-3) и читать файл с третьего байта - чтобы сигнатуру пропустить
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 44