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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2013, 11:18   #1
zaquson
Пользователь
 
Регистрация: 21.03.2013
Сообщений: 10
По умолчанию Внедрение кода кнопки в открытый файл

Здравствуйте.
Подскажите, пожалуйста, как осуществить: открывается файл с данными, запускается макрос из личной книги макросов, на лист в ячейку С1 добавляется кнопка с некоторой функцией, открытый файл сохраняется с кодом кнопки.

и ещё момент: с помощью Cells(1, Columns.Count).End(xlToLeft).Column можно определить номер последнего столбца, но использовать в Range его не получается, т.к. в Range используется буквенное обозначение столбца, как быть?

Последний раз редактировалось zaquson; 25.03.2013 в 11:56.
zaquson вне форума Ответить с цитированием
Старый 25.03.2013, 12:48   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

http://www.planetaexcel.ru/forum/ind...FID=8&TID=3867

вот тут по кнопкам посмотрите.
Цитата:
как быть?
как-то так:
Код:
Range("A1:"& Cells(1, Columns.Count).End(xlToLeft).Address).EntireColumn
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 25.03.2013, 14:15   #3
zaquson
Пользователь
 
Регистрация: 21.03.2013
Сообщений: 10
По умолчанию

По этой ссылке нет информации для решения данной задачи.
Смысл рассчитать, на сколько я представляю, ширину столбцов A и B - это и будет начало ячейки С1. Координаты определены. Вставляем кнопку. Внедряем код этой кнопки в открытый файл. Сохраняем файл с внедрённым кодом под каким-нибудь именем.


спасибо за "как-то так", как всегда всё оказалось просто...
zaquson вне форума Ответить с цитированием
Старый 25.03.2013, 14:28   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Сообщение от zaquson Посмотреть сообщение
По этой ссылке нет информации для решения данной задачи.
Смысл рассчитать, на сколько я представляю, ширину столбцов A и B - это и будет начало ячейки С1. Координаты определены.
Там все есть, только использовались немного другие объекты. Но принцип-то тот же

координаты - не проблема. Решается просто:
Код:
[A:B].Width
Цитата:
Вставляем кнопку. Внедряем код этой кнопки в открытый файл.
Тут есть нюанс:
- для Buttons потребуется привязать Вашу кнопку к макросу. Например:
Код:
Buttons("Имя кнопки").OnEvent = "Имя листа кода!Имя процедуры"
- для OLE-кнопки местоположение и имя процедуры должны быть прописаны жестко. Например, для кнопки "CommandButton1" на листе "Лист1", процедура должна называться CommandButton1_Click() и находиться на листе кода для "Лист1".
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 25.03.2013, 15:40   #5
zaquson
Пользователь
 
Регистрация: 21.03.2013
Сообщений: 10
По умолчанию

нашёл типа
Application.VBE.ActiveVBProject.VBC omponents.Import ("c:\Module1.bas")
но, что-то не работает: "Method 'VBE' of object'_Application' failed"
zaquson вне форума Ответить с цитированием
Старый 25.03.2013, 15:43   #6
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
http://www.planetaexcel.ru/forum/ind...FID=8&TID=3867

вот тут по кнопкам посмотрите.
тут написана последовательность действий, которую нужно сделать, чтобы от этой ошибки избавиться.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 26.03.2013, 08:23   #7
zaquson
Пользователь
 
Регистрация: 21.03.2013
Сообщений: 10
По умолчанию

вроде получилось, конечно всё пришлось переделывать под себя...
спасибо за уделённое время!
zaquson вне форума Ответить с цитированием
Старый 26.03.2013, 10:58   #8
zaquson
Пользователь
 
Регистрация: 21.03.2013
Сообщений: 10
По умолчанию

единственное только...
по нажатию кнопки должны скрываться или раскрываться подробности поля сводной таблицы, т.е. по идее должно быть:
if ActiveSheet.PivotTables("свд").Pivo tFields("Поле").ShowDetail = False then ActiveSheet.PivotTables("свд").Pivo tFields("Поле").ShowDetail = True else ActiveSheet.PivotTables("свд").Pivo tFields("Поле").ShowDetail = False
но ошибка: "Невозможно получить свойство PivotTables класса Worksheet"

Последний раз редактировалось zaquson; 26.03.2013 в 15:39.
zaquson вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перезаписать открытый файл NEoMASTERR Общие вопросы Delphi 3 28.01.2012 08:46
внедрение исполняемого кода в PE файл Dante13 Win Api 6 27.04.2011 11:27
Куда ворд сохраняет по умолчанию файл открытый из архива Nick K Софт 7 21.07.2010 08:55
внедрение кода(Visual Studio) koljsch Visual C++ 10 07.04.2010 13:55
Внедрение кода в EXE prizrak1390 Общие вопросы Delphi 16 07.05.2008 08:10