Помогите написать макрос для копирования значений ячеек в буфер обмена (интересуют только значения, без форматирования и т.д.). Есть Книга, первый лист расчетный, после его заполнения на взаимосвязанных листах нужно скопировать данные. Т.е. открываем следующий лист (после расчетного), выделяем определенные ячейки (ячейки не меняются, всегда одинаковое выделение) и копируем их.
Как с помощью макроса сделать кнопку "Копировать"? Чтоб при открытии листа нажав на кнопку "Копировать" ранее определенные ячейки копировались в буфер обмена, конечно лучше в открытую программу, но хотя бы в буфер.
Нашел что то похожее
Код
sub button_click
Dim MyData As DataObject
MyData.SetText "строка текста", 1
MyData.PutInClipboard
end sub
только вместо "строка текста", 1 , должны быть данные из определенных ячеек, именно данные а не формулы.
Для того чтобы в буфере осталась информация необходимо в параметрах буфера обмена установить галочки либо автоматическое отображение буфера, либо сбор данных без отображения буфера. Только во втором случае при вставке данных буфер придется отобразить. А код для копирования диапазона А1:Е10 на Листе1 записан макрорекодером.
Код
Sub Вбуфер()
Sheets("Лист1").Range("A1:E10").Copy
Application.CutCopyMode = False
End Sub
Она убирает отмеченный диапазон копирования. Если её не написать то при случайном нажатии Ctrl+V будет вставляться этот диапазон в активную ячейку и далее. Если вместо этих двух строк написать
лишнюю тему решил не создавать т.к. у меня схожий вопрос и вроде то что мне нужно есть в сообщениях, тем не менее мне не удалось сделать макрос который копирует в буфер обмена значение (не формулу) текущей ячейки, для того чтобы потом вставить это значение в другой программе
задача такая: автоматическое копирование результата из ячейки С5 в буфер обмена, чтобы затем вставить в другой программе по Ctrl+V.
процесс: в ячейку С3 вводятся данные измерения и нажимаем Enter, а в ячейке С5 появляются расчетные значения. Вот их и нужно автоматически копировать в буфер обмена. Спасибо.
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