|
|
|
| Помогите, кто знает!
Програмно создаю из Access создаю файл Excel, но не могу перенести туда процедуру обработчика изменения активной клетки (Worksheet_Change). Именно процедуру обработки, а не модуль, т.к. хочу проверять данные которые потом будут вводить в Excel. | |
|
| |
|
|
|
| Вы хотите в модуль Excel добавить процедуру?
Посмотрите AddFromString
Есть еще вариант создавать объект Excel WithEvents | |
|
| |
|
14 Кб. |
|
| вот когда-то делал пример
координаты ячеек по которым кликали в Excel выводятся в окно отладки ACCESS | |
|
| |
|
|
|
| Получается громоздко... но работает.. попробовал с файла не пошло почему-то.. (хотя для меня оптимальный вариант) .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"
и т.д. слава богу что процедурка маленькая;) | |
|
| |
|
|
|
| На мой взгляд WithEvents проще | |
|
| |
|
|
|
| Вот теперь все получилось и компактно;)
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 | |
|
| |
|
|
|
| С модуля MSA - интересно. | |
|
| |