Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Вытаскивание данных из web Добавлено: 19.12.11 19:24  

Автор вопроса:  dimitriy
всем привет,

с помощью макрорекордера в экселе записал макрос по экспорту из web таблицы в эксель

Sub Запрос()

Dim ВебССылка As String
ВебССылка = "URL;http://zakupki.gov.ru/pgz/printForm?type=CONTRACTS&bid=0&cids=1"

With ActiveSheet.QueryTables.Add(Connection:=ВебССылка, Destination:=Cells(1, 1))
    .Name = "zakupki"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .WebSelectionType = xlSpecifiedTables
    .WebFormatting = xlWebFormattingNone
    .WebTables = "1"
    .WebPreFormattedTextToColumns = True
    .WebConsecutiveDelimitersAsOne = True
    .WebSingleBlockTextImport = False
    .WebDisableDateRecognition = False
    .WebDisableRedirections = False
    .Refresh BackgroundQuery:=False
End With

End Sub

Но проблема в том, что числовое значение в экспортируемой таблице, в первом столбце имеет экспоненциальный формат, причем число округляется
Как можно и можно ли с этим справится?
Буду крайне признателен за помощь!

Ответить

  Ответы Всего ответов: 12  

Номер ответа: 1
Автор ответа:
 AxeL



ICQ: 264730390 

Вопросов: 2
Ответов: 106
 Профиль | | #1 Добавлено: 22.12.11 05:44
Предварительно отформатируй столбцы в нужный формат. Чтобы не было экспоненциальных данных - в числовой примерно так
  1. Range("A4").NumberFormat = "0"

Ответить

Номер ответа: 2
Автор ответа:
 dimitriy



Вопросов: 1
Ответов: 4
 Профиль | | #2 Добавлено: 22.12.11 10:51
Пробывал, перед экспортом всему листу задавал и числовой и текстовый форматы, результат тот же. Формат ячеек после экспорта остается заданным, а вот числовое значение все равно округляется - возможно из-за того, что число состоит из 19-ти цифр?

Я уже в отчаянии и готов даже материально отблагодарить того кто поможет!

Ответить

Номер ответа: 3
Автор ответа:
 AxeL



ICQ: 264730390 

Вопросов: 2
Ответов: 106
 Профиль | | #3 Добавлено: 23.12.11 03:10
При ручной обработке помогает предварительно выставленный текстовый формат... При веб-запросе он игнорируется... а нельзя тоже самое получить через XML?

Ответить

Номер ответа: 4
Автор ответа:
 dimitriy



Вопросов: 1
Ответов: 4
 Профиль | | #4 Добавлено: 23.12.11 11:09
Я с веб-запросами никогда не работал, это мой первый опыт. По поводу XML - это имеется ввиду вытаскивание данных из HTML-кода?

Ответить

Номер ответа: 5
Автор ответа:
 AxeL



ICQ: 264730390 

Вопросов: 2
Ответов: 106
 Профиль | | #5 Добавлено: 24.12.11 00:15
По поводу XML - это имеется ввиду вытаскивание данных из HTML-кода?
Нет, это когда на запрос ты получаешь файл XML, который потом и обрабатываешь.
...а если посмотреть "исходный код страницы", то именно XML тебе и присылается...
код файла GetXML.vbs:
  1. Option Explicit
  2. Dim oXML
  3. Dim str_query : str_query = "http://zakupki.gov.ru/pgz/printForm?type=CONTRACTS&bid=0&cids=1"
  4. Set oXML = CreateObject("Microsoft.XMLDOM")
  5. oXML.async = False
  6. oXML.load(str_query)
  7. oXML.save(Left(WScript.ScriptFullName, _
  8. InStrRev(WScript.ScriptFullName, "\")_
  9. ) & "zakupki.xml")
  10. WScript.Echo oXML.xml
  11.  
  12. Set oXML = Nothing
получает xml-файл по запросу и сохраняет в текущей директории под именем "zakupki.xml"

Ответить

Номер ответа: 6
Автор ответа:
 dimitriy



Вопросов: 1
Ответов: 4
 Профиль | | #6 Добавлено: 26.12.11 16:31
Мысль о том, что бы сначало получить xml-файл - отличная. Правда при вытаскивании данных из него, как из xml-файла через excel все равно происходит округление числа.
Но данных немного и можно, например, выгрузить все в одну ячейку и макросом разбросать по столбцам...

Ответить

Номер ответа: 7
Автор ответа:
 AxeL



ICQ: 264730390 

Вопросов: 2
Ответов: 106
 Профиль | | #7 Добавлено: 27.12.11 08:28
Ты скажи, что нужно сделать с этими данными...
Получая XML-файл, ты получаешь ПОЛНЫЙ контроль над всеми данными, которые приходят к тебе в НЕИСКАЖЕННОМ виде, в отличие от веб-запроса... Дальнейшая обработка этих данных - дело относительно простое... Если нужно нормальное отображение в Excel'e, то:
1. Предварительно форматируешь ячейку как "Текст"
2. Ставишь знак ' перед числом. В ячейке он отображаться не будет, но при программной обработке его необходимо будет учитывать.
3. Напиши xsl и xsd файлы, которые соответственно будут указывать как отображать полученную информацию и какая информация (тип строка/число/..., количество, ограничения) должна быть.

Ответить

Номер ответа: 8
Автор ответа:
 AxeL



ICQ: 264730390 

Вопросов: 2
Ответов: 106
 Профиль | | #8 Добавлено: 27.12.11 08:32
В смысле из всех пунктов тебе нужно выбрать один.

Ответить

Номер ответа: 9
Автор ответа:
 dimitriy



Вопросов: 1
Ответов: 4
 Профиль | | #9 Добавлено: 28.12.11 17:03
Для меня веб-запросы и иЖЕсНими - китайская грамота, надо изучать, поэтому 3 пункт мне не подойдет
А вот работа уже внутри экселя с файлами это не проблема

Огромное спасибо за идею с сохранением XML-файла.

ПС. напиши, пожалуйста, размер и куда сбросить благодарность (webmoney или QIWI)

Ответить

Номер ответа: 10
Автор ответа:
 AxeL



ICQ: 264730390 

Вопросов: 2
Ответов: 106
 Профиль | | #10 Добавлено: 29.12.11 02:35
Файлы для отображения в том виде, в котором данные отображаются на сайте находятся по адресам
  1. http://zakupki.gov.ru/pgz/printForms/contractsPF_1.xsl
  2. http://zakupki.gov.ru/pgz/printForm.css
но без XSD файла Excel делает те же ошибки.
Вообще, XSL и XSD файлы имеют XML формат и не так уж сложны. Если что-пиши, постараюсь помочь.
QIWI - 9242690211, размер - по твоему усмотрению.

Ответить

Номер ответа: 11
Автор ответа:
 AxeL



ICQ: 264730390 

Вопросов: 2
Ответов: 106
 Профиль | | #11 Добавлено: 29.12.11 05:22
Набросал XSD файл... Excel(2003) его игнорирует... :-(

Ответить

Номер ответа: 12
Автор ответа:
 AxeL



ICQ: 264730390 

Вопросов: 2
Ответов: 106
 Профиль | | #12 Добавлено: 30.12.11 03:35
Спасибо за благодарность :-)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам