Необходимо программно в модуль книги добавить макрос запрещающий возможность сохранения изменений. Делаю так:
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 | W:=CreateOleObject( 'Excel.Application' );
W . Workbooks . Open(<имя нужного файла>);
i := W . VBE . ActiveVBProject . VBComponents . Count;
For i:= 1 to W . Workbooks[ 1 ].VBProject . VBComponents . Count do
begin
s:=W . Workbooks[ 1 ].VBProject . VBComponents . Item(i).Name;
If s= 'ЭтаКнига' then
begin
W . Workbooks[ 1 ].VBProject . VBComponents . Item(i).CodeModule . AddFromString( 'Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)' + # 13 + ' Cancel = True' + # 13 + 'End Sub' );
end ;
end ;
W . Workbooks[ 1 ].Save;
W . Quit;
|
При построчном прохождении кода после строки W.Workbooks[1].VBProject.VBComponents.Item(i).CodeModule.AddFrom String(...) в редакторе VBA вижу что нужный код добавился, но после закрытия файла он там не сохраняется(