Добрый день, проблема такая - существует документ, таблица с общим доступом, наверное из буфера обмена в него попали фотографии, те что можно было почистить путем ctrl+g и delete, я смогла удалить, но файл все равно подозрительно много весит и долго открывается, у меня и у менеджеров, пробовала скриптом через visual basic, не помогло. можете подсказать решение проблемы? я была бы очень вам благодарна, спасибо.
Добрый день, проблема такая - существует документ, таблица с общим доступом, наверное из буфера обмена в него попали фотографии, те что можно было почистить путем ctrl+g и delete, я смогла удалить, но файл все равно подозрительно много весит и долго открывается, у меня и у менеджеров, пробовала скриптом через visual basic, не помогло. можете подсказать решение проблемы? я была бы очень вам благодарна, спасибо.Яна
После отключения общего доступа попробуйте-ка пройтись по каждому листу макросом:[vba]
Code
Sub Draws_0D_Select() ' выделить НА ЛИСТЕ все рисунки с нулевыми размерами Dim oDraw As Shape For Each oDraw In ActiveSheet.DrawingObjects.ShapeRange If oDraw.Width = 0 Or oDraw.Height = 0 Then oDraw.Select (False) Next End Sub
[/vba]Он выделит на листе все рисунки, которые стали невидимы из-за "обнуления" их размеров (это происходит, например, при удалении столбцов/строк). Но "весить"-то 0-размерные картинки меньше из-за изменения размеров не стали. После запуска и отработки макроса просто нажмите Del для удаления выделенных им рисунков. Я специально не стал делать так, чтобы макрос сам всё удалял по всем листам для того, чтобы решение принимал пользователь (а вдруг размер уменьшен до 0 специально чтобы спрятать картинку, а когда нужно - макросом её развернуть?). Но если лень один раз пройтись по листам и Вы уверены, что 0-размерных рисунков быть не должно, то можно, конечно и цикл с перебором всех страниц и автоудалением сделать по такому же принципу
После отключения общего доступа попробуйте-ка пройтись по каждому листу макросом:[vba]
Code
Sub Draws_0D_Select() ' выделить НА ЛИСТЕ все рисунки с нулевыми размерами Dim oDraw As Shape For Each oDraw In ActiveSheet.DrawingObjects.ShapeRange If oDraw.Width = 0 Or oDraw.Height = 0 Then oDraw.Select (False) Next End Sub
[/vba]Он выделит на листе все рисунки, которые стали невидимы из-за "обнуления" их размеров (это происходит, например, при удалении столбцов/строк). Но "весить"-то 0-размерные картинки меньше из-за изменения размеров не стали. После запуска и отработки макроса просто нажмите Del для удаления выделенных им рисунков. Я специально не стал делать так, чтобы макрос сам всё удалял по всем листам для того, чтобы решение принимал пользователь (а вдруг размер уменьшен до 0 специально чтобы спрятать картинку, а когда нужно - макросом её развернуть?). Но если лень один раз пройтись по листам и Вы уверены, что 0-размерных рисунков быть не должно, то можно, конечно и цикл с перебором всех страниц и автоудалением сделать по такому же принципуAlex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Пятница, 07.12.2012, 21:19