Страницы: 1
RSS
Как скопировать выделенный текст, чтобы через ctrl+V вставить в другую программу.
 
код макроса выглядит в таком виде:
Код
Sub CaSendKeys()
        Range("B10").Select
        Application.SendKeys "{F2}", True ' входим в ячейку
        Application.SendKeys "+{Home}", True   ' выделяем текст в ячейке
        'Application.SendKeys "^(C)", True - пробуем скопировать- не пашет ниразу(((((
      'как теперь скопировать-послать на клавиатуру  выделенныё текст?
        End Sub

Скрытый текст
Изменено: Домкрат - 25.04.2020 23:06:07
 
Файл приложите и опишите откуда что скопировать и куда вставить.
 
Цитата
Андрей_26 написал:
куда вставить.
вставлять не нужно: нужно чтобы было в буфере обмена, при нажатии на ctrl+V  вставляло в ручном режиме содержимое ячейки B10
Мне не нужно копировать САМУ ячейку, мне нужно её СОДЕРЖИМОЕ.
Либо как вариант, как скопировать в буфер обмена данные переменной:
Код
a = Range("L23") - как скопировать данные в буфер обмена из перемнной а?
Изменено: Домкрат - 25.04.2020 19:12:10
 
Домкрат,
Код
Application.SendKeys "^c", True 

только игры с SendKeys могут злую шутку сыграть. Вы ведь копируете для чего то  а не просто так. Может надо от этого плясать.
ссылка
Изменено: БМВ - 25.04.2020 23:03:46
По вопросам из тем форума, личку не читаю.
 
 
Цитата
БМВ написал: Application.SendKeys "^c", True
Ваша строка работает, спасибо.
Просто где-то вот так я нашел: Application.SendKeys "^©" - поэтому не работало у меня.

Цитата
Вы ведь копируете для чего то  а не просто так
нужны данные из ячейки, для переноса в другую программу: полностью её не получается копировать, потому-тов этом случае выскакивает меню непонятное в той программе.а так будет нормально, = я сделаю макрос, он циклом по файлам пройдется и мне останется только подставлять данные.
Изменено: Домкрат - 25.04.2020 23:04:41
 
Домкрат, ну тогда лучше как по ссылке.
а то ведь связка
Код
Application.SendKeys "{F2}", True ' входим в ячейку
Application.SendKeys "+{Home}", True   ' выделяем текст в ячейке

помнится еще и NumLock балуется.
По вопросам из тем форума, личку не читаю.
 
БМВ, я по ссылке смотрел,- не осилил! 8) ))
Изменено: Домкрат - 25.04.2020 22:05:37
 
чего там осиливать
Код
 Call CopyText(Range("L23").value)

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

Значение из L23 в буфере.

Однако я не проверил и сейчас у меня это не так.  Наблюдается проблема на Win8/10.

WinApi в помощь
https://chandoo.org/forum/threads/clipboard-copy-vba-code-not-working-in-windows-10.37126/#post-223256
https://www.cyberforum.ru/post12908681.html
Изменено: БМВ - 25.04.2020 23:06:42
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
а то ведь связка
Цитата
БМВ написал:
помнится еще и NumLock балуется.
а по-конкретнее можно? в чём там подвох?? я сколько тыцкал,- без проблем было, просто дальше уж совсем конструкция разрастается и усложняется:
Цитата
БМВ написал:
Call CopyText(Range("L23").value)
1)да вроде нормально всё возвращает!
2)вместо (Range("L23").value) будет переменная: потому-что может смещаться на M23 или дальше или ближе или ниже....(
можете через переменную помочь?
не думал, готовя пример, что так все запущенно....

Код
 'вот так я планирую через переменную Nomer выходить на (Range("L23") или другие адреса:
Nomer= Cells.Find("*Инвойса*").Offset(0, 1).Address

'p.s. хотя, в принципе, я могу на любую ячейку выдать инфу по номеру...
'типа так:

Nomer = Cells.Find("*Инвойса*").Offset(0, 1)
[a23] = Nomer
' и с [a23] уже Вашим методом брать как :

Call CopyText(Range("A23").value)


' но, что-то уж совсем жостко получается ради 5 цифр из одной ячейки((
'---------------------------------------------------------------------





Изменено: Домкрат - 26.04.2020 07:00:14
Страницы: 1
Наверх