Страницы: 1
RSS
Копирование+обьединение в буфер обмена, через необходимый разделитель, Значения выделеных ячеек скопировать и поместить в буфер обмена, для вставки в другие программы.
 
Добрый день!

Помогите пожалуйста реализовать следующую задачу.
Как я ее вижу:
1. Выделяю нужный диапазон ячеек
2. Жму на горячую клавишу, допустим Ctr+Alt+C.
3. После чего должно появиться окно, которое предлагает выбрать/ввести необходимый разделитель. (это может быть текст, пробел, цифры и тд и их сочетания)
4. После выбора/ввода необходимого разделителя, нужно чтобы значения ячеек , выделенные в пункте 1, сцепились все с этим самым разделителем и записались только в буфер обмена, для возможности последующей вставки в другие программы/документы.

Прилагаю файл с примерами

Может кто посоветует еще  более удобный способ.

Спасибо!
Изменено: WS27 - 23.04.2019 05:16:54
 
На вскидку код
Код
Sub ttt()
Dim res As String, Sep As String
Sep = InputBox("Separator")
Sep = " " & Sep & " "
For Each Mycell In Selection
    Rez = Rez & Sep & Mycell
Next
CopyText (Mid(Rez, Len(Sep) + 1))
End Sub

Sub CopyText(Text As String)
    'VBA Macro using late binding to copy text to clipboard.
    'By Justin Kay, 8/15/2014
    Dim MSForms_DataObject As Object
    Set MSForms_DataObject = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    MSForms_DataObject.SetText Text
    MSForms_DataObject.PutInClipboard
    Set MSForms_DataObject = Nothing
End Sub


Но надо как то понимать кода давлять пробелы к разделителю , а когда нет.
Пример сделан с учетом того что можно выделить двумерный диапазон, если одномерный то конечно join Можно
Как на Ctr+Alt+C  повесить - не знаю
По вопросам из тем форума, личку не читаю.
 
Скрытый текст

Функции работы с буфером подсмотрены ЗДЕСЬ
Макрос запускается по Ctrl+Shift+Q
Изменено: Sanja - 23.04.2019 08:03:39
Согласие есть продукт при полном непротивлении сторон
 
Sanja, БМВ,     работает  прям как нужно, спасибо большое! А привязка горячих клавиш только  по Ctrl+Shift+Q? можно ли как поменять? Если да то где?
 
Разработчик - Макросы - Выбрать нужный - Параметры - Сочетание клавиш
Согласие есть продукт при полном непротивлении сторон
 
Sanja, спасибо, разобрался
Изменено: WS27 - 23.04.2019 08:24:30
 
Sanja, собрал для себя то что больше подходит
Скрытый текст

Еще один вопрос, можно ли при закрытии первого диалогового окна (нажатие на крестик или отмену), чтобы просто выходил из макроса, без сцепления всех выделенных ячеек через "False", без записи этих параметров в буфер обмена и без показа итогового диалогового окна?

Пример прилагаю
Изменено: WS27 - 24.04.2019 04:19:02
 
Так?
Код
'-------------------
sDlm = Application.InputBox("Введите/выберите разделитель...", , , , , , , 2)
If sDlm = "False" Then Exit Sub
'-------------------
П.С. Можете сказать, в чем сакральный смысл вот этой строки?
Код
Sep = "" & sDlm & ""
Изменено: Sanja - 24.04.2019 07:00:08
Согласие есть продукт при полном непротивлении сторон
 
Sanja, я попытался собрать лучшее из того что предложил БМВ из Вашего кода, поэтому получил такой результат.
А при использовании
Код
Sep = " " & Sep & " "
независимо от того хотел я пробелы перед и после разделителя или нет, результат всегда был с ними.


PS
Код
If sDlm = "False" Then Exit Sub
 работает, спасибо))
 
Пробел может задвоиться
Согласие есть продукт при полном непротивлении сторон
 
Цитата
БМВ написал:
Но надо как то понимать кода давлять пробелы к разделителю , а когда нет.
По вопросам из тем форума, личку не читаю.
 
БМВ, поэтому я и оставил так
Код
Sep = "" & sDlm & ""
, и при необходимости мне пробела,  я просто ставлю его в первом всплывающем окне, а если нужно пробел+разделитель+пробел, то точно также ставлю нужный мне порядок....
 
Зачем вообще эта доп.переменная Sep, которая фактически равна sDlm?
Согласие есть продукт при полном непротивлении сторон
Страницы: 1
Наверх