На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Организуем VBA-FAQ! Если у Вас есть предложения, выскажитесь здесь: Пишем FAQ, интересно Ваше мнение
Популярные разделы FAQ:    user posted image Общие вопросы    user posted image Особенности VBA-кода    user posted image Оптимизация VBA-кода    user posted image Полезные ссылки

1. Старайтесь при создании темы указывать в заголовке или теле сообщения название офисного приложения и (желательно при работе с Office 95/97/2000) его версию. Это значительно сократит количество промежуточных вопросов.
2. Формулируйте вопросы как можно конкретнее, вспоминая (хотя бы иногда) о правилах ВЕЛИКОГО И МОГУЧЕГО РУССКОГО ЯЗЫКА, и не забывая, что краткость - сестра таланта.
3. Не забывайте использовать теги [сode=vba] ...текст программы... [/code] для выделения текста программы подсветкой!
4. Темы с просьбой выполнить какую-либо работу полностью за автора здесь не обсуждаются и переносятся в раздел ПОМОЩЬ СТУДЕНТАМ.
Модераторы: Old Bat, MIF
  
> Excel, получить не форматированные данные.
    Коллеги, через какое свойство можно вынуть неформатированные данные.
    Например ячейка имеет тип "денежный" и имеет значение 10 000,00 р , при щелчке на нее эксель показывает только 10000.

    Так вот, как мне получить только 10000?
    По Excel.Cells(сч, 10).Text получаю 10 000,00 р
      Range.Value
        Цитата ^D^ima @
        По Excel.Cells(сч, 10).Text получаю 10 000,00 р

        Представление или значение?
          Цитата leo @
          Range.Value

          да, вернулось число такого вида:
          Цитата
          3 470

          Только что за символ после цифры 3? Он имеет код 160...

          Когда я в экселе щелкаю на ячейку, в строке формул 3470 без всяких спецсимволов.

          Как-бы программно без этого символа вернуть?


          Цитата Bas @
          Представление или значение?

          Я не понимаю :)

          Сам код такой:
          ExpandedWrap disabled
            Excel = Новый COMОбъект("Excel.Application");
            Excel.WorkBooks.Open(ИмяФайла);
            Excel.Sheets(1).Select();
            ЭксельСуммаНал = Excel.Cells(сч, 9).Value;

          Это 1С, но разницы для работы с COM нет.

          Добавлено
          Решение в лоб - удалять эти символы в строке после получения данных, но возможно есть и другое решение
            Цитата ^D^ima @
            Только что за символ после цифры 3? Он имеет код 160...

            Какой еще символ? У тебя ЭксельСуммаНал какой тип имеет?
            Попробуй использовать числовой тип (вещественный или целый), а затем уже сам преобразуешь его в строку, как нужно

            Добавлено
            Еще можно попробовать с Range.Value2, которое (судя по описанию) преобразует денежный формат и время к типу double.
              Цитата leo @
              Какой еще символ?

              Это символ неразрывного пробела оказывается

              http://excel2.ru/articles/preobrazovanie-t...obel-v-ms-excel

              https://www.google.ru/search?ei=fQdXWs71Ns-.....0.bD4YWXq_jPo

              Добавлено
              Цитата leo @
              Range.Value2

              то-же самое


              Цитата leo @
              У тебя ЭксельСуммаНал какой тип имеет?

              в 1С не задается, подставляется сам
                Поясни, что тебе нужно - просто получить строку в нужном тебе формате, или же как-то дальше использовать полученные значения для вычислений?
                Дело в том, что Value возвращает Variant с типом данных Currency. Если ты используешь преобразование в строку по умолчанию, то 1C вставляет свой разделитель тысяч (символ 160). Поэтому для преобразования в строку без разделителя нужно либо использовать какое-то специальное форматирование, либо присвоить значение Variant переменной числового типа (double) и уже ее преобразовать в строку (если 1С и тут не влепит разделитель).
                Для вычислений же можно использовать непосредственно тип Variant или Currency, т.к. 1С наверняка должна поддерживать эти операции.

                Добавлено
                Цитата ^D^ima @
                в 1С не задается, подставляется сам

                Вон оно что... В таком случае должен подставляться числовой тип. И соотв-но, проблема тут ни в экселе, а в преобразовании числа в строку в 1С. Если в ней нет функций задания формата преобразования, то остается только анализировать строку и удалять пробелы ручками (или забить на это дело)
                Сообщение отредактировано: leo -
                  leo
                  Спасибо за развернутый ответ.
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0295 ]   [ 17 queries used ]   [ Generated: 28.03.24, 14:51 GMT ]