Страницы: 1
RSS
Как скопировать в буфер обмена текст из ячейки с чисткой текста от лишних символов?
 
При сцепке текста  используется формула с использование "Alt + Enter":
Код
=D4&"
"&E4&"
"&F4

При копировании текста из вычисляемой ячейки и вставки в блокнот, текст копируется с лишними кавычками:
"строка 1
строка 2
""'строка 3'"""
красным цветом выделены лишние кавычки

А нужно чтобы он копировался в формате
строка 1
строка 2
"'строка 3'"

ГИФка ссылка

Вопрос
Как с помощью VBA скопировать в буфер обмена текст из ячейки с чисткой текста от лишних символов?
 
С помощью VBA так можно:
Код
Sub test()
  Dim s As String
  With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    s = Range("D4").Value & vbCrLf & Range("E4").Value & vbCrLf & Range("F4").Value
    .SetText s
    .PutInClipboard
  End With
End Sub

Но под блокнот подстраиваться вряд ли конечная задача ;)
 
по формуле - у вас все кавычки лишние ...
ЕСЛИ ВЫ КОПИРУЕТЕ РУКАМИ -
- пример был #6:
заменяет в буфере обмена строку, содержащую CR&LF
(насчёт кавычек - пробовать адаптировать)
Изменено: JeyCi - 14.08.2017 09:55:21
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
ZVI,
Хотелось чтобы сцепку делал Excel в формуле.
Немного подкорректировал ваш код
Код
Sub test_actv_cell()

  Dim s As String

  With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    s = ActiveCell.Value     
    .SetText s
    .PutInClipboard
  End With

End Sub

В принципе он выполняет, то, что требуется
В VBA не силён, поэтому сделал как понимаю..

JeyCi,
VBA не силён... поэтому для меня это как-то "наворочено"...
Буду признателен, если предложите свой вариант на ниже приведённые вопросы.


Вопросы
1. Если мой вариант кода составлен некорректно, буду признателен если посоветуете более правильную версию.
2. Как сделать чтобы в буфер обмена копировался диапазон "Таблица13[Столбец4]"?
Изменено: excel_pl - 14.08.2017 11:12:12
 
Цитата
excel_pl написал: В принципе он выполняет, то, что требуется
большего нам не требуется... остальное к вам придёт с опытом и практикой
ваш вопрос2 выходит за рамки заявленной темы
Изменено: JeyCi - 14.08.2017 11:15:39
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Вопрос закрыт.
 
На запрос по ЛС, я бы сделал так::
Код
Sub ToClipboatrd()
  
  Const RNG = "Таблица13[Столбец4]" ' <-- диапазон
  
  Dim s As String, a, b
  
  With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    a = Range(RNG).Value
    If IsArray(a) Then
      ReDim b(1 To UBound(a))
      For i = 1 To UBound(a)
        b(i) = a(i, 1)
      Next
      s = Join(b, vbLf)
    Else
      s = a
    End If
    .SetText s
    .PutInClipboard
  End With
  
End Sub
 
Дополню, что вместо Const RNG = "Таблица13[Столбец4]"
можно написать, например Const RNG = "G8:G9"
А если нужно значения ячеек, выделенных пользователем, то строка с Const RNG не нужна, а вместо a = Range(RNG).Value нужно записать a = Selection.Value
Непонятно только зачем вообще буфер обмена использовать, если это не конечная задача, напишите тогда поконкретнее.
Изменено: ZVI - 15.08.2017 22:40:30
Страницы: 1
Читают тему
Наверх