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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2013, 19:48   #1
xamillion
Форумчанин
 
Аватар для xamillion
 
Регистрация: 30.09.2008
Сообщений: 138
Восклицание Разряд чисел (15 симв.) при открытии excel

Сломал уже мозг.
Имеем:
Microsoft Office 2003, файлик html.
При открытии html число 23820000000026203 преобразуется в 23820000000026200 (2,382E+16).
Перепробовал все что только в голову пришло... Может как-то можно при открытии ему текстовый формат присвоить, или макросом перенести, или еще чего незаурядного есть из вариантов?
Вложения
Тип файла: rar test.rar (453 байт, 17 просмотров)
xamillion вне форума Ответить с цитированием
Старый 21.03.2013, 19:53   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
есть из вариантов?
Есть.
Открываете его как текстовый файл и Regexом по тексту.
Код:
Function За_Номером_Иду(s) As String
    Dim RegEx As Object
    За_Номером_Иду = "Не найден"
    Set RegEx = CreateObject("vbscript.regexp")
    With RegEx
        .Global = True
        .IgnoreCase = True
        .Pattern = "(<p class=MsoNormal>(.+?)</p>)"
        .MultiLine = True
    End With

    If RegEx.Test(s) Then
        Set oMatches = RegEx.Execute(s)
        ''Текст = oMatches(0).SubMatches(1)
        За_Номером_Иду = oMatches(1).SubMatches(1)
    End If

End Function
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 21.03.2013 в 20:09.
doober вне форума Ответить с цитированием
Старый 21.03.2013, 23:19   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Или открыть в браузере, скопировать. В Excel установить текстовый формат всего листа, Правка - спец. вставка - текст.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 22.03.2013, 12:11   #4
xamillion
Форумчанин
 
Аватар для xamillion
 
Регистрация: 30.09.2008
Сообщений: 138
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
Или открыть в браузере, скопировать. В Excel установить текстовый формат всего листа, Правка - спец. вставка - текст.
Этот вариант пробовал, работает, но не годится. Вот если бы Excel по-умолчанию заставить открывать документы с присвоенным текстовым форматом до открытия.

Цитата:
Сообщение от doober Посмотреть сообщение
Есть.
Открываете его как текстовый файл и Regexом по тексту.
Код:
Function За_Номером_Иду(s) As String
    Dim RegEx As Object
    За_Номером_Иду = "Не найден"
    Set RegEx = CreateObject("vbscript.regexp")
    With RegEx
        .Global = True
        .IgnoreCase = True
        .Pattern = "(<p class=MsoNormal>(.+?)</p>)"
        .MultiLine = True
    End With

    If RegEx.Test(s) Then
        Set oMatches = RegEx.Execute(s)
        ''Текст = oMatches(0).SubMatches(1)
        За_Номером_Иду = oMatches(1).SubMatches(1)
    End If

End Function
Приступил к освоению регулярных выражений. На всякий случай подключил к проекту библиотеку Microsoft VBScript Regular Expression 5.5.
Немного не совсем ясно как открыть как текстовый файл...
xamillion вне форума Ответить с цитированием
Старый 22.03.2013, 12:40   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от xamillion Посмотреть сообщение
Немного не совсем ясно как открыть как текстовый файл...
Код:
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objfile = objFSO.OpenTextFile(Путь к файлу, 1)
      S = objfile.Readall
              objfile.Close
    Set objfile = Nothing

    Set objFSO = Nothing
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 22.03.2013, 13:06   #6
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Можно отдельным скриптом заменить <p class=MsoNormal> на <p class=MsoNormal>' (добавить апостроф) в одном файле или во всех html файлах папки. Потом открывать в Excel как обычно. Правда, потребуется еще перевести значение в формулу, чтобы апострофы не маячили, т.е. имитировать команду F2, Enter для каждой ячейки. Это можно сделать макросом из одной строки, хоть в окне Immediate:
Код:
for each a in cells.SpecialCells(xlCellTypeConstants,xltextvalues).Areas:a.formula=a.formula:next
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 22.03.2013 в 13:13.
Казанский вне форума Ответить с цитированием
Старый 22.03.2013, 14:04   #7
xamillion
Форумчанин
 
Аватар для xamillion
 
Регистрация: 30.09.2008
Сообщений: 138
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Код:
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objfile = objFSO.OpenTextFile(Путь к файлу, 1)
      S = objfile.Readall
              objfile.Close
    Set objfile = Nothing

    Set objFSO = Nothing
схавал... но нарисовалась еще проблема с кодировкой символов UTF8... тупик?

Цитата:
Сообщение от Казанский Посмотреть сообщение
Можно отдельным скриптом заменить <p class=MsoNormal> на <p class=MsoNormal>' (добавить апостроф) в одном файле или во всех html файлах папки. Потом открывать в Excel как обычно. Правда, потребуется еще перевести значение в формулу, чтобы апострофы не маячили, т.е. имитировать команду F2, Enter для каждой ячейки. Это можно сделать макросом из одной строки, хоть в окне Immediate:
Код:
for each a in cells.SpecialCells(xlCellTypeConstants,xltextvalues).Areas:a.formula=a.formula:next
Ох ничего себе маневр... пробую...

Последний раз редактировалось xamillion; 22.03.2013 в 14:09.
xamillion вне форума Ответить с цитированием
Старый 22.03.2013, 14:30   #8
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Или так, проще
Код:
activesheet.usedrange.formula=activesheet.usedrange.formula
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 22.03.2013, 14:44   #9
xamillion
Форумчанин
 
Аватар для xamillion
 
Регистрация: 30.09.2008
Сообщений: 138
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
Или так, проще
Код:
activesheet.usedrange.formula=activesheet.usedrange.formula
ну до этого еще не дошел... застрял на первом этапе...

пробую так, но что-то пока не выходит...
Код:
Sub zamena_simvolov()
    Dim s As String, v As Variant, i As Long, l As Long
    ' Откроем файл и поместим все его содержимое в переменную "s"
    Open "d:\test(5).html" For Input As #1: s = Input(LOF(1), 1): Close #1
    v = Split(s, vbCrLf)
    ' Открываем файл для записи
    Open "d:\test(5).html" For Output As #1
    ' Перебираем все строки считанного ранее файла в переменной "s" и заменяем нужные символы
    For i = 0 To UBound(v) - 1
        s = v(i)
        s = Replace(s, "<p class=MsoNormal>", "<p class=MsoNormal>'")
        Print #1, s
    Next
    Close #1
End Sub
В результате получаем пустой файл.

Последний раз редактировалось xamillion; 22.03.2013 в 14:47.
xamillion вне форума Ответить с цитированием
Старый 22.03.2013, 14:48   #10
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Код:
Function За_Номером_Иду(Путь_К_Файлу) As String
    Dim oStream
    Dim S As String
    Set oStream = CreateObject("ADODB.Stream")
    oStream.Type = 2
    oStream.Charset = "Utf-8"
    oStream.Open
    oStream.LoadFromFile Путь_К_Файлу
    S = oStream.ReadText
    oStream.Close
    Dim RegEx As Object
    За_Номером_Иду = "Не найден"
    Set RegEx = CreateObject("vbscript.regexp")
    With RegEx
        .Global = True
        .IgnoreCase = True
        .Pattern = "(<p class=MsoNormal>(.+?)</p>)"
        .MultiLine = True
    End With

    If RegEx.Test(S) Then
        Set oMatches = RegEx.Execute(S)
        За_Номером_Иду = oMatches(1).SubMatches(1)
    End If
End Function
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конфликт при открытии файла версий 2003 в 2007-2010 Excel Blame Microsoft Office Excel 5 28.03.2012 14:15
при открытии excel файла запрашивает пароль SolidSnake Microsoft Office Excel 9 08.06.2011 19:25
Счетчик при каждом открытии Excel в ячейке Йогурт Microsoft Office Excel 9 11.05.2010 06:48
неверное преобразование даты при открытии DBF файла в MS Excel 2007 Serge_Bliznykov Microsoft Office Excel 13 26.11.2009 09:37