Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Office (Word, Excel, Outlook и т.д.) (http://forum.oszone.net/forumdisplay.php?f=115)
-   -   Запрет распечатки рабочей книги (http://forum.oszone.net/showthread.php?t=230450)

Quaker_75 15-03-2012 14:16 1879871

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

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

okshef 15-03-2012 14:56 1879914

Файл - > Разрешения -> и управляйте как хотите.

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

Quaker_75 15-03-2012 15:30 1879956

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

okshef 15-03-2012 16:45 1880034

Проще - не знаю. Увы.

Quaker_75 15-03-2012 18:25 1880117

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

okshef 15-03-2012 18:34 1880121

Код в модуле или Private sub?

Quaker_75 15-03-2012 18:45 1880134

В данном случае для меня это не столь актуально, т.е куда вставлять код можно в один из двух... Меня больше интересует, как это сделать для нескольких книг одновременно?

okshef 15-03-2012 19:41 1880173

Можете ваш код сохранить как шаблон или надстройку.

Цитата:

Цитата Quaker_75
для меня это не столь актуально »

а для меня - да, варианты-то разные.

Quaker_75 15-03-2012 20:47 1880235

Цитата:

Цитата okshef
а для меня - да, варианты-то разные. »

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

okshef 15-03-2012 20:53 1880241

Отработали с нужными книгами, заменили шаблон на стандартный, а надстройку отключили. ИМХО, так.

Quaker_75 15-03-2012 21:23 1880252

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

okshef 15-03-2012 21:25 1880253

Не встречался с такой возможностью

Iska 16-03-2012 01:50 1880382

Цитата:

Цитата Quaker_75
есть ли возможность пакетной вставки строки кода в несколько книг? »

Временно разрешите доступ к проектам VBE групповой политикой:


Соберите в текстовый файл пути к потребным файлам рабочих книг в виде:
Код:

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


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

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


Время: 04:04.

Время: 04:04.
© OSzone.net 2001-