Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2012, 23:01   #1
KellyDink
Пользователь
 
Регистрация: 14.10.2012
Сообщений: 13
По умолчанию чтение из html файла

Доброго времени суток,
что-то у меня ничего не выходит =( пытаюсь достать информацию из html файла и сделать из нее сводную таблицу.

Код:
Open "K:\blahblah\blah.html" For Random As #1
Dim Test as integer
Do While Not EOF(1)
Line Input #1, Test 
Loop
'пытаюсь считать в текстовую переменную 1 строку из файла для того, что-нибудь с ней сделать плохое, но увы - строка пустая =( если просто input делаю выдает ошибку =(

наверное стоит уточнить что html'ка у меня больше чем на 1000 строк =( поэтому весь его считать в переменную наверное не получится? или получится?

Последний раз редактировалось KellyDink; 18.11.2012 в 23:05.
KellyDink вне форума Ответить с цитированием
Старый 18.11.2012, 23:36   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Используйте мой код в качестве образца. В сообщении будет выводиться шестая строка из файла
Код:
Dim FileNum As Byte 'Идентификатор открытого файла
Dim intCount As Integer 'Счётчик строк
Dim strText As String 'Строковый буфер

FileNum = FreeFile 'Получение свободного идентификатора
Open "Путь к файлу" For Input As FileNum
intCount = 1
Do While Not EOF(FileNum)
    Line Input #FileNum, strText
    If intCount = 6 Then MsgBox strText: Exit Do
    intCount = intCount + 1
Loop
Close FileNum
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 19.11.2012, 00:16   #3
KellyDink
Пользователь
 
Регистрация: 14.10.2012
Сообщений: 13
По умолчанию

А у Вас работает =(((((

но я уже плюнула править сам файл и сделала как-то так
Код:
Sub картинки()
'
' 
'
'
Dim test, change, change_1 As String
Dim Line() As String
Dim element
change = "K:/blahblahblah.files"
change_1 = "C:/Documents and Settings/blahblahblah.files"

File = "K:\blahblahblah.html"
Open File For Input As #1
test = Input(FileLen(File), 1)
Close #1

Line = Split(test, vbCrLf)
Open "K:\blahblahblah.html" For Output As #1

For Each element In Line()
If InStr(element, change_1) <> 0 Then
element = Replace(element, change_1, change)
End If
Print #1, element
Next

Close #1

End Sub
криво наверное =)
Спасибо Вам огромное! может Вы мне поможете еще со вставкой информации в таблицу в ворде? а то в екселе я сталкивалась, а с таблицами в ворде - нет! без Вашей помощи придется перелапачивать безумное количество форумов =(
KellyDink вне форума Ответить с цитированием
Старый 19.11.2012, 00:24   #4
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Помочь — помогу, но вы толком объясните, что хотите получить. Почему замену в текстовом файле нужно производить макросом, когда с этим справится даже Блокнот? Какую информацию в таблицу нужно вставлять? Где эта таблица находится? Откуда брать информацию? Или это просто учебные задания?
Задаю вопросы не из вредности, а чтобы наиболее полно помочь вам в решении вашей задачи
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 19.11.2012, 00:51   #5
KellyDink
Пользователь
 
Регистрация: 14.10.2012
Сообщений: 13
По умолчанию

=))) замену макросом делала ибо html'ка большая, а в блокноте я не умею! а копировать весь код страницы в ворд и делать автозамену лениво - через чур долго думать будет!

да и притом хотела разобраться как раз для таблицы.

С таблицей... короче я сама толком не знаю что мне нужно сделать. есть html'ка с отчетом программулины по сканированию сети. мне оттуда надо выковырять ip адрес компьютера, mac адрес компьютера, Dns имя компьютера и ОС, то есть таблица будет состоять из 4-х столбцов. Таблица должна формироваться или заполняться(я просто не знаю как ее рисовать с помощью макроса,поэтому наверное проще будет ее нарисовать средствами ворда, а макросом только заполнять) в ворде
соответственно их очень много, так что руками это делать равносильно самоубийству.
и вторую - тут думаю будет проще, если первую сделаю. главное же разобраться КАК это делать =)

но есть проблема - не у всех указана ОС - соответственно пару полей останутся пустыми и будет привязка к столбцу.
а еще пока не придумала по какому признаку мне искать все это счастье.

пока моя главная головная боль - это запись того, что я найду в файле в ячейку.

Код:
Sub RunThroughTable2()
  Dim oCell As Cell 'Переменная, которой будем перебирать ячейки
  Dim oTbl As Table 'Таблица, в которой будем перебирать ячейки
  
  Set oTbl = ActiveDocument.Tables(1) 'Первая таблица в документе
  Set oCell = oTbl.Range.Cells(1) 'Первая ячейка в таблице
  
  Do Until oCell Is Nothing
    
    Set oCell = oCell.Next 'Переход к следующей ячейке
  Loop
End Sub

Последний раз редактировалось KellyDink; 19.11.2012 в 05:03.
KellyDink вне форума Ответить с цитированием
Старый 19.11.2012, 01:15   #6
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

вот если бы вы выложили кусок этого html-файла, где имеются нужные данные, я бы смог посоветовать что-то конкретное.
Писать в ячейку проще простого. Если использовать тот код, что вы привели (спасибо за использование моего кода) для сферической таблицы в вакууме, то это будет как-то так (в ячейку помещаются номер строки и столбца, которым она принадлежит):
Код:
Sub RunThroughTable2()
  Dim oCell As Cell 'Переменная, которой будем перебирать ячейки
  Dim oTbl As Table 'Таблица, в которой будем перебирать ячейки
  
  Set oTbl = ActiveDocument.Tables(1) 'Первая таблица в документе
  Set oCell = oTbl.Range.Cells(1) 'Первая ячейка в таблице
  
  Do Until oCell Is Nothing
    oCell.Range.Text = oCell.RowIndex & ";" & oCell.ColumnIndex
    Set oCell = oCell.Next 'Переход к следующей ячейке
  Loop
End Sub
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 19.11.2012, 01:32   #7
KellyDink
Пользователь
 
Регистрация: 14.10.2012
Сообщений: 13
По умолчанию

ой, и правда Ваш =) я даже не заметила! я стараюсь меньше напрягать окружающих людей и сначала найти решения на просторах интернета ) пока, как видите, получается плохо

никак не пойму, что записывается в Вашем коде в ячейку - точка с запятой?
я думала через value
как-нибудь так, нет?
Cells(1, 1).Value = "чего-нибудь"

Последний раз редактировалось KellyDink; 19.11.2012 в 04:44.
KellyDink вне форума Ответить с цитированием
Старый 19.11.2012, 01:43   #8
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

В моём коде в ячейку записываются номер строки и столбца, разделённые точкой с запятой.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 19.11.2012, 01:45   #9
KellyDink
Пользователь
 
Регистрация: 14.10.2012
Сообщений: 13
По умолчанию

а как тогда записать что-то в ячейку с опредленным номером столбца и строки, а не ходить по всем ячейкам подряд?
KellyDink вне форума Ответить с цитированием
Старый 19.11.2012, 02:14   #10
KellyDink
Пользователь
 
Регистрация: 14.10.2012
Сообщений: 13
По умолчанию

вот что я сделала! правда без записи в ячейку определенного столбца тяжко будет

Код:
Sub bazinga()
'
'
'
'
Dim text As String
Dim Line() As String
Dim element
Dim q, q1, q2, q3, q4 As Byte

Dim oCell As Cell 'ïåðåìåííàÿ, êîòîðîé áóäåì ïåðåáèðàòü ÿ÷åéêè
Dim oTbl As Table 'Òàáëèöà, â êîòîðîé áóäåì ïåðåáèðàòü ÿ÷åéêè
Set oTbl = ActiveDocument.Tables(1) 'ïåðâàÿ òàáëèöà â äîêóìåíòå
Set oCell = oTbl.Range.Cells(1) 'ïåðâàÿ ÿ÷åéêà â òàáëèöå

File = "K:\ðàáîòà\Îò÷åò\îò÷åò\âèçîð.html"
Open File For Input As #1
text = Input(FileLen(File), 1)
Close #1

Line = Split(text, "theader2c")

For Each element In Line()
q = InStr(element, "MAC адрес (NetBIOS)")
oCell.Range.text = Mid(element, q + 45, 20)
Set oCell = oCell.Next

Next

    

Close 1
End Sub
только он творит какую-то беспросветную хрень =( он в зависимости от своего желания выдает в mac адресе какую-то лабуду =(

Последний раз редактировалось KellyDink; 19.11.2012 в 02:38.
KellyDink вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
webbrowser чтение документа .HTML формата SKS Компоненты Delphi 7 03.02.2011 11:00
Как вывести код html из файла на страницу HTML Рамирас JavaScript, Ajax 1 25.07.2010 20:06
Чтение из файла utrnjhyfgjktjy Помощь студентам 9 30.01.2010 17:41
Чтение html Anfall Работа с сетью в Delphi 6 14.02.2009 00:06
Чтение HTML Rom1k06 Microsoft Office Excel 8 16.10.2008 21:40