powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как послать функцию в EXCEL?
3 сообщений из 3, страница 1 из 1
Как послать функцию в EXCEL?
    #32527376
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из моего приложения создается объект Excel.Application и WorkBook. Я хочу туда отправить текст функции. В MSDN написано как это делать:

Application.VBE.ActiveVBProject.VBComponents.Add (vbext_ct_StdModule)
' Add code to new module from string variable.
Application.VBE.ActiveVBProject.VBComponents.Item("Module1") _
.CodeModule.AddFromString (strCode)

Это работает. Но для того, чтобы это работало требуется (MSDN):
All examples below require a reference to Microsoft Visual Basic for Applications Extensibility. To create this reference, in the Visual Basic Editor, click References on the Tools menu, and then click to select the Microsoft Visual Basic for Application Extensibility 5.3 check box.
Теперь вопрос: как взвести флажок из моего приложения?
(Вообще - то я пишу в CBuilder, но язык здесь роли не играет)
...
Рейтинг: 0 / 0
Как послать функцию в EXCEL?
    #32527468
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получил ответ из форума Delphi:
srf2000:
попробуй вместо vbext_ct_StdModule поставить 1
Это сработало без взведения флажка
...
Рейтинг: 0 / 0
Как послать функцию в EXCEL?
    #32528064
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
См. сюда: тут есть это и многое другое
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
Adding A Procedure To A Module 

The procedure below will add a new procedure called "MyNewProcedure" 
to the module named "NewModule" in ThisWorkbook. 

Sub AddProcedure()

Dim VBCodeMod As CodeModule
Dim LineNum As Long

Set VBCodeMod = ThisWorkbook.VBProject.VBComponents("NewModule").CodeModule
With VBCodeMod
    LineNum = .CountOfLines +  1 
    .InsertLines LineNum, _
"Sub MyNewProcedure()" & Chr( 13 ) & _
" Msgbox ""Here is the new procedure"" " & Chr( 13 ) & _
"End Sub"
End With

Application.Run "MyNewProcedure"

End Sub 

Pay attention to the way in which the .InsertLines method is called.  
The entire procedure is passed as one argument 
 -- a string with embedded Chr(13) characters for the line breaks.  The code statement 
 

Application.Run "MyNewProcedure" 

will run the new procedure.  
You must use Application.Run rather than calling the procedure directly in order to prevent compile-time errors.  
This method will work only if you are adding code to another code module.  
If you are adding code a the same code module, you must use an Application.OnTime method, 
so that control is returned to Excel, and the module can be recompiled and reloaded.  
Using Application.OnTime may have some synchronizations problems, 
so you should avoid calling a procedure that you've just added 
to the same code module without allowing all VBA procedures to come to an end.   

Application.OnTime Now,"NewProcedureName" 

  

...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как послать функцию в EXCEL?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]