Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2010, 14:30   #1
Nik_Nik
 
Регистрация: 21.01.2010
Сообщений: 3
По умолчанию Фантомные поля

При работе с таблицами, иногда натыкаюсь в ячейках на пустые (неизвестно как созданные) небольшие поля для надписей в количестве до нескольких тысяч (наложены друг на друга)!
Они занимают место и тормозят работу.
Что это такое?
Как вообще можно отыскать на листе пустые поля, и удалить их одним махом?
Nik_Nik вне форума Ответить с цитированием
Старый 21.01.2010, 15:26   #2
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

Цитата:
Сообщение от Nik_Nik Посмотреть сообщение
При работе с таблицами, иногда натыкаюсь в ячейках на пустые (неизвестно как созданные) небольшие поля для надписей в количестве до нескольких тысяч (наложены друг на друга)!
Они занимают место и тормозят работу.
Что это такое?
Как вообще можно отыскать на листе пустые поля, и удалить их одним махом?
Если я правильно тебя понял то тебе необходимо удалить много Shapes.
Можно воспользоваться следующим макросом
Код:
Sub makros1()
    Dim sh As Worksheet
    Set sh = Worksheets(1)
    sh.Shapes.SelectAll
    Set sr = Selection.ShapeRange
    sr.Delete

End Sub
Юнлинг вне форума Ответить с цитированием
Старый 21.01.2010, 15:44   #3
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Это возможно результат не совсем корректного формирования листа некой программой. Например, иногда подобные глюки встречались у ранних версий ABBY Fnereader. Удалить все шейпы с листа можно кодом
Код:
Dim s as Shape
On error resume next
For Each s in ActiveSheet.Shapes
     if Len(s.TextFrame.Characters.Text) = 0 
         s.Delete
     end if
Next s
Aent вне форума Ответить с цитированием
Старый 21.01.2010, 18:25   #4
Nik_Nik
 
Регистрация: 21.01.2010
Сообщений: 3
По умолчанию

Юнлинг и Aent - спасибо за участие в решении проблемы, но оба варианта выдают ошибки при запуске макроса.
Порывшись в Инете нашел такой макрос:

Sub makros1()
Dim iCount As Integer
Dim Shape As Object

iCount = ActiveSheet.Shapes.Count
If iCount > 0 Then
For Each Shape In ActiveSheet.Shapes 'ia?aeenouaaai ana aaoioeao?u
Shape.Delete
Next
End If
End Sub

Макрос сработал, в результате размер файла уменьшился с 6 Мбайт до 1 Мбайта!
Я в шоке!
Придется чистить все файлы от этих невидимых Shapes.
Как они могли возникнуть, может вирус какой их генерирует?
Nik_Nik вне форума Ответить с цитированием
Старый 21.01.2010, 20:14   #5
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

Можно без макроса.
F5 - объекты Delete
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 21.01.2010, 21:23   #6
Nik_Nik
 
Регистрация: 21.01.2010
Сообщений: 3
По умолчанию

Serge 007 - спасибо!
Все гениальное - просто!
Nik_Nik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выявление одинаковости значений поля в одной талице по значению поля в другой nikmay SQL, базы данных 4 13.08.2009 12:51
Сквозные поля? jojahti Общие вопросы C/C++ 9 11.08.2009 19:13
Вычисляемые поля - ? Evgenii БД в Delphi 2 06.08.2009 17:03
Слияние и поля!!!! Окоча Юра Microsoft Office Word 2 01.03.2009 22:05
вычисляемые поля Nikola БД в Delphi 4 19.11.2008 13:26