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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2010, 16:35   #11
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

будет время к вечеру,напишу вам макрос,правильный.

Я и понимал,что вход под паролем.вы рассмотрите для себя вариант получения данных при помощи SQL запроса с сервера.Я это подразумевал
Цитата:
Если вас интересует только конечный результат,независимо какими путями получен
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 07.11.2010, 03:39   #12
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Собираете файлы в кучку в папку и выбираете эту папку в диалоге
Вложения
Тип файла: rar ASP.rar (34.6 Кб, 13 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 08.11.2010, 13:26   #13
Meta2
Пользователь
 
Регистрация: 28.10.2009
Сообщений: 38
По умолчанию

doober
Спасибо...
Теперь я не знаю, что мне с этим делать...

Я хочу получить плоский список, как во вложенном примере, и у меня есть скрипт, который мне это делает. Может, не так изящно как ваш, но для моего уровня программирования на VBA мне вполне нравится.
Скрипт преобразует каждый ASP в HTML, как написано у вас, потом я разбираю отдельно таблицу из каждого HTML, ориентируясь на появление слова "Итого:", что служит сигналом прекращения обработки. Проблема в том, что в в одном из файлов слетает кодировка и обработка зацикливается...

Притом таких файлов не один, а несколько. Ещё я использовал такой приём - при загрузке в Excel, таблица, как правило, начинается с определённой строки, я устанавливал счётчик, начиная с этой строки и считал, покуда не встречу "Итого:" или пока не дойду до пустой ячейки. проблема состоит в том, что в некоторых файлах таблица начинается на ячейку ниже и тогда в итоговый список попадает мусор.

Как побороть кодировку и как сделать так, чтобы таблица всегда начиналась с одной и той же строки?
Вложения
Тип файла: zip Sample.zip (16.2 Кб, 10 просмотров)

Последний раз редактировалось Meta2; 08.11.2010 в 13:36.
Meta2 вне форума Ответить с цитированием
Старый 08.11.2010, 16:05   #14
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Я не вижу проблем с кодировкой.
Сделаю еще один вариант
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 08.11.2010, 16:09   #15
Meta2
Пользователь
 
Регистрация: 28.10.2009
Сообщений: 38
По умолчанию

Во вложении - два файла 21.xls и 22.xls, полученные, соответственно, загрузкой в Excel файлов 21.html и 22.html

Разительно отличаются...
Вложения
Тип файла: zip Рабочий стол.zip (15.7 Кб, 9 просмотров)
Meta2 вне форума Ответить с цитированием
Старый 08.11.2010, 23:17   #16
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Попробуйте проблемные файлы побороть таким кодом.Но предварительно поменяйте расширение файла с ASP на HTML,иначе работать не будет.
Правда очень медленный вариант
Код:
Sub ASP()
Dim T_COUNT As Integer, i  As Integer, K As Integer
Set IE = CreateObject("InternetExplorer.Application"): DoEvents
Dim flag As Boolean
IE.Navigate "C:\22.html" ' Здесь укажите свой путь
K = 0
While IE.readyState <> 4: DoEvents: Wend
For Each PAG In IE.Document.all
If PAG.tagName Like "TABLE" And flag = True Then
l = l + 1
T_COUNT = T_COUNT + 1
 For n = 0 To PAG.Rows.Length - 1
 For m = 0 To PAG.Rows(n).Cells.Length - 1
 Лист1.Cells(n + l, m + 1 + K) = PAG.Rows(n).Cells(m).innerText
   If UCase(PAG.Rows(n).Cells(m).innerText) Like "*ИТОГО*" Then
K = 2
   End If: Next: Next: l = l + 3: End If
If PAG.tagName Like "H1" Then
l = l + 1
flag = True
Лист1.Cells(l, 1) = PAG.innerText
End If
If T_COUNT = 2 Then Exit For
 Next PAG
IE.Quit
Set IE = Nothing
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 11.11.2010, 16:05   #17
Meta2
Пользователь
 
Регистрация: 28.10.2009
Сообщений: 38
По умолчанию

Ага, я кажется, понял, в чём проблема...

Дело в том, что при формировании груза можно указать примечание по доставке. Те файлы, в которые это примечание добавлено, читаются криво:

1. происходит смещение на одну строку вниз из-за строки с примечанием.
2. сбивается кодировка.

как побороть смещение вниз, я представляю, но что делать с кодировкой??

все нужные файлы в аттаче.

Вопрос такой - можно ли удалить всё, вплоть до таблицы? Мне это всё не нужно.

Попробовал, кстати, ваш вариант с InternetExplorer.Application...

Работает, но ооооооооооооооооочень медленно.
Вложения
Тип файла: rar Каталог товаров.rar (831.8 Кб, 11 просмотров)

Последний раз редактировалось Meta2; 11.11.2010 в 16:37.
Meta2 вне форума Ответить с цитированием
Старый 12.11.2010, 01:50   #18
Meta2
Пользователь
 
Регистрация: 28.10.2009
Сообщений: 38
По умолчанию

doober

Прикреплённый файл с вашим скриптом, результатом его работы и моей правкой.
Вложения
Тип файла: rar Desktop.rar (876.6 Кб, 24 просмотров)
Meta2 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибки при загрузке Windows Syltan Операционные системы общие вопросы 6 20.04.2010 15:05
Как обработать ошибки при скачке html-страниц? delphyok Работа с сетью в Delphi 6 14.08.2009 14:06
ПРИ ЗАГРУЗКЕ ВИНДЫ ДАЕТ ВЫБОР ИЗ 3, КАК УБРАТЬ 2? iukash Windows 3 01.05.2009 14:04
как сделать на своем сайте возможность устанавливать его, как стартовую страницу при загрузке броузера Chaynik Помощь студентам 2 02.03.2009 23:10
Ошибка при загрузке файла html Ign Microsoft Office Excel 1 11.11.2007 13:55