Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2010, 14:42   #1
bablzz
Пользователь
 
Регистрация: 28.04.2010
Сообщений: 40
По умолчанию Создать кнопку

Как в VBA сделать кнопку, которая будет копировать данные из ячеек excel в другую программу?

И подскажите пожалуйста ресурс, посвященный VBA(надо изучить)
bablzz вне форума Ответить с цитированием
Старый 01.05.2010, 22:26   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

см. вложение - сделана такая кнопка.
у нее есть три недостатка:
1. копирует что попало
2. куда попало
3. вообще не копирует в калькулятор - если в исходной ячейке буква
Вложения
Тип файла: rar Книга315.rar (11.8 Кб, 61 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 03.05.2010, 00:49   #3
Алексей Трошкин
Пользователь
 
Регистрация: 02.05.2010
Сообщений: 26
По умолчанию

Можно использовать буффер обмена
Доступные форматы для содержимого буфера обмена можно выбрать
командой меню View (Вид) программы CLIPBRD.EXE.
Доступ к буферу обмена Windows из приложения Visual Basic обеспечивает
объект Clipboard. Метод SetText
Метод SetText записывает текстовую строку в буфер обмена и заменяет
текущее содержимое буфера. При этом существует возможность определить
формат строки, хранимой в буфере:
Clipboard.SetText text[, format]
Скопировать содержимое выделенного текстового поля (TextBox) в буфер
обмена можно следующим оператором:
Clipboard.SetText Textl.Text

В Excel придется подключить созданный в VB6 clsExcel_1.dll

Excel >VBA > Tools > References > Browse > скопированный фаил clsExcel_1.dll > Ok


Public Sub Буфер_кнопка()
Dim clsBuf As clsExcel_1.Cell_Excel
Set clsBuf = New clsExcel_1.Cell_Excel
Set clsBuf.ExcelApp = Application
Range("B2").Activate
clsBuf.BuferVB
Set clsBuf = Nothing
End Sub

Также можно переносить и графику, но необходимо переписать dll. код простой но
почемуто в VBA не идет.
Вложения
Тип файла: zip Буфер.zip (33.2 Кб, 30 просмотров)

Последний раз редактировалось Алексей Трошкин; 03.05.2010 в 00:57. Причина: Добален пример Excel
Алексей Трошкин вне форума Ответить с цитированием
Старый 06.05.2010, 00:47   #4
bablzz
Пользователь
 
Регистрация: 28.04.2010
Сообщений: 40
По умолчанию

IgorGO и Алексей Трошкин
а как вы эти кнопки создали сами? в visual basic? если да, то как их "привязали" к экселю?
IgorGO
не мог ли ты поподробнее рассказать про код?
bablzz вне форума Ответить с цитированием
Старый 06.05.2010, 02:23   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

извольте... (комментарии к коду)
1.случайным образом переменной ap присваиваем одно из четырех значений.
2.случайным образом выбираем ячейку и копируем данные из нее в буфер обмена
3.стартуем выбранное в п.1 приложение
4.настойчиво пытаемся активировать окно этого приложения (кому-то из них надо доля секунды, чтобы стартовать а кому-то 3-10 секунд)
5.как только приложение активировалось без ошибки - отсылаем в него команду вставить (Ctrl+V)
6.всё. содержимое ячейки, случайно выбранной в п.2, скопировано в приложение (если приложение в состоянии принять данные такого типа)

кнопку я создавал так: (у меня 2007 офис)
1.выбрал ленту "Разаработчик"
2.в группе "Элементы управления" выбрал кнопку "Вставить"
3.в группе "элементы управления форм" выбрал пиктограмму кнопки
4.курсор поменял изображение (стал крестом +)
5.нажал левую кнопку мыши и потянул мышь вправо-вниз очертив таким образом контур будущей кнопки
я не очень быстро обьясняю? успеваете?
6.отпустил кнопку мыши, прямоугольник стал похож на кнопку, появилась тень, посреди кнопки появилась надпись "Кнопка 1" (в зависимости от того сколько кнопок уже есть на листе, кнопка может иметь другой номер)
7.всплыл диалог "Назначить макрос обьекту". я его просто закрыл
8.открыл редактор VBA (Alt+F11)
9.вставил модуль
10.создал процедуру с именем InsData
11.вернулся на лист Excel
12.нажал правой кнопкой мыши по кнопке
13.в всплывшем меню выбрал "назначить макрос"
14.из списка доступных макросов выбрал InsData
15.наколотил чайку, попил, написал макрос
макрос есть в предыдущем посте, комментарий к нему - в начале этого.
здесь описан один из способов, как вставить кнопку и привязать к ней макрос. есть несколько альтернативных. не буду их описывать, а то я и так на этот ответ растратил почти все буквы с компьютера.
Успехов!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 06.05.2010, 02:42   #6
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

посмотри тута
VBA
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 06.05.2010, 10:27   #7
bablzz
Пользователь
 
Регистрация: 28.04.2010
Сообщений: 40
По умолчанию

IgorGO
спасибо за очень подробное описание
alex77755
спасибо за ресурс
bablzz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как создать кнопку в форме, которая будет создавать отчет Tatu Microsoft Office Access 3 04.03.2010 19:13
Макросом создать кнопку и посадить на нее другой макрос 2 as-is Microsoft Office Excel 0 27.02.2010 11:53
КАК создать кнопку DEZuv Microsoft Office Access 4 04.04.2009 11:50
Помогите создать кнопку-картику хорошего качества! ДЫМ Общие вопросы Delphi 11 15.06.2008 21:32
Как создать кнопку в панели для окон???? Angel86rus Общие вопросы Delphi 4 03.10.2007 19:01