Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Универсальный способ чтения гиперссылки из Excel
|
|||
|---|---|---|---|
|
#18+
Данная задача возникла так как существует куча Excel файлов из которых нужно получать гиперссылки из ячеек. Так как фантазия человека не ограничена, то гиперссылки в Excel добавляют разными способами и в результате получаются проблемы при их считывании. Excel загружаю из Delphi через ComObj Код: pascal 1. 2. 3. 4. 5. 6. Варианты записи гиперссылок: 1. Гиперссылку можно добавить в ручную через меню добавления гиперссылки в ячейку и в этом случае считать гиперссылку можно так Код: pascal 1. 2. Иногда гиперссылку добавляют через формулу Код: vbnet 1. и тогда гиперссылку можно получить через чтение формулы, а затем из нее убрать все что не нужно Код: pascal 1. 3. Частенько бывает, что гиперссылку задают Код: vbnet 1. Т.е. адрес гиперссылки зависит от конкретного значения ячейки и такую гиперссылку считать не получится через формулу так как это особо ничего не даст. 4. И наконец гиперссылку могут задать так Код: vbnet 1. Т.е. гиперссылка отображается в ячейки в зависимости от содержания другой ячейки, а сам адрес гиперссылки формируется выполнением различных функция Excel. Вопрос в том как можно организовать универсальный способ считывание гиперссылок во всех этих ситуациях, с учетом того, что формат формул формирующих гиперссылку не известен для двух последних случаев. Визуально в Excel эти все 4 варианта гиперссылок могут быть одинаковыми и при нажатии на каждую из них произойдет переход на web страницу, но вот что бы их считать их каким, то одним универсальным способом не получается. Есть ли какие то варианты решения этой проблемы? В приложении есть пример этих четырех вариантов записи гиперссылок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 19:28 |
|
||
|
Универсальный способ чтения гиперссылки из Excel
|
|||
|---|---|---|---|
|
#18+
обозначил бы, чем собираешься эксельный файл читать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 20:30 |
|
||
|
Универсальный способ чтения гиперссылки из Excel
|
|||
|---|---|---|---|
|
#18+
[quot fd00ch]обозначил бы, чем собираешься эксельный файл читать...[/quot В начале темы все описано. -> "Excel загружаю из Delphi через ComObj" Означает, что Excel файл открываю установленным экселем и читаю от туда данные. Может для решения этой проблемы нужно какой то макрос придумать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 21:01 |
|
||
|
Универсальный способ чтения гиперссылки из Excel
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 22:12 |
|
||
|
Универсальный способ чтения гиперссылки из Excel
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 00:29 |
|
||
|
Универсальный способ чтения гиперссылки из Excel
|
|||
|---|---|---|---|
|
#18+
user89Jonnik, можно попробовать так: - сохранить Excel-файл в HTML - вытащить из HTML ссылку через a href Ну-ну. Найти чёрную кошку в чёрной комнате. Особенно, если кошки там нет. Представьте: есть 300 файлов или 300 000 блобов с xls. Каждый надо сохранить (SaveAS) в HTML, распарсить, и ничего не найти. Нравится сценарий? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 00:51 |
|
||
|
Универсальный способ чтения гиперссылки из Excel
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 00:54 |
|
||
|
Универсальный способ чтения гиперссылки из Excel
|
|||
|---|---|---|---|
|
#18+
rgreatПопробуй это: http://howtouseexcel.net/how-to-extract-a-url-from-a-hyperlink-on-excel Это вариант вытащит только гиперссылки заданые 1 способом, а через формулу ничего не вернет Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Идея с Htm конечно интересная, но искать потом нужную ссылку крайне проблематично. Одно дело вытащить все гиперссылки, а другое только нужные и из нужных мест. Файлов около 1000 и все разные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 02:50 |
|
||
|
Универсальный способ чтения гиперссылки из Excel
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 03:26 |
|
||
|
Универсальный способ чтения гиперссылки из Excel
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Jonnik, Тынц ? EVALUATE() позволяет получить результат вычисления формулы, а для этого надо еще получить формулу самого текста гиперссылки. Это предпологает написания парсера формул, что бы оставить только ту часть которая формирует текст гиперссылки. Вариант интересный, но тоже не простой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 12:51 |
|
||
|
Универсальный способ чтения гиперссылки из Excel
|
|||
|---|---|---|---|
|
#18+
Jonnikа для этого надо еще получить формулу самого текста гиперссылки.Зачем? Если JonnikEVALUATE() позволяет получить результат вычисления формулы Вам нужно выполнить EVALUATE() для всего содержимого ячейки. И все вложенные формулы вычеслятся сами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 16:07 |
|
||
|
Универсальный способ чтения гиперссылки из Excel
|
|||
|---|---|---|---|
|
#18+
Прошло много лет, но вопрос остался Как же все таки получить ссылку из ячейки, где она формируется формулой ГИПЕРССЫЛКА? Оставим за кадром вопросы зачем это надо и советы в духе как умнее строить листы, а сосредоточимся на существенном имеется ячейки с заданными формулами гиперссылками Формулы могут быть очень хитроумно вычисляемые с задействованием массы других листов Это еще и простая - есть куда более хитроумные =ЕСЛИОШИБКА(ЕСЛИ(ВПР($A2;ВсеМетодики!$A:$U;19;ЛОЖЬ) =0;""; ЕСЛИОШИБКА(ГИПЕРССЫЛКА(ВПР($A2;ВсеМетодики!$A:$U;19;ЛОЖЬ);ВПР($A2;ВсеМетодики!$A:$U;18;ЛОЖЬ));""));"") Все конструкции встречающиеся в интернетах сводятся либо 1) к работе с объектом Hyperlinks - но в нем нет гиперссылок динамически формируемых функцией ГИПЕРССЫЛКА 2) к разбору самой формулы - это просто если формула такая ГИПЕРССЫЛКА(A1;B1) но нереалистично в случае сложных конструкций 3) Советы применить EVALUTE бесполезны т.к. при применении к содержимому ячейки она вернет, то что мы увидим в ячейке(но не ссылку!) т.е. это ничем не лучше скопировать - вставить значения, а разбор формулы в ячейке с целью выделения подформсулы формирующей гиперссылку см п.2 Вообще говоря ГИПЕРССЫЛКА функция двойственная - она с одной стороны генерит то что мы видим в ячейке а с другой стороны генерит саму гиперссылку (существующую в глубинах работающего экселя - заметьте когда мы подводим курсорк ячейке вполне видим правильную ссылку независимо от способа формирования) По правде сказать единственно что действительно работает это совместный анализ xlsx файла и анализ сгенерированной htm странички (там сохраняются результирующие ссылки) - но это совсем уж тягомотно и как-то некрасиво Итак вопрос остается - как же универсально узнать гиперссылку в ячейке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2021, 17:47 |
|
||
|
Универсальный способ чтения гиперссылки из Excel
|
|||
|---|---|---|---|
|
#18+
lks1965 3) Советы применить EVALUTE бесполезны т.к. при применении к содержимому ячейки она вернет, то что мы увидим в ячейке(но не ссылку!) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2021, 19:01 |
|
||
|
Универсальный способ чтения гиперссылки из Excel
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам lks1965 3) Советы применить EVALUTE бесполезны т.к. при применении к содержимому ячейки она вернет, то что мы увидим в ячейке(но не ссылку!) предположим у вас я ячейках A1 - = ГИПЕРССЫЛКА(B1;C1) B1 - HTTPS://MYSITE.RU C1 - МОЙ САЙТ Что мы увидим в ячейке A1 после вычисления формулы? = строку МОЙ САЙТ и к ячейке привяжется динамическая гиперссылка А если в коде VBA вычислим - Application.Evaluate("A1")? Вернется строка МОЙ САЙТ А гиперссылка? А нет ее. В том то и вопрос Формула в ячейке A1 может быть очень сложной но какой бы она не была вернется всего навсего значение помещаемое в ячейку но не гиперссылка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2021, 19:26 |
|
||
|
Универсальный способ чтения гиперссылки из Excel
|
|||
|---|---|---|---|
|
#18+
Какой VarType возвращает EVALUATE? Там не varDispatch? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2021, 20:30 |
|
||
|
Универсальный способ чтения гиперссылки из Excel
|
|||
|---|---|---|---|
|
#18+
Я нашел способ такого копирования, а точнее получения адреса вот такой динамической ссылки. Заключается он в том, что ячейку надо скопировать в Word (радость то какая - при такой операции Word вычисляет таки актуальный адрес ссылки и превращает ее в фиксированный), далее проверить коллекцию Hyperlinks уже объекта Word Конечно в таком виде работает довольно таки медленно, но при желании можно усовершенствовать, например объект wdApp сделать статическим и не каждый раз создавать/разрушать, это весьма прилично ускорит работу, если надо много ячеек обработать Проверено на Excel/Word 2019 (да и не забыть подключить Microsoft Object Library ) Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2021, 17:56 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=40058673&tid=2037441]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
185ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 297ms |

| 0 / 0 |
