Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
При парсинге избежать преобразования чисел в экспоненциальный формат
 
Цитата
alpens написал:
Не смог найти способ найти нужное поле в переменной QT1, чтобы обработать его значение.
Смог.
Данные в QT1 появляются также после QT1.Refresh и поле Value2 содержит 1,311000011418Е+17, т.е. тоже обрезано. Тип этого поля Variant/Double.
Как сделать, чтобы все поля были Variant/String. Есть ли настройка ?
При парсинге избежать преобразования чисел в экспоненциальный формат
 
Цитата
Цитата
Jungl написал:
Используйте Power Query
Power Query исппользовать не смог:
1. не нашел примера его использования в макросах VBA;
2. если правильно понял Power Query предполагает знание структуры сайта. Импорт каждой табл. сайта производится на отдельный лист, что затрудняет обработку данных, тогда как QueryTabl позволяет импортировать все данные сайта на один лист.

Цитата
Anchoret написал:
Если как-то обойти и выгружать в массив, то шанс победить есть
Вероятно, нужно выгружать не в массив, а в переменную типа QueryTable. Что-то вроде

Dim QT1 As QueryTable
Set QT1 = .QueryTables.Add("URL;https://www.roseltorg.ru/past/procedure/0131100011418000094", Range("A1"))

Если затем

QT1.Refresh

то данные записываются на лист.

Не смог найти способ найти нужное поле в переменной QT1, чтобы обработать его значение.
Как можно это сделать ?
При парсинге избежать преобразования чисел в экспоненциальный формат
 
Anchoret,Спасибо! Про массив хорошая идея. Но слету не соображу как. Парсятся разные сайты. заранее не известно в каком месте окажется длинное число.
При парсинге избежать преобразования чисел в экспоненциальный формат
 
Anchoret, Вы обрабатываете текстовую строку, выделяя нужный фрагмент и преобразовывая его. У меня данные считываются с сайта запросом QueryTable. После считывания в ячейке уже обрезанное значение 131100011418000000, а надо бы 0131100011418000094, как на сайте. Как этого избежать? Видимо нужно задать правильное сочетание свойств QueryTable. Но какое ?
При парсинге избежать преобразования чисел в экспоненциальный формат
 
Цитата
Jungl написал:
Используйте Power Query
Пример запроса можно ?
При парсинге избежать преобразования чисел в экспоненциальный формат
 
Цитата
Anchoret написал:
перед вставкой к каждому такому числу прилепляется "" (пустая строка)
Данные вставляются запросом QueryTabl. Как туда прикрутить предлагаемое Вами ?
При парсинге избежать преобразования чисел в экспоненциальный формат
 
Согласен, "текст - это наше все"  :)
Поэтому и вставил в свой код Selection.NumberFormat = "@" перед считыванием данных сайта. После считывания формат ячеек остается текстовым, однако происходит преобразование в экспоненту. что нужно еще ?
При парсинге избежать преобразования чисел в экспоненциальный формат
 
Нет, так применимо только в данном конкретном примере.
На самом деле обрабатываются разные сайты и в URL далеко не всегда присутствует нужный номер (как в данном случае).
Нужен прием, который обеспечивает адекватное представление полей сайта, содержащих длинный цифровой код.  
При парсинге избежать преобразования чисел в экспоненциальный формат
 
Спасибо, полегчало, но не намного.
Теперь получаю 131100011418000000, а надо бы 0131100011418000094, как на сайте.
При парсинге избежать преобразования чисел в экспоненциальный формат
 
Спасибо, но не хватает интеллекта, не соображу куда это вставить. Пожалуйста, поясните подробнее.
При парсинге избежать преобразования чисел в экспоненциальный формат
 
Поле Реестровый номер процедуры: на сайте https://www.roseltorg.ru/past/procedure/0131100011418000094 имеет значение 0131100011418000094. После считывания  это поле принимает значение
1,311E+17
Что нужно изменить в коде, чтобы данные считывались в исходным виде.

(Прошу прощения, не нашел как правильно вставить текст макроса. Привожу в "корявом виде")
Код
Sub Пример()
    Workbooks("Пример.xlsm").Worksheets("Парсинг").Cells.Delete
    With Workbooks("Пример.xlsm").Worksheets("Парсинг").Select
    Range("A1:Z1000").Select
    Selection.NumberFormat = "@"
    End With
    With Workbooks("Пример.xlsm").Worksheets("Парсинг").QueryTables.Add("URL;[URL=https://www.roseltorg.ru/past/procedure/0131100011418000094"]https://www.roseltorg.ru/past/procedure/0131100011418000094&quot[/URL];, Workbooks("Пример.xlsm").Worksheets("Парсинг").Range("A1"))
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebDisableDateRecognition = True
        .Refresh BackgroundQuery:=False
    End With
End Sub
Страницы: 1
Наверх