Страницы: 1
RSS
Макрос - копирование значения ячеек в буфер обмена
 
Помогите написать макрос для копирования значений ячеек в буфер обмена (интересуют только значения, без форматирования и т.д.).
Есть Книга, первый лист расчетный, после его заполнения на взаимосвязанных листах нужно скопировать данные.
Т.е. открываем следующий лист (после расчетного), выделяем определенные ячейки (ячейки не меняются, всегда одинаковое выделение) и копируем их.

Как с помощью макроса сделать кнопку  "Копировать"?
Чтоб при открытии листа нажав на кнопку "Копировать" ранее определенные ячейки копировались в буфер обмена, конечно лучше в открытую программу, но хотя бы в буфер.

Нашел что то похожее
Код
sub button_click 
Dim MyData As DataObject 
MyData.SetText "строка текста", 1 
MyData.PutInClipboard
end sub

только вместо  "строка текста", 1 , должны быть данные из определенных ячеек, именно данные а не формулы.
Изменено: Denis_pog - 09.03.2014 20:12:30
 
А макрорекордером не пробовали создать макрос?
Цитата
Как с помощью макроса сделать кнопку "Копировать"?
Макросом кнопки не делают, макрос "вешают" на готовую кнопку.
 
Цитата
лучше в открытую программу, но хотя бы в буфер.
Для того чтобы в буфере осталась информация необходимо в параметрах буфера обмена установить галочки либо автоматическое отображение буфера, либо сбор данных без отображения буфера. Только во втором случае при вставке данных буфер придется отобразить. А код для копирования диапазона А1:Е10 на Листе1 записан макрорекодером.
Код
Sub Вбуфер()
    Sheets("Лист1").Range("A1:E10").Copy
    Application.CutCopyMode = False
End Sub
 
Изменено: gling - 09.03.2014 20:12:53
 
Спасибо, то что нужно.
 
Цитата
Application.CutCopyMode = False
за что отвечает данная строка?
без нее то же все отлично работает.
 
Она убирает отмеченный диапазон копирования. Если её не написать то при случайном нажатии Ctrl+V будет вставляться этот диапазон в активную ячейку и далее. Если вместо этих двух строк написать
Код
 Sheets("Лист1").Range("A15:E24")=Sheets("Лист1").Range("A1:E10").Value
То диапазон сразу копируется без буфера обмена. Только надо знать куда. Я указал диапазон ниже начиная с А15.
 
Цитата
gling пишет: То диапазон сразу копируется без буфера обмена. Только надо знать куда.
Спасибо, мне нужно копировать данные в другую программу, как я понял сделать можно, но через API для меня это пока сложновато.
 
Цитата
для меня это пока сложновато.
Для меня тоже.
 
В другую программу можно копировать с помощью AutoIt - поищите форумы по этой программе.
 
Спасибо, поищу.
 
лишнюю тему решил не создавать т.к. у меня схожий вопрос и вроде то что мне нужно есть в сообщениях, тем не менее мне не удалось сделать макрос который копирует в буфер обмена значение (не формулу) текущей ячейки, для того чтобы потом вставить это значение в другой программе
Изменено: Марьян Ковач - 26.03.2015 22:26:50
 
Код
Sub button_click()
Dim MyData As New MSForms.DataObject
MyData.SetText ActiveCell.Text, 1
MyData.PutInClipboard
End Sub
F1 творит чудеса
 
Что-то не работает, выдает Compile error: User-defined type not defined
Изменено: Nikki - 27.03.2015 17:58:21
 
Добавьте форму в файл. Заработает.
Саму форму можно после и удалить.
 
RAN, а вы не подскажите, какую форму вы имели ввиду?
 
Привет
прошу, помогите новичку.

задача такая:
автоматическое копирование результата из ячейки С5 в буфер обмена, чтобы затем вставить в другой программе по Ctrl+V.

процесс: в ячейку С3 вводятся данные измерения и нажимаем Enter, а в ячейке С5 появляются расчетные значения. Вот их и нужно автоматически копировать в буфер обмена.
Спасибо.
Изменено: Yarosik - 26.06.2019 15:39:15
 
Скопируйте в модуль листа:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("C3")) Is Nothing Then Range("C5").Copy
End Sub
 
Юрий М,

Спасибо, работает как и задумывалось
 
Здравствуйте, vba-гуру.

Как скопировать в буфер обмена Windows  содержимое двух несмежных ячеек,  без использования промежуточной ячейки для слияния ?
Пример вложением.

Ячейка А1: Иванов
Ячейка С3: Петя

Результат работы макроса: в буфере обмена Windows   "Иванов Петя"

Спасибо.
Компьютер никогда не заменит человека (©️ Hannibal Lecter)
 
?
Код
Dim iRng As Range
Set iRng = Union(Range("A1"), Range("C3"))
iRng.Copy
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Сергей Евдокимов написал:
в буфере обмена Windows   "Иванов Петя"
Должна быть подключена библиотека MS Forms 2.0 Object Library
Код
Dim myData As New DataObject
With myData
  .SetText (Range("A1") & " " & Range("C3"))
  .PutInClipboard
End With
Согласие есть продукт при полном непротивлении сторон
 
Sanja, спасибо вам большое. Буду разбираться.
С наступающим !
Компьютер никогда не заменит человека (©️ Hannibal Lecter)
Страницы: 1
Наверх