0. itriot11 67 15.01.19 22:12 Сейчас в теме

Копирование числовых ячеек из 1С в Excel

Решение проблемы, когда значения скопированных ячеек из табличных документов 1С в Excel воспринимаются последним как текст, т.е. без дополнительного форматирования значений невозможно применить арифметические операции. Поводом для публикации послужило понимание того, что целое предприятие с более сотней активных пользователей уже на протяжении года мучилось с такой, казалось бы на первый взгляд, тривиальной проблемой. Варианты решения, предложенные специалистами helpdesk, обслуживающими данное предприятие, а так же многочисленные обсуждения на форумах, только подтвердили убеждение в необходимости описания способа, который позволил мне качественно и быстро справиться с ситуацией.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. kauksi 205 21.01.19 21:18 Сейчас в теме
Sub ПреобразоватьВТекст()
Dim sTempValue As String
Dim c As Range

On Error Resume Next

For Each c In ActiveWindow.Selection

sTempValue = Str(c.Value)
c.NumberFormat = "@"
c = Trim(sTempValue)
Next

On Error GoTo 0


End Sub


1) открыть Ексель
2) открыть меню Вид, справа видим подменю "Макросы"
3) для того чтобы наш макрос был доступен всегда (при любой открытой книге), необходимо вставить его в Личную книгу макросов.
по умолчанию ее нет, надо создать. Как это делается?
в подменю "Макросы" нажимаем "запись макроса", в появившейся форме выбираем "сохранить в" = "личная книга макросов".
нажимаем ОК. началась запись, щелкни пару раз где-нибудь на листе открытой в данной момент книги.
Для того чтобы остановить запись в левом нижнем углу интерфейса Екселя нажми на белый квадратик (справа от слова "Готово"). Запись прекратилась и у нас в Личной книге макросов записался макрос-пустышка скорее всего с названием "Макрос1".
4) Теперь нажимаем ALT+F11 и попадаем в среду разработки. Находим нашу Личную книгу макросов (VBAProject (PERSONAL.XLSB)), в дереве элементов в папке Modules находим Module1, дважды по нему щелкаем, удаляем наш макрос-пустышку и вместо него вставляем следующее


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

Чтобы его вызвать предварительно выделяем в любой открытой книге диапазон ячеек, который нужно преобразовать в текст, нажимаем ALT+F8, выбираем наш макрос и жмем ОК.
2. itriot11 67 21.01.19 21:39 Сейчас в теме
(1) это должен будет сделать каждый юзер для всех своих файлов?
3. Bеgemoth 06.02.19 15:31 Сейчас в теме
(0) А если, кроме указания пробела в качестве разделителя групп, ещё и установить там же количество разрядов в группировке равным 0, то это не решит проблему лишних пробелов при выгрузке в txt файл?
4. itriot11 67 06.02.19 15:56 Сейчас в теме
(3) Очень может быть и так! Нужно попробовать)
5. itriot11 67 08.02.19 13:52 Сейчас в теме
(3) Попробовал. Да, решает эту проблему. А так же, поскольку, данная настройка регулирует наличие символа разделения групп чисел, то и заявленную в публикации проблему поможет решить без указания символа "Пробел" в поле "Разделитель групп". Однако, помимо этого, получим так же очевидный результат в том, что числовые значения во всей информационной базе будут представлены без разделителя, те было 123 456 678, 90, а станет 12345678,90. В качестве варианта - вполне можно использовать, если пользователи будут не шибко против. Ну а я пока остановился на решении описанном в публикации.
user717534; +1 Ответить
6. Ashandy 15.02.19 21:17 Сейчас в теме
А подскажите, пожалуйста, где почитать об обратной ситуации.
При использовании
ТабличныйДокумент.Прочитать(ФайлEXCEL, СпособЧтенияЗначенийТабличногоДокумента.Значение); 
если в екселе был формат ячейки число то оно переносится с разделителем в виде пробела, хотя в екселе без пробела.
причем на Windows server было так
а на локальной машине с 2010м офисом переносило значение без пробела.

Правильно ли в таком случае использовать
ТабличныйДокумент.Прочитать(ФайлEXCEL, СпособЧтенияЗначенийТабличногоДокумента.Текст);

?
7. itriot11 67 16.02.19 02:19 Сейчас в теме
(6)
Правильно ли в таком случае использовать
ТабличныйДокумент.Прочитать(ФайлEXCEL, СпособЧтенияЗначенийТаб

Не готов ответить - правильно или нет. Для этого сперва бы стоило дать определение слову "правильно") На вашем месте, попробовал бы оба варианта и выбрал наиболее приемлемый в контексте задачи.
10. romankoav 19.03.19 12:48 Сейчас в теме
(6) и так и так делал - никакой разницы не было
8. lazovit 18.02.19 21:26 Сейчас в теме
А правой кнопкой в Excel и специальная вставка, вставить как текст никто не пробовал?
9. itriot11 67 18.02.19 23:46 Сейчас в теме
(8) Пробовал - не взлетело.
11. mikl79 107 22.04.19 15:03 Сейчас в теме
Спасибо, помогло
уточню, например, при выгрузке в txt для того, чтобы убрать пробел можно использовать:
1) Формат(ПеременнаяЧисло,"ЧГ=");
2) СтрЗаменить(ПеременнаяЧисло,Символы.НПП,"");
12. user819002 07.05.19 10:15 Сейчас в теме
Попробовали всё слово в слово по инструкции, всё равно копируется как текст.

Проблему решаем даунгрейдом файлов на серверах и на клиентах, системы windows server 2016/ widows 10
Пользователей очень много, мучений доставляет кучу)

Подскажите пожалуйста, что ещё может быть не так?
13. ytrewqwerty 01.08.19 04:16 Сейчас в теме
(12) Вот еще версия для размышлений. Помнится еще в 7.7 было так, что если число в 1С таблице в ячейке было выравнено 'по центру' или 'влево', то Эксель воспринимал его как текст, но если выравнивание было 'вправо', то - как число.
14. VAAngelov 7 07.08.19 11:30 Сейчас в теме
Спасибо большое. Полезно и даже очень.
itriot11; +1 Ответить
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Бизнес-аналитик 1С
Москва
зарплата от 140 000 руб. до 200 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 120 000 руб.
Полный день

Консультант 1С (Бухгалтерия)
Санкт-Петербург
зарплата от 100 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 150 000 руб.
Полный день

Программист 1С
Тюмень
зарплата от 70 000 руб.
Полный день