Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

экспоненциальные числа при переносе

Дата публикации: 30-09-2026 06:35:21

экспоненциальные числа при переносе в форуме Вопросы по Microsoft Excel.
====code====
Sub Пример()
    Dim rng As Range
    Set rng = FileQueryRange("C:\Users\m.....\Desktop\1.html") ' "1" — номер таблицы на странице, если нужно
    If Not rng Is Nothing Then
        ' Данные можно использовать здесь
        Range("A1").Resize(rng.Rows.Count, rng.Columns.Count).Value = rng.Value
    End If
End Sub
Public Function FileQueryRange(ByVal filename$, Optional ByVal Tables$) As Range
    ' функция загружает HTML файл filename$
    ' на скрытый лист tmpWQ (при его отсутствии - лист создаётся)
    ' возвращает диапазон ячеек, заполненный импортированными данными
    On Error Resume Next: Err.Clear
    Dim tmpSheet As Worksheet: Set tmpSheet = ThisWorkbook.Worksheets("tmpWQ")
    If tmpSheet Is Nothing Then
        Application.ScreenUpdating = False
        Set tmpSheet = ThisWorkbook.Worksheets.Add
        tmpSheet.Name = "tmpWQ"
        tmpSheet.Visible = xlSheetVeryHidden
    End If
    If tmpSheet Is Nothing Then
        msg$ = "Не удалось добавить скрытый лист «tmpWQ» в файл программы"
        MsgBox msg, vbCritical, "Невозможно выполнить запрос к файлу": End
    End If

    tmpSheet.Cells.Delete: DoEvents: Err.Clear
    With tmpSheet.QueryTables.Add("URL;file:///" & Replace(filename$, " ", "%20"), tmpSheet.Range("A1"))
        If Len(Tables$) Then
            .WebSelectionType = xlSpecifiedTables
            .WebTables = Tables$
        Else
            .WebSelectionType = xlEntirePage
        End If
        .FillAdjacentFormulas = False: .PreserveFormatting = True
        .RefreshOnFileOpen = False: DoEvents
        .WebFormatting = xlWebFormattingNone    ' или xlWebFormattingAll
        .Refresh BackgroundQuery:=False: DoEvents
        If Err = 0 Then Set FileQueryRange = tmpSheet.UsedRange
        .Delete: DoEvents
    End With
End Function
=============
Всем добрый день!Прошу вашей помощи.Нашла функцию по переносу html в эксель. С помощью него переношу данные из платежного поручения (html) в эксель.При переносе длинные значения чисел принимают экспоненциальный формат. Не помогает установка текстового формата, пробовала другие. Пробовала переносить данные с помощью PQ, не получается (много вложенных таблиц, выгружается криво).Подскажите, как прописать в самой функции, чтобы все значения вставлялись, как текст. Спасибо!
1.html.zip30.09.2026 09:35:21, marussia.

Основное содержимое страницы с новостью.

 

marussia

Пользователь

Сообщений: 81 Регистрация: 10.09.2015

#1

30.09.2026 09:35:21

Код
Sub Пример()
    Dim rng As Range
    Set rng = FileQueryRange("C:\Users\m.....\Desktop\1.html") ' "1" — номер таблицы на странице, если нужно
    If Not rng Is Nothing Then
        ' Данные можно использовать здесь
        Range("A1").Resize(rng.Rows.Count, rng.Columns.Count).Value = rng.Value
    End If
End Sub
Public Function FileQueryRange(ByVal filename$, Optional ByVal Tables$) As Range
    ' функция загружает HTML файл filename$
    ' на скрытый лист tmpWQ (при его отсутствии - лист создаётся)
    ' возвращает диапазон ячеек, заполненный импортированными данными
    On Error Resume Next: Err.Clear
    Dim tmpSheet As Worksheet: Set tmpSheet = ThisWorkbook.Worksheets("tmpWQ")
    If tmpSheet Is Nothing Then
        Application.ScreenUpdating = False
        Set tmpSheet = ThisWorkbook.Worksheets.Add
        tmpSheet.Name = "tmpWQ"
        tmpSheet.Visible = xlSheetVeryHidden
    End If
    If tmpSheet Is Nothing Then
        msg$ = "Не удалось добавить скрытый лист «tmpWQ» в файл программы"
        MsgBox msg, vbCritical, "Невозможно выполнить запрос к файлу": End
    End If
 
    tmpSheet.Cells.Delete: DoEvents: Err.Clear
    With tmpSheet.QueryTables.Add("URL;file:///" & Replace(filename$, " ", "%20"), tmpSheet.Range("A1"))
        If Len(Tables$) Then
            .WebSelectionType = xlSpecifiedTables
            .WebTables = Tables$
        Else
            .WebSelectionType = xlEntirePage
        End If
        .FillAdjacentFormulas = False: .PreserveFormatting = True
        .RefreshOnFileOpen = False: DoEvents
        .WebFormatting = xlWebFormattingNone    ' или xlWebFormattingAll
        .Refresh BackgroundQuery:=False: DoEvents
        If Err = 0 Then Set FileQueryRange = tmpSheet.UsedRange
        .Delete: DoEvents
    End With
End Function

Всем добрый день!
Прошу вашей помощи.
Нашла функцию по переносу html в эксель. С помощью него переношу данные из платежного поручения (html) в эксель.
При переносе длинные значения чисел принимают экспоненциальный формат.
Не помогает установка текстового формата, пробовала другие. Пробовала переносить данные с помощью PQ, не получается (много вложенных таблиц, выгружается криво).
Подскажите, как прописать в самой функции, чтобы все значения вставлялись, как текст. Спасибо!

Прикрепленные файлы

Изменено: marussia - 30.09.2026 10:59:43

 

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

 

marussia

Пользователь

Сообщений: 81 Регистрация: 10.09.2015

#3

30.09.2026 10:46:28

Цитата
написал:
Для начала

не могу вложить файл html.
ошибка "неверный формат"

 

nilske

Пользователь

Сообщений: 1810 Регистрация: 30.11.2018

зазипуйте или зазипьте

 

Sanja

Модератор

Сообщений: 21240 Регистрация: 10.01.2013

#5

30.09.2026 10:52:14

Цитата
marussia написал: ошибка "неверный формат"

вложите в архив и прикрепите его тут

Согласие есть продукт при полном непротивлении сторон

 

marussia

Пользователь

Сообщений: 81 Регистрация: 10.09.2015

ага. поняла. вложила архив

 

nilske

Пользователь

Сообщений: 1810 Регистрация: 30.11.2018

#7

30.09.2026 11:53:27

Код
Sub Пример()
    Dim rng As Range
    Set rng = FileQueryRange("C:\Users\Пользователь\Downloads\1.html.html") ' "1" — номер таблицы на странице, если нужно
    If Not rng Is Nothing Then
        With Range("A1").Resize(rng.Rows.Count, rng.Columns.Count)
            .Value = rng.Value
            .NumberFormat = "0"
        End With
    End If
End Sub
 

marussia

Пользователь

Сообщений: 81 Регистрация: 10.09.2015

спасибо, но это не совсем решает проблему.
вставляет числа с нулями на конце. все что после 15 знака становится нулями.
Пробовала менять формат, но ничего не выходит.
Апостроф подставляю, тоже нули.

Получатель
32110807020011000000
 

через регулярку добавила апсстроф после TD
ТОЛЬКО ПОТОМ ОТКРЫЛА  

Прикрепленные файлы

Изменено: galina mur - 30.09.2026 14:51:23

 

Найти (<td.*?>)
замена \1'

 

nilske

Пользователь

Сообщений: 1810 Регистрация: 30.11.2018

#11

30.09.2026 15:30:08

тогда можно и вставить в ячейки таблицы перед текстом неразрывный пробел, макрос в этом случае тоже не понадобится

Код
&nbsp;

Изменено: nilske - 30.09.2026 15:30:47

 

marussia

Пользователь

Сообщений: 81 Регистрация: 10.09.2015

спасибо! буду искать дальше решение.

 

nilske

Пользователь

Сообщений: 1810 Регистрация: 30.11.2018

marussia, Вы бы написали какие данные извлекаете из платёжки и как их используете, потому что "решение" вы ведь сейчас подразумеваете наверняка для промежуточного результата

 

marussia

Пользователь

Сообщений: 81 Регистрация: 10.09.2015

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

 

nilske

Пользователь

Сообщений: 1810 Регистрация: 30.11.2018

а исходный формат платёжек у вас именно в формате html, либо это тоже ваш промежуточный шаг?

 

marussia

Пользователь

Сообщений: 81 Регистрация: 10.09.2015

html приходит в приложение.  

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 15929 Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#17

30.09.2026 17:03:31

Цитата
marussia написал:
нужны наименования, числовые данные номера счетов, реквизиты

Power Query вроде нормально с этим справляется и можно даже на выходе получить вполне понятную структуру со всеми данными.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

 

nilske

Пользователь

Сообщений: 1810 Регистрация: 30.11.2018

попинал ии - результат в файле )
так как пример исходного файла только один, то и результат соответствует только этому одному примеру

Прикрепленные файлы

Изменено: nilske - 30.09.2026 17:27:14 (новые поля, остальные можно сделать по образцу)

 

galina mur

Пользователь

Сообщений: 258 Регистрация: 25.12.2012

#19

30.09.2026 17:19:35

как вариант

Цитата
Sub Макрос6a()
Dim zcell As Range, s1
   Workbooks.Open Filename:="C:\Users\UseR\Documents\w2.html"

   ActiveWorkbook.SaveAs Filename:="C:\Users\UseR\Documents\w2.xlsx", _
       FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
 For Each zcell In Excel.ActiveSheet.UsedRange
 s1 = zcell.Value
 If s1 = "'" Then s1 = ""
 If Len(s1) > 10 Then
 Debug.Print s1

   End If
 'Получатель
'40102810545370000015
'03100643000000014215
'Срок плат.
'Очер. плат.
'32167863675627811555
'32110807020011000110
 Next zcell
End Sub

 

marussia

Пользователь

Сообщений: 81 Регистрация: 10.09.2015

спасибо! буду разбираться

 

marussia

Пользователь

Сообщений: 81 Регистрация: 10.09.2015

#21

02.10.2026 11:02:33

Цитата
написал:
попинал ии

Добрый день!
Попробовала через ваш макрос. Но есть проблема. Когда доходит до функции ParseHTMLDOM, он спотыкается на строке
Set leftTableCells = htmlDoc.querySelectorAll(".mid-internal-table-second-left td")
и пишет, что Object doesn't support this property or method. Error #438
Меняла только путь к файлу.  :(

 

marussia

Пользователь

Сообщений: 81 Регистрация: 10.09.2015

#22

02.10.2026 11:06:57

Цитата
написал:
как вариант

спасибо. все отлично работает, но формат все равно не меняется. на печать выходит вот так:

4,01028E+19
3,10064E+18
1Срок   плат.
Очер.   плат.5
3,21679E+19Рез.   поле
00
 

nilske

Пользователь

Сообщений: 1810 Регистрация: 30.11.2018

marussia, marussia, попробуйте этот вариант

Прикрепленные файлы

 

sokol92

Пользователь

Сообщений: 4907 Регистрация: 10.09.2017

Трюк.
Excel умеет непосредственно открывать файлы с расширением .html  (проверьте на файле-примере из этой темы).

Для того, чтобы Excel при открытии воспринимал все числа в таблицах как текст, можно в исходном файле все фрагменты текста (в конце один пробел):
<td
заменить на (в конце один пробел):
<td style='mso-number-format:"\@";'

Можно всё сделать макросом VBA.

Владимир

 

marussia

Пользователь

Сообщений: 81 Регистрация: 10.09.2015

#25

06.10.2026 08:50:26

Цитата
написал:
Можно всё сделать макросом VBA.

добрый день!
здорово! а возможно ли добавить такую опцию в мой макрос, который в самом начале?

 

sokol92

Пользователь

Сообщений: 4907 Регистрация: 10.09.2017

#26

06.10.2026 15:12:15

Попробуйте сами это сделать (у меня пока нет Excel "под рукой"). Нужно (макросом) заменить указанные выше фрагменты текста в файле и вызвать Ваш макрос, который будет обрабатывать новый файл.
Замечания:
1.

Код
.WebFormatting = xlWebFormattingAll  

(иначе наши изменения в файле будут проигнорированы).

2.

Код
Range("A1").Resize(rng.Rows.Count, rng.Columns.Count).Value = rng.Value

Такая конструкция превратит строки, состоящие из цифр, в числа (с чем мы изначально воюем) (подробности

здесь

).
Копировать диапазоны ячеек нужно штатным образом:

Код
rng.Copy Range("A1")

Изменено: sokol92 - 06.10.2026 15:14:05

Владимир

 

marussia

Пользователь

Сообщений: 81 Регистрация: 10.09.2015

#27

08.10.2026 09:19:31

Добрый день!
Я порылась в интернете и скомпоновать попробовала, но знания мои более, чем скромны.

Код
   Sub OpenWebFile()
    Const URL As String = "C:\Users\юзер\Desktop\документ.html"
    Dim oWB As Workbook
' Создаём строку со стилем для текстовых ячеек
    Dim styleStr As String
    styleStr = "<style>" & ".textmode {" & "mso-number-format: \\@;" & "}</style>"
    ' Теперь вставляем эту строку в HTML-разметку таблицы
    Dim htmlContent As String
    htmlContent = "<html>" & "<head>" & styleStr & "</head>" & "<body>" & _
               "<table>" & "    <tr>" & " <td>123</td>" & " <td>000456</td>" & _
               "    </tr>" & "</table>" & "</body>" & "</html>"

' Далее используем htmlContent для вставки в ячейку
ActiveSheet.QueryTables.Add(Connection:= _
    "HTML;FILENAME=" & ThisWorkbook.path & "\\temp.html").QueryTables(1).Table.innerHTML = htmlContent

    
    On Error Resume Next
    Set oWB = Workbooks.Open(filename:=URL, ReadOnly:=True)
    If oWB Is Nothing Then
        MsgBox "Cannot open the url " & URL, vbExclamation + vbOKOnly, "ERR " & Err.Number & ":" & Err.Description
        Err.Clear
    Else
        ' Change to your desired path and filename
        oWB.SaveAs filename:="C:\Test\stuff.xlsx", FileFormat:=xlExcel8
        Set oWB = Nothing
    End If
End Sub

в итоге спотыкается на строке: ActiveSheet.QueryTables.Add(Connection:= _    "HTML;FILENAME=" & ThisWorkbook.path & "\\temp.html").QueryTables(1).Table.innerHTML = htmlContent
ошибка 450: wrong number of arguments or invalid property assignment

пока роюсь дальше :)

 

Alex

Пользователь

Сообщений: 1115 Регистрация: 13.04.2023

marussia, добрый день. Сделал по рекомендациям от sokol92, на основании макроса из 1 сообщения (путь замените на свой, а вообще лучше сделать выбор файла по кнопке, наверное).
Протестируйте.  

Прикрепленные файлы

 

nilske

Пользователь

Сообщений: 1810 Регистрация: 30.11.2018

marussia, marussia, было бы неплохо получить от вас рецензию или микро-отзыв на попытку помочь из сообщения #23
работает, но хотелось бы другой вариант / не работает со следующей ошибкой / не получилось применить / прочее )

 

marussia

Пользователь

Сообщений: 81 Регистрация: 10.09.2015

#30

08.10.2026 10:55:53

Цитата
написал:
от вас рецензию

Добрый день!
Да, простите, завал полный.
Я протестировала ваш вариант, он хорошо работает, но выдает не все данные или не совсем корректно.
Плательщик - пусто
Банк плательщика - пусто
Банк получателя: ИНН 1659097613 (подставил ИНН вместо банка)

=== ПОЛНЫЙ РЕЗУЛЬТАТ DOM-ПАРСИНГА ===
Сумма цифрами: 500-00
Сумма прописью: Пятьсот рублей 00 копеек
ИНН Получателя: 1659097613
КПП Получателя: 165901001
БИК Получателя: 019205400
Счет 1 (ЕКС): 40102810445370000079
Счет 2 (КС): 03100643000000011100
УИН (Код): 32167816398727817280
---------------------------------------
Плательщик: ???
Банк плательщика: ???
Банк получателя: ИНН 1659097613
Получатель: УФК по Республике Татарстан (Управление Федеральной службы государственной регистрации, кадастра и картографии по Республике Татарстан)

Читают тему

Схожие новости

#Наименование новостиТональностьИнформативностьДата публикации
1Удаление листов по кнопке010.3713-10-2026
2Power Query сравнение двух таблиц и обьединение04.8601-10-2026
3Подстановка данных после сравнения частей двух ячеек05.5908-10-2026
4Макрос для создания данных на нужном листе06.601-10-2026
5Скопировать определенное количество отфильтрованных ячеек011.4607-10-2026
6Сгруппировать таблицы одну под одной автоматечески из разных листов04.5802-10-2026
7Как НЕ суммировать цифры, написанные жирным шрифтом и курсивом04.6702-10-2026
8Заливка цветов с помощью макроса08.2912-10-2026
9Как вместо ошибки #Н/Д вывести пустую строку06.1809-10-2026
10Доработать таблицу013.6812-10-2026

Классификация: Мнения. Схожих патентов: 0. Схожих новостей: 10. Тональность: 0. Информативность: 8.17. Источник: www.planetaexcel.ru.