|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.05.2010, 15:53 | #21 | |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 844
|
Цитата:
С уважением, Алексей.
|
|
15.05.2010, 01:21 | #22 |
Пользователь
Регистрация: 02.05.2010
Сообщений: 26
|
Да деиствительно регистрировать необходимо на каждой машине. По коду постараюсь прояснить.
В VB6 создем новый проект ActiveX Dll и даем имя проекту clsExcel_1. Создаем класс с именем Cell_Excel . Затем необходимо подключить также и в VB6 ссылку на библиотеку обьектов Excel Microsoft Excel 9.0 (cоответствует Excel 2000) Obiect Libary.У меня подключен был Excel 12.0 поэтому на 2000 и не пошло. Далее код VB6: Option Explicit 'Обьявление переменных класса 'Ссылка на вызывающее приложение Excel Private mxlAPP As Excel.Application ''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''' 'Процедуры свойств класса Public Property Set ExcelApp(ByRef xlapp As Excel.Application) Set mxlAPP = xlapp End Property ''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''' 'Процедуры обработки событий класса Public Sub Class_Terminate() Set mxlAPP = Nothing End Sub ''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''' 'Процедуры методов класса Public Sub ShowMessage() 'Вызов Msgbox MsgBox "Hello Excel!" End Sub ''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''' Public Sub BuferVB() 'Использование буффера обмена Windows Clipboard.Clear 'очистка буфера перед заполнением Clipboard.SetText (mxlAPP.ActiveCell.Text) 'помещаем в буфер значение активной ячейки End Sub ''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''' ' 'Переменная mxApp уровня модуля,которая хранит ссылку на обьект Excel Application. DLL- проект будет связываться с Excel с помощью этой ссылки на обьект. 'Процедура свойства ExcelApp, которое будет использоваться обьектом Excel Application, вызывающим DLL-фаил, для предоставлении ссылки на себя. Далее копилируем DLL- проект. Если открыт Excel со старой ссылкой на DLL то Excel необходимо закрыть. Затем открыть книгу Excel и набрать данный код. код VBA: Sub MsgBoxVB() 'создаем переменную зарегестрированного класс Dim clsBuf As clsExcel_1.Cell_Excelа clsExcel_1 Set clsBuf = New clsExcel_1.Cell_Excel Set clsBuf.ExcelApp = Application clsBuf.ShowMessage ' вызываем процедуру DLL Set clsBuf = Nothing End Sub Sub Буфер_Щелчок() Dim clsBuf As clsExcel_1.Cell_Excel Set clsBuf = New clsExcel_1.Cell_Excel Set clsBuf.ExcelApp = Application Range("B2").Activate clsBuf.BuferVB ' вызывае процедуру DLL Set clsBuf = Nothing End Sub В принципе ничего сложного нет. Немногог морока с подключением и перемещением файлов. Созданные DLL-проекты по возможности не перемещать из-за этого начинаются накладки с подключением. Последний раз редактировалось Алексей Трошкин; 15.05.2010 в 01:26. |
16.05.2010, 16:04 | #23 | |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 844
|
Цитата:
Огромное спасибо. На днях буду серьезно разбираться. DLL можно хранить на сетевом диске (хотя эта мысль временами и не нравиться), либо создавать инфраструктуру на каждом компе отдельно (можно при первом запуске или отдельной прогой), а потом просто подменять DLL'шки на новые.
С уважением, Алексей.
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
exel и delphi | Demagog | БД в Delphi | 10 | 29.10.2009 17:19 |
Макрос в Exel | Tomatos | БД в Delphi | 1 | 16.06.2009 17:33 |
EXEL | Artomes | Microsoft Office Excel | 0 | 02.11.2008 23:18 |
Exel | MAcK | Microsoft Office Excel | 1 | 30.04.2007 15:21 |