![]() |
#2 |
Участник
|
Для запрета сохранения и распечатки могу предложить такой подход
X++: static void ExcelMacroEvent(Args _args) { ComExcelDocument_Ru excel = new ComExcelDocument_Ru(); COM Doc; COM app; COM Workbook; COM prj; COM comp; COM module; COM code; Com sheet; int Beg; Com VBE; Com Wnd; Com Wnds; int i; ; excel.newFile("", false); doc = excel.getComDocument(); app = doc.Application(); Workbook = app.ActiveWorkbook(); prj = Workbook.VBProject(); VBE = prj.Vbe(); Wnd = Vbe.MainWindow(); Wnd.Visible(false); comp = prj.VBComponents(); module = comp.item(1); module = comp.item(1); code = module.CodeModule(); Beg = code.CreateEventProc(ComVariant::createFromStr("BeforeSave"), ComVariant::createFromStr("Workbook"))+1; Wnd.Visible(false); code.InsertLines(Beg+1, "Cancel = True"); Beg = code.CreateEventProc(ComVariant::createFromStr("BeforePrint"), ComVariant::createFromStr("Workbook"))+1; Wnd.Visible(false); code.InsertLines(Beg+1, "Cancel = True"); sheet = app.ActiveSheet(); sheet.protect(); Wnds = Vbe.Windows(); for (i=1;i<=Wnds.count();i++) { Wnd = wnds.item(i); Wnd.Close(); } app.DisplayAlerts(false); Wnd.Visible(false); Workbook.Activate(); Sheet.enableSelection(-4142); excel.visible(true); /* app.OnKey("%{F11}"); app.SendKeys("%{F11}%TE^{TAB} {TAB}1{TAB}1~"); Wnd.Visible(false); Workbook.Activate(); Workbook.SaveAs("c:\\Книга1.xls");*/ } В закомментареной части - попытка обхода этой возможности (установка пароля на VBA). Но, к сожалению, для того, чтобы это работало надо сохранить и открыть книгу заново ![]() Ну и повторюсь: Для того, что бы этот код выполнился, необходимо включить в Excel параметр "Доверять доступ к Visual Basic Project" в форме управления безопасностью макросов (можно поискать на эту тему исследования Gustav)
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: kashperuk (5). |
Теги |
excel |
|
![]() |
||||
Тема | Ответов | |||
фильтр на копировании в буфер обмена | 15 | |||
Блокировка ключа индекса | 4 | |||
Системный буфер обмена | 15 | |||
Буфер обмена | 1 | |||
Вот - про быстр. Ексель, буфер обмена, и т.д. | 22 |
|