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

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

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

Восстановить пароль

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 15.07.2008, 11:55   #1
urri_k
 
Регистрация: 15.07.2008
Сообщений: 5
По умолчанию При вставке 20-значного числа в ячейку происходит округление. Как избавиться?

Открываем таблицу в новой книге. В столбце, где проставляются длинные числа типа 18810807140011000110, происходит округление до 18810807140011000000. Подскажите, пожалуйста, как от этого избавиться.
urri_k вне форума
Старый 15.07.2008, 12:05   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Использовать текстовый формат. Другого выхода нет!
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 15.07.2008, 12:08   #3
urri_k
 
Регистрация: 15.07.2008
Сообщений: 5
По умолчанию

При чем здесь текстовый формат? При открытии новой книги, ячейки сразу форматируются.
urri_k вне форума
Старый 15.07.2008, 12:13   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Что значит
Цитата:
проставляются длинные числа
Откуда они берутся? Откройте новую книгу и исходно отформатируйте требуемые ячейки в требуемый формат. Также, это можно сделать макросом по событию открытия книги. Еще раз повторяю: Другого выхода нет!
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 15.07.2008, 12:26   #5
urri_k
 
Регистрация: 15.07.2008
Сообщений: 5
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Что значит Откуда они берутся? Откройте новую книгу и исходно отформатируйте требуемые ячейки в требуемый формат. Также, это можно сделать макросом по событию открытия книги. Еще раз повторяю: Другого выхода нет!
Есть файл *.csv, который генерится на стороне сервера. При открытии этого файла, длинные числа округляются.
Не понял про новую книгу. Создать пустую книгу и в ней все столбцы отформатировать в текст? А как это поможет? Или я не правильно понял. По поводу макроса согласен, самый простой вариант. Просто думал может какие-то настройки есть в Экселе, которых я не замечал.
urri_k вне форума
Старый 15.07.2008, 12:42   #6
urri_k
 
Регистрация: 15.07.2008
Сообщений: 5
По умолчанию

Кажется понял о чём речь. Если формат файла .xls, .txt, ... (с .csv у меня не получилось), то при его открытии выбираем "Открыть для чтения", и там в настройках открываемого файла задаем параметр каждого конкретного столбца. Соотвественно, выбираем столбец с 20-зн. числами, и отмечаем как текст. Спасибо за помощь!
urri_k вне форума
Старый 15.07.2008, 12:49   #7
slan
Форумчанин
 
Аватар для slan
 
Регистрация: 30.01.2008
Сообщений: 314
По умолчанию указать текстовый формат при открытии

Цитата:
Сообщение от urri_k Посмотреть сообщение
Есть файл *.csv, который генерится на стороне сервера. При открытии этого файла, длинные числа округляются.
Не понял про новую книгу. Создать пустую книгу и в ней все столбцы отформатировать в текст? А как это поможет? Или я не правильно понял. По поводу макроса согласен, самый простой вариант. Просто думал может какие-то настройки есть в Экселе, которых я не замечал.
открыть импортом данных - там указать как интерпретировать столбцы
slan вне форума
Старый 15.07.2008, 13:07   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Нужно было сразу сказать, что у Вас "*.csv".
Такие файлы можно открыть, например, так:
Код:
Sub OpenCSV()

    Dim buf(1 To 256) As Variant, i As Long, RenPath As String
    Const FilePath As String = "C:\temp\Test.CSV" 'Подставьте сюда путь к нужному файлу.

    RenPath = Split(FilePath, ".")(0) & "txt"

    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
    End With

'Создание массива для параметра FieldInfo метода OpenText.

    For i = 1 To 256
        buf(i) = Array(i, 2)
    Next

    Name FilePath As RenPath
    Workbooks.OpenText Filename:=RenPath, DataType:=xlDelimited, Comma:=True, FieldInfo:=buf
    Erase buf

End Sub
Обратите внимание, что файл переименовывается. Если такой возможности нет (работа с сервера), Скопируйте его к себе, затем выполняйте подобное открытие. Примененный метод не имеет тех недостатков, о которых Вы говорили в самом начале.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 15.07.2008, 13:38   #9
urri_k
 
Регистрация: 15.07.2008
Сообщений: 5
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Нужно было сразу сказать, что у Вас "*.csv".
Такие файлы можно открыть, например, так:
Код:
Sub OpenCSV()

    Dim buf(1 To 256) As Variant, i As Long, RenPath As String
    Const FilePath As String = "C:\temp\Test.CSV" 'Подставьте сюда путь к нужному файлу.

    RenPath = Split(FilePath, ".")(0) & "txt"

    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
    End With

'Создание массива для параметра FieldInfo метода OpenText.

    For i = 1 To 256
        buf(i) = Array(i, 2)
    Next

    Name FilePath As RenPath
    Workbooks.OpenText Filename:=RenPath, DataType:=xlDelimited, Comma:=True, FieldInfo:=buf
    Erase buf

End Sub
Обратите внимание, что файл переименовывается. Если такой возможности нет (работа с сервера), Скопируйте его к себе, затем выполняйте подобное открытие. Примененный метод не имеет тех недостатков, о которых Вы говорили в самом начале.
Спасибо. На самом деле я его ручками переименовал в .txt и при открытии все столбцы отформатировал. За код спасибо. Если будут промышленные масштабы обязательно воспользуюсь.

PS slan. А разве есть в экселе импорт? У меня 2003 SP2.
urri_k вне форума
Старый 25.07.2008, 23:10   #10
дмидми
Форумчанин
 
Аватар для дмидми
 
Регистрация: 06.03.2008
Сообщений: 352
Восклицание Возможны неприятности

Цитата:
Сообщение от SAS888 Посмотреть сообщение
RenPath = Split(FilePath, ".")(0) & "txt"
FilePath может содержать несколько точек!
Я бы рекомендовал (поскольку наличие окончания .csv уже установлено)

RenPath =Left(FilePath, Len(FilePath) - 3) & "txt"
дмидми вне форума
Закрытая тема


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пропала менюшка при вставке... (( Bu$ter Microsoft Office Excel 7 23.05.2008 14:39
Изменение ссылок при вставке Strannik79 Microsoft Office Excel 4 10.09.2007 14:31
округление в Firebird shurik_7866 БД в Delphi 0 05.07.2007 11:10
округление Toxa Общие вопросы Delphi 4 15.01.2007 19:15