powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Создать событие в EXCEL из другой процедуры
6 сообщений из 6, страница 1 из 1
Создать событие в EXCEL из другой процедуры
    #36061132
Missory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С экселем я не сильно хорошо дружу, поэтому сразу извиняюсь за неграмотность.

Задача такая:
Имеется документ EXCEL генерируемый из Delphi. автоматически там создается модуль (CodeModute) и туда записывается одна процедура, затем она запускается.

Но еще нужно сделать проверку на заполненность 3х полей по событию сохранить.
Саму функцию я написал, но как сделать ее запись в Эксель из Делфи что-то не могу сообразить.


Функции делфи (надеюсь всем все понятно будет):

Создание модуля
Код: plaintext
VBASheet := E_WB.VBProject.VBComponents.Add( 1 ); // vbext_ct_StdModule

Запись в этот модуль
Код: plaintext
VBASheet.CodeModule.AddFromString(code);

после недолго штудирования интернета наткнулся на парамер vbext_ct_Document, но как с ним обращаться не понял.

Пожалуйста, помогите разобраться.
...
Рейтинг: 0 / 0
Создать событие в EXCEL из другой процедуры
    #36061605
Missory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Missory,

все так плохо?
...
Рейтинг: 0 / 0
Создать событие в EXCEL из другой процедуры
    #36061889
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
Не все так плохо. Просто это мало кому нужно. Но тем не менее тема обсуждалась несколько раз.
Поищите на форуме.
...
Рейтинг: 0 / 0
Создать событие в EXCEL из другой процедуры
    #36063682
Missory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нашел и разобрался с примерами, как добавить событие для конкретного листа, а вот для книги не нашел.

для листа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Private Sub Workbook_NewSheet(ByVal Sh As Object)
    Dim vbc As VBComponent
    Dim cm As CodeModule
    Dim i As Integer
      
    Set vbc = ThisWorkbook.VBProject.VBComponents(Sh.Name)
    Set cm = vbc.CodeModule

    With cm
        i = .CountOfLines +  1 
        .InsertLines i, _
          "Private Sub Worksheet_SelectionChange(ByVal Target As Range)"
        i = i +  1 
        .InsertLines i, _
          "    MsgBox ""A!"", vbInformation"
        i = i +  1 
        .InsertLines i, "End Sub"
    End With

    Set cm = Nothing
    Set vbc = Nothing
End Sub

Пытался подставить в VBComponents(.... .Name) имя книги, но ничего не заработало


нужно событие
Код: plaintext
1.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
End Sub
...
Рейтинг: 0 / 0
Создать событие в EXCEL из другой процедуры
    #36063728
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эти оба варианта сработали

Код: plaintext
1.
2.
    Set vbc = ThisWorkbook.VBProject.VBComponents("ЭтаКнига")
или
    Set vbc = ThisWorkbook.VBProject.VBComponents( 1 )
...
Рейтинг: 0 / 0
Создать событие в EXCEL из другой процедуры
    #36063888
Missory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Deggasad,

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


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