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

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

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

только вместо  "строка текста", 1 , должны быть данные из определенных ячеек, именно данные а не формулы.
Изменено: Denis_pog - 9 Мар 2014 20:12:30
 
А макрорекордером не пробовали создать макрос?
Цитата
Как с помощью макроса сделать кнопку "Копировать"?
Макросом кнопки не делают, макрос "вешают" на готовую кнопку.
 
Цитата
лучше в открытую программу, но хотя бы в буфер.
Для того чтобы в буфере осталась информация необходимо в параметрах буфера обмена установить галочки либо автоматическое отображение буфера, либо сбор данных без отображения буфера. Только во втором случае при вставке данных буфер придется отобразить. А код для копирования диапазона А1:Е10 на Листе1 записан макрорекодером.
Код
Sub Вбуфер()
    Sheets("Лист1").Range("A1:E10").Copy
    Application.CutCopyMode = False
End Sub
 
Изменено: gling - 9 Мар 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 Мар 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 Мар 2015 17:58:21
 
Добавьте форму в файл. Заработает.
Саму форму можно после и удалить.
 
RAN, а вы не подскажите, какую форму вы имели ввиду?
Страницы: 1
Читают тему (гостей: 1)