PDA

Показать полную графическую версию : Запрет распечатки рабочей книги


Quaker_75
15-03-2012, 14:16
Доброго всем,
Люди как мне запретить распечатку целой группы рабочих книг в Excel 2003... VBA код не подходит, поскольку его необходимо вводить в несколько книг, а это неудобно...
Поясню - определенной группе пользователей необходимо разрешить только просмотр книги без возможности ее распечатки.... И применить эту возможность одновременно к нескольким книгам.

Заранее благодарю за ответ

okshef
15-03-2012, 14:56
Файл - > Разрешения -> и управляйте как хотите.

Но. Необходимо подключение к Интернет и наличие учетной записи LiveID

Quaker_75
15-03-2012, 15:30
А проще варианта нет без учетки? Дело в том, что потом мне придется решать различные проблемы с ней... публика, для которой это предназначена явно не в теме....
Можно как-то решить вопрос исключительно локальными методами? :) Разрешения пытался, выставлял определенной группе права только на чтение, все равно распечатка идет

okshef
15-03-2012, 16:45
Проще - не знаю. Увы.

Quaker_75
15-03-2012, 18:25
Поставлю вопрос иначе, вернее несколько модифицирую его ))), есть возможность реализовать данное ограничение посредством кода VBA, но неудобство данного метода в том, что эту операцию можно выполнить только над одной книгой... у меня, как уже упоминалось, их 120... Вопрос -
есть ли возможность пакетной вставки строки кода в несколько книг? Скажем, сгруппировать каким-то образом книги и прописать одновременно?

okshef
15-03-2012, 18:34
Код в модуле или Private sub?

Quaker_75
15-03-2012, 18:45
В данном случае для меня это не столь актуально, т.е куда вставлять код можно в один из двух... Меня больше интересует, как это сделать для нескольких книг одновременно?

okshef
15-03-2012, 19:41
Можете ваш код сохранить как шаблон или надстройку.

для меня это не столь актуально »
а для меня - да, варианты-то разные.

Quaker_75
15-03-2012, 20:47
а для меня - да, варианты-то разные. » - Согласен с вами....
Но - шаблон или надстройка врядли подойдут, поскольку захватят и новые книги... а мне нужно органичиться исключительно теми... 120ью...
Или я чего то не понял? с шаблоном/надстройкой?

okshef
15-03-2012, 20:53
Отработали с нужными книгами, заменили шаблон на стандартный, а надстройку отключили. ИМХО, так.

Quaker_75
15-03-2012, 21:23
Этот вариант я рассмотрел, мне нужно постоянно... Отработал и забыл тут не подходит.... А можно определить область печати и на нее наложить пароль? или что-то подобное....
:dont-know

okshef
15-03-2012, 21:25
Не встречался с такой возможностью

Iska
16-03-2012, 01:50
есть ли возможность пакетной вставки строки кода в несколько книг? »
Временно разрешите доступ к проектам VBE групповой политикой:
http://img805.imageshack.us/img805/5213/image000e.png

Соберите в текстовый файл пути к потребным файлам рабочих книг в виде:
E:\Песочница\0127\Книга1.xls
E:\Песочница\0127\Книга2.xls

C:\bla-bla-bla\КнигаNN.xls

Затем исполните следующий WSH-код:
Option Explicit

Const vbext_pk_Proc = 0

Dim strFileList

Dim objFSO
Dim strFile

Dim objExcel
Dim strProcLine


If WScript.Arguments.Count = 1 Then
strFileList = WScript.Arguments.Item(0)

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists(strFileList) Then
Set objExcel = WScript.CreateObject("Excel.Application")

With objFSO.OpenTextFile(strFileList)
Do Until .AtEndOfStream
strFile = .ReadLine()

If objFSO.FileExists(strFile) Then
If UCase(objFSO.GetExtensionName(strFile)) = UCase("xls") Then
WScript.Echo strFile

With objExcel.Workbooks.Open(strFile)
With .VBProject.VBComponents.Item(.CodeName).CodeModule
strProcLine = 0

On Error Resume Next
strProcLine = .ProcBodyLine("Workbook_BeforePrint", vbext_pk_Proc)
On Error Goto 0

If strProcLine = 0 Then
strProcLine = .CreateEventProc("BeforePrint", "Workbook")
.ReplaceLine strProcLine + 1, vbTab & "Cancel = True"
Else
WScript.Echo " Already has a [Workbook_BeforePrint] procedure at line " & CStr(strProcLine)
End If
End With

.Save
.Close
End With
Else
WScript.Echo "File [" & strFile & "] probably is not a Excel Workbook"
End If
Else
WScript.Echo "File [" & strFile & "] not found"
End If
Loop

.Close
End With

objExcel.Quit

Set objExcel = Nothing
Else
WScript.Echo "File List [" & strFileList & "] not found"
End If

Set objFSO = Nothing
Else
WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptFullName & """ ""<Path to File List>"""
End If

WScript.Quit 0

указав в качестве аргумента скрипта путь к этому текстовому файлу.

Удалите заданную политику или верните предыдущее значение политики.




© OSzone.net 2001-2012