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

Задача такая:
Имеется документ 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
26.06.2009, 13:45:28
    #36061605
Missory
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создать событие в EXCEL из другой процедуры
Missory,

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

для листа
Код: 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
29.06.2009, 08:46:09
    #36063728
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создать событие в EXCEL из другой процедуры
Эти оба варианта сработали

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

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


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