Страницы: 1 2 След.
RSS
как сделать чтобы из ячеек excel не копировался символ ¶ в конце (при вставке в 1с)?
 
если зайти внутрь ячейки и скопировать содержимое - копируется только значение, например "value"
если скопировать ячейку просто выделив её + ctrl-c = получится при вставке в 1С "value¶".


может как-то в глобальных настройках регионов и тп можно это победить?
 
Думаю в настройках 1С нужно скрыть непечатные символы?
Согласие есть продукт при полном непротивлении сторон
 
Sanja, я когда-то тоже сталкивался с этим, в настройках 1С не нашел.
 
Это не имеет отношения к 1С, это зависит от содержимого Clipboard.
Ровно так же ведет себя вставка 1 ячейки из Excel в Word: при копировании ячейки вставится ячейка с CR&LF (в том числе в середину строки), при копировании текста из ячейки вставится текст без перевода строки.
Т.е., если действительно есть супер-насущная необходимость убирать конец строки из буфера, можно написать маленький макрос и повесить его на сочетание клавиш, но мне кажется, что гораздо проще 1 раз нажать Backspace, чем париться с макросами
F1 творит чудеса
 
Максим Зеленский, backspace приходится нажимать по сто раз на дню, потому если не сложно - можно подробнее про макрос?
p.s. про загрузку номенклатуры обработками в 1с в курсе, но пока до этого не дошли
 
Ну вот такой макрос, например, помогает, назначьте его на какое-нибудь сочетание кнопок и пользуйте
Код
Sub clear_cr_lf()
Dim DtO As New MSForms.DataObject, S As String
If Application.CutCopyMode <> False Then Exit Sub
ActiveCell.Copy
DtO.GetFromClipboard
S = DtO.GetText
If InStr(S, Chr(13) & Chr(10)) > 0 Then S = Replace(DtO.GetText, Chr(13) & Chr(10), "")
DtO.SetText S
DtO.PutInClipboard
End Sub

Копирует содержимое ячейки, заменяет в буфере обмена строку, содержащую CR&LF в буфере обмена на строку, такую фигню не содержащую. По крайней мере, 1С больше не ругается и CR&LF не показывает. Единственное условие - подключить референс на MSForms в редакторе VBA
Наверное можно и более эффектно через API, но сейчас, честно говоря, некогда :)
F1 творит чудеса
 
Максим, как-то страшно все выглядит :-)
Может человеку проще будет применить функцию листа - ПЕЧСИМВ
Либо её же самую воткнуть в код:
Код
Sub CleanS()
    Selection = Application.Clean(Selection)
End Sub
удалить все непечатные символы из выделенного диапазона. Не факт, конечно, что поможет - файл с сим безобразием не приложен, потестить не получается.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
удалить все непечатные символы из выделенного диапазона
их там нет изначально, они появляются только при переносе через Clipboard в 1С.
Т.е. это обычное значение ячейки, в котором ничего непечатного нет. Но при копировании в конец строки подставляется CR&LF, который и видит 1C. Так что это не работает. Тут файл не нужен, тут 1С нужен  :)  для 1С мой код это отрабатывает, а для Word, кстати, нет  :)
Изменено: Максим Зеленский - 29.08.2014 16:53:15
F1 творит чудеса
 
Максим, я имел ввиду иное: перенесли в Excel как обычно копированием. А потом одним махом удалили.
Ваш же метод вроде как предполагает постоянно жать либо непривычное сочетание клавиш для вставки, либо кнопку.
Я не сказал, что метод плох - выбирать не мне. Я лишь предложил альтернативный вариант. А файл нужен был с уже вставленным текстом и символом переноса, чтобы достоверно понять код символа(т.к. это может быть не просто перенос, а некий иной символ - тот же 182). Кто его знает...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Файлов много однотипных, постоянно обновляются - с ними нежелательно операции проводить, вот макрос на все случаи жизни приделать - это вариант. Можно его приделать на все ctrlc в excel?
 
Так там же наоборот - не в Excel перенос, а из Excel в 1С. Я предварительно проверил 10 и 13 в буфере есть, их и удаляем...
F1 творит чудеса
 
ну вот такой файлик с таким макросом показывает, что я имел ввиду
Скрытый текст
F1 творит чудеса
 
Цитата
Максим Зеленский пишет:
Так там же наоборот - не в Excel перенос, а из Excel в 1С.
Так тем более - один раз для всех значений в таблице Excel применили мой код - и все, копируем себе спокойненько привычным методом уже без этих ненужных символов. Не понимаю, что мешает. Если данные нельзя портить - можно сделать копию листа или книги и в них поменять.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, Ваш код не работает для этой цели. )) Посмотрите в моем предыдущем сообщении, там код и файл. После Вашего кода в ячейке нет непечатных символов, но после команды .Copy (или Ctrl-C) в буфере обмена они оказываются, и это именно 13-10.
F1 творит чудеса
 
Максим, сократим строчек до 4?
Код
Sub the_priest_copy()
    Dim DtO As New MSForms.DataObject, S, outS(), i&, k&, outA$
    Range("A1").Value = Application.Clean(Range("A1").Value)    ' оставили только печатные символы
    DtO.SetText Range("A1").Value
    DtO.PutInClipboard 

    DtO.GetFromClipboard
    S = DtO.GetText
    k = 1
    ReDim outS(1 To LenB(S))
    For i = 1 To LenB(S)
        outS(i) = AscB(MidB(S, i, 1))
    Next
    outA = outA & vbCrLf & "Символы в буфере: " & vbCrLf & Join(outS, "-")
    ' чистим буфер
    If InStr(S, Chr(13) & Chr(10)) > 0 Then S = Replace(DtO.GetText, Chr(13) & Chr(10), "")
    k = 1
    ReDim outS(1 To LenB(S))
    For i = 1 To LenB(S)
        outS(i) = AscB(MidB(S, i, 1))
    Next
    outA = outA & vbCrLf & "Символы в буфере после очистки: " & vbCrLf & Join(outS, "-")
    MsgBox outA
End Sub
т.е. вообще по сути достаточно будет и такого кода:
Код
Sub the_priest_copy()
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    .SetText Range("A1").Value
    .PutInClipboard
End With
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist,  Вот это здорово!
о вот таком и не догадывался:
Код
GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
Это late binding того же DataObject, как я понимаю?
Завтра проверю в 1С :)
F1 творит чудеса
 
Последний код из 16-го сообщения прекрасно работает, в том числе в 1С. Рекомендую :)
F1 творит чудеса
 
The_Prist, Максим Зеленский, объясните, пожалуйста, куда этот код приделать?

Код
Sub the_priest_copy() 
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") 
    .SetText Range("A1").Value 
    .PutInClipboard 
End With 
End Sub 
Изменено: d0ppe1ganger - 01.09.2014 18:38:41
 
Макрос копирует в буфер обмена содержимое ячейки без этого символа конца строки. Вставляете в 1С и наслаждаетесь
В третьей строчке замените слова Range("A1") на ActiveCell, чтобы работал с любой выделенной ячейкой

Если копируете все время из разных файлов, то нужно сохранить макрос в личную книгу макросов. И назначить сочетание клавиш (например, Ctrl-m), чтобы быстро использовать при необходимости. Иначе в нем нет смысла  :)  проще нажимать Backspace
F1 творит чудеса
 
Вообще, я бы предложил его в событие SelectionChange листа. При каждом выделении ячейки с артикулом - занесение его в буфер.
Но тут надо доделывать - лучше надстройку, в которой предусмотреть флажок включения/отключения отслеживания выделения.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Что то у меня не срабатывает, вставляю в модули, не срабатывает.
Код
Sub the_priest_copy() 
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") 
.SetText ActiveCell.Value 
.PutInClipboard 
End With 
End Sub 
 
Цитата
Leon78 написал:
вставляю в модули, не срабатывает
в какие модули, как вызываете, чего ожидаете в результате...Слишком мало инф-ции, чтобы что-то вменяемое ответить. Опишите что хотите и куда что вставляете, как вызываете коды. Тогда можно вести разговор более предметно.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist

Открыл в excell нужный файл, нажал alt+f11, insert module, вставил код 6 строк, перешел обратно на открытый файл, запустил макрос the_priest_copy, скопировал текст ячейки excell, перешел в 1С, вставляю текст, выходит этот знак в конце текста ¶.
Вот и не пойму что я неправильно сделал?
Ожидания были что не нужно будет удалять каждый раз этот знак ¶.  
 
Доброе утро! Вопрос поднят нужный, хотелось бы иметь на него ответ.
 
Цитата
Leon78 написал:
запустил макрос the_priest_copy, скопировал текст ячейки excell
вообще-то порядок должен быть иной. Иначе зачем макрос?
Выделяете ячейку с лишними символами на конце и запускаете макрос. Текст ячейки будет помещен в буфер. Остается только вставить его куда надо.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Да, действительно код работает и вставляет без пиявки. Значит работали "очумелыми ручками".

Спасибо The_Prist!
 
Спасибо большое, сам ступил. Вопрос если повесить на сочетание клавиш на этот макрос ctrl + c, могут возникнуть какие то проблемы? (ведь по умолчанию просто скопировать)
 
Сочетания просто перестанут отвечать за то, за что отвечали ранее. Проблема это для Вас или нет - не знаю. Но я так обычно не делаю, т.к. клавиш на клавиатуре хватает других, менее используемых.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Скажите, а можно что-нибудь придумать, чтобы при вставке значения из Excel в Word, причем вставка со связью, убирались отступы вначале и вконце вставляемого значения? Из excel часто копирую значения со связью, которые в Worde автоматически обновляются. Если использовать макрос из сообщения #18, то вставка со связью становится недоступной.
 
Вопрос не по теме
Страницы: 1 2 След.
Наверх