При парсинге избежать преобразования чисел в экспоненциальный формат
Пользователь
Сообщений: Регистрация: 09.04.2018
21.04.2018 21:52:48
Цитата
alpens написал: Не смог найти способ найти нужное поле в переменной QT1, чтобы обработать его значение.
Смог. Данные в QT1 появляются также после QT1.Refresh и поле Value2 содержит 1,311000011418Е+17, т.е. тоже обрезано. Тип этого поля Variant/Double. Как сделать, чтобы все поля были Variant/String. Есть ли настройка ?
При парсинге избежать преобразования чисел в экспоненциальный формат
Power Query исппользовать не смог: 1. не нашел примера его использования в макросах VBA; 2. если правильно понял Power Query предполагает знание структуры сайта. Импорт каждой табл. сайта производится на отдельный лист, что затрудняет обработку данных, тогда как QueryTabl позволяет импортировать все данные сайта на один лист.
Цитата
Anchoret написал: Если как-то обойти и выгружать в массив, то шанс победить есть
Вероятно, нужно выгружать не в массив, а в переменную типа QueryTable. Что-то вроде
Dim QT1 As QueryTable Set QT1 = .QueryTables.Add("URL;;, Range("A1"))
Если затем
QT1.Refresh
то данные записываются на лист.
Не смог найти способ найти нужное поле в переменной QT1, чтобы обработать его значение. Как можно это сделать ?
При парсинге избежать преобразования чисел в экспоненциальный формат
Пользователь
Сообщений: Регистрация: 09.04.2018
11.04.2018 15:00:51
Anchoret,Спасибо! Про массив хорошая идея. Но слету не соображу как. Парсятся разные сайты. заранее не известно в каком месте окажется длинное число.
При парсинге избежать преобразования чисел в экспоненциальный формат
Пользователь
Сообщений: Регистрация: 09.04.2018
11.04.2018 09:31:02
Anchoret, Вы обрабатываете текстовую строку, выделяя нужный фрагмент и преобразовывая его. У меня данные считываются с сайта запросом QueryTable. После считывания в ячейке уже обрезанное значение 131100011418000000, а надо бы , как на сайте. Как этого избежать? Видимо нужно задать правильное сочетание свойств QueryTable. Но какое ?
При парсинге избежать преобразования чисел в экспоненциальный формат
При парсинге избежать преобразования чисел в экспоненциальный формат
Пользователь
Сообщений: Регистрация: 09.04.2018
11.04.2018 08:45:42
Цитата
Anchoret написал: перед вставкой к каждому такому числу прилепляется "" (пустая строка)
Данные вставляются запросом QueryTabl. Как туда прикрутить предлагаемое Вами ?
При парсинге избежать преобразования чисел в экспоненциальный формат
Пользователь
Сообщений: Регистрация: 09.04.2018
10.04.2018 23:44:10
Согласен, "текст - это наше все" Поэтому и вставил в свой код Selection.NumberFormat = "@" перед считыванием данных сайта. После считывания формат ячеек остается текстовым, однако происходит преобразование в экспоненту. что нужно еще ?
При парсинге избежать преобразования чисел в экспоненциальный формат
Пользователь
Сообщений: Регистрация: 09.04.2018
10.04.2018 23:25:06
Нет, так применимо только в данном конкретном примере. На самом деле обрабатываются разные сайты и в URL далеко не всегда присутствует нужный номер (как в данном случае). Нужен прием, который обеспечивает адекватное представление полей сайта, содержащих длинный цифровой код.
При парсинге избежать преобразования чисел в экспоненциальный формат
Пользователь
Сообщений: Регистрация: 09.04.2018
10.04.2018 23:00:57
Спасибо, полегчало, но не намного. Теперь получаю 131100011418000000, а надо бы , как на сайте.
При парсинге избежать преобразования чисел в экспоненциальный формат
Пользователь
Сообщений: Регистрация: 09.04.2018
10.04.2018 22:13:23
Спасибо, но не хватает интеллекта, не соображу куда это вставить. Пожалуйста, поясните подробнее.
При парсинге избежать преобразования чисел в экспоненциальный формат
Пользователь
Сообщений: Регистрация: 09.04.2018
10.04.2018 00:25:18
Поле Реестровый номер процедуры: на сайте имеет значение . После считывания это поле принимает значение
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"[/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