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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2011, 01:23   #1
AEL7
Новичок
Джуниор
 
Регистрация: 27.10.2011
Сообщений: 6
По умолчанию Макрос выборочного удаления ссылок в excel

Здравствуйте!

Подскажите пожалуйста: есть задача в однотипных документах удалять не все ссылки (с макросом удаления всех ссылок все понятно), а по конкретным критериям:

- удалять начиная со 2-го листа (1-й не трогать)
- на остальных листах (их может быть произвольное количество) удалять все гиперссылки, начиная со 2-й строки (в 1-й строке ссылку сохраняем). Все гиперссылки находятся в столбце А.

Заранее спасибо за помощь или советы!
AEL7 вне форума Ответить с цитированием
Старый 27.10.2011, 02:29   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Этот макрос удалит только гиперссылки (значения в ячейках останутся)

Код:
Sub УдалениеГиперссылок()
    Dim sh As Worksheet: Application.ScreenUpdating = False
    For Each sh In ActiveWorkbook.Worksheets    ' перебираем все листы
        If sh.Index > 1 Then    ' если лист не первый
            ' удаляем все гиперссылки в столбце A, начиная со второй строки
            sh.Range("a2:a" & sh.Rows.Count).Hyperlinks.Delete
        End If
    Next sh
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 27.10.2011, 12:15   #3
AEL7
Новичок
Джуниор
 
Регистрация: 27.10.2011
Сообщений: 6
По умолчанию

Спасибо большое за помощь!

Макрос отлично работает, но возникла дополнительная сложность: часто ячейки, в которых находится гиперссылка объеденные (т.е. вся строка объединена в одну ячейку), из-за чего excel 2003 ругается. Реально ли убирать объединение, удалять ссылку, а потом всю строку еще раз объединять?

Еще раз спасибо!

С уважением,
Александр


Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Этот макрос удалит только гиперссылки (значения в ячейках останутся)

Код:
Sub УдалениеГиперссылок()
    Dim sh As Worksheet: Application.ScreenUpdating = False
    For Each sh In ActiveWorkbook.Worksheets    ' перебираем все листы
        If sh.Index > 1 Then    ' если лист не первый
            ' удаляем все гиперссылки в столбце A, начиная со второй строки
            sh.Range("a2:a" & sh.Rows.Count).Hyperlinks.Delete
        End If
    Next sh
End Sub
AEL7 вне форума Ответить с цитированием
Старый 27.10.2011, 12:17   #4
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Объединенные ячейки в рабочей таблице - зло!!!
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 27.10.2011, 15:57   #5
AEL7
Новичок
Джуниор
 
Регистрация: 27.10.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
Объединенные ячейки в рабочей таблице - зло!!!
Конечно согласен, но файлы поступают уже готовые... Поэтому если есть возможность модифицировать макрос - подскажите пожалуйста!

Заранее спасибо.
AEL7 вне форума Ответить с цитированием
Старый 27.10.2011, 16:11   #6
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

> часто ячейки, в которых находится гиперссылка объеденные (т.е. вся строка объединена в одну ячейку), из-за чего excel 2003 ругается

В 2007 ругани не заметил, но и гиперссылка не удаляется. Так - удаляется:
Код:
sh.range("A2",cells(rows.Count ,columns.Count)).Hyperlinks.Delete
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 28.10.2011, 00:31   #7
AEL7
Новичок
Джуниор
 
Регистрация: 27.10.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
> часто ячейки, в которых находится гиперссылка объеденные (т.е. вся строка объединена в одну ячейку), из-за чего excel 2003 ругается

В 2007 ругани не заметил, но и гиперссылка не удаляется. Так - удаляется:
Код:
sh.range("A2",cells(rows.Count ,columns.Count)).Hyperlinks.Delete
К сожалению, excel 2003 также выдает "Run-time error '1004': Изменить часть объединенной ячейки невозможно"
AEL7 вне форума Ответить с цитированием
Старый 28.10.2011, 01:02   #8
AEL7
Новичок
Джуниор
 
Регистрация: 27.10.2011
Сообщений: 6
По умолчанию

Добавил MergeCells = False, в таком виде в excel 2003 заработало:

Цитата:
Sub Del()
Dim sh As Worksheet: Application.ScreenUpdating = False
For Each sh In ActiveWorkbook.Worksheets
If sh.Index > 1 Then
sh.Range("a2:a" & sh.Rows.Count).MergeCells = False
sh.Range("a2:a" & sh.Rows.Count).Hyperlinks.Delete
End If
Next sh
End Sub
Вопрос: можно ли поставить проверку содержит ли ячейка гиперссылку, а уже потом делать с ней MergeCells = False, Hyperlinks.Delete и обратно MergeCells = True? Будет ли это корректно?

Всем спасибо большое!
AEL7 вне форума Ответить с цитированием
Старый 28.10.2011, 01:26   #9
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

А можно пример листа с гиперссылкой в объединенной ячейке, на котором команда
Код:
sh.Range("a2:a" & sh.Rows.Count).Hyperlinks.Delete
выдает ошибку?
В Excel 2000 я тоже не могу получить ошибку.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 28.10.2011, 16:09   #10
AEL7
Новичок
Джуниор
 
Регистрация: 27.10.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
А можно пример листа с гиперссылкой в объединенной ячейке, на котором команда
Код:
sh.Range("a2:a" & sh.Rows.Count).Hyperlinks.Delete
выдает ошибку?
В Excel 2000 я тоже не могу получить ошибку.
посмотрите пожалуйста аттач.
Спасибо!
Вложения
Тип файла: zip link_del.zip (8.8 Кб, 9 просмотров)
AEL7 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос для удаления строки julius Microsoft Office Excel 28 03.10.2014 00:19
Макрос создания ссылок на разделы Meta2 Microsoft Office Word 1 23.06.2011 19:45
Макрос удаления пустых ячеек и листов книги sna1 Microsoft Office Excel 2 04.05.2011 20:49
Макрос добавления\удаления людей в табель madex Microsoft Office Excel 5 31.03.2011 18:20
Макрос для удаления повторяющихся строк Jelena_bsb Microsoft Office Excel 3 05.08.2010 13:34