Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: создать процедуру в Excel
 
 автор: Hush   (03.08.2009 в 15:55)   личное сообщение
 
 

Помогите, кто знает!
Програмно создаю из Access создаю файл Excel, но не могу перенести туда процедуру обработчика изменения активной клетки (Worksheet_Change). Именно процедуру обработки, а не модуль, т.к. хочу проверять данные которые потом будут вводить в Excel.

  Ответить  
 
 автор: osmor   (03.08.2009 в 16:16)   личное сообщение
 
 

Вы хотите в модуль Excel добавить процедуру?
Посмотрите AddFromString
Есть еще вариант создавать объект Excel WithEvents

  Ответить  
 
 автор: osmor   (03.08.2009 в 16:19)   личное сообщение
14 Кб.
 
 

вот когда-то делал пример
координаты ячеек по которым кликали в Excel выводятся в окно отладки ACCESS

  Ответить  
 
 автор: Hush   (03.08.2009 в 17:17)   личное сообщение
 
 

Получается громоздко... но работает.. попробовал с файла не пошло почему-то.. (хотя для меня оптимальный вариант) .AddFromString что-то тоже.. withevent - не пробовал...
хороший сайтик нашел после 3 часов копания в инете http://www.cpearson.com/excel/vbe.aspx


Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim LineNum As Long
Const DQUOTE = """" ' one " character

Set VBProj = Ex.ActiveWorkbook.VBProject
Set VBComp = VBProj.VBComponents("Лист1")
Set CodeMod = VBComp.CodeModule

With CodeMod
LineNum = .CreateEventProc("Change", "Worksheet")
LineNum = LineNum + 2
.InsertLines LineNum, "Dim i As Long, strLiter As String"
LineNum = LineNum + 1
.InsertLines LineNum, "On Error Resume Next"

и т.д. слава богу что процедурка маленькая;)

  Ответить  
 
 автор: osmor   (03.08.2009 в 17:30)   личное сообщение
 
 

На мой взгляд WithEvents проще

  Ответить  
 
 автор: Hush   (03.08.2009 в 18:01)   личное сообщение
 
 

Вот теперь все получилось и компактно;)

Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim LineNum As Long
Const DQUOTE = """" ' one " character

Set VBProj = Ex.ActiveWorkbook.VBProject
Set VBComp = VBProj.VBComponents("Лист1")
Set CodeMod = VBComp.CodeModule

With CodeMod
.AddFromFile "R:\ManagementAccounts\Template\InputCorrect.bas"
'.AddFromString Application.Modules("Module1").Lines(3, Application.Modules("Module1").CountOfLines - 1) 'если грузить с готового модуля Access
End With

  Ответить  
 
 автор: osmor   (03.08.2009 в 18:15)   личное сообщение
 
 

С модуля MSA - интересно.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList