Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Копирование гиперссылки в WORD
 
В конце темы приведен текст макроса копирующего гиперссылку в Word

https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=138711&TITLE_SEO=138711-perenos-gipperssylki-na-drugoy-listknigu&MID=1125555#message1125555
Почему диагональные границы в ячейке, вставленные макросом, влияют на верхнюю ячейку
 
Цитата
Юрий М написал:
Кстати, с ячейкой D5 тоже проблема )
Да, верно проблема вообще с примыкающими ячейками (т.е. со всех четырех сторон)

(я не хотел в вопросе увеличивать объем поэтому сосредоточился только на одном варианте который собственно мне и мешал
- ну если кратко для порядка то у меня имеется анализатор листов который помечает проблемные ячейки вот такими диагональными границами, чтобы не менять заливку, или шрифты и прочее - как правило этот эффект с границами не очень заметен ибо большая часть проблемных ячейки исправляются прямо в них, но вот попались варианты исправления когда правильную верхнюю ячейку протягивают по неправильной вот и проявился эффект )
Почему диагональные границы в ячейке, вставленные макросом, влияют на верхнюю ячейку
 
Цитата
Ігор Гончаренко написал: задумайтесь о дырах в собственной логике,
1. Задумался (еще до написания поста) и не нашел

2.  Скопируйте в произвольное место ячейку D3 до! выполнения макроса   сдвиньте с нее курсор - вы увидите в наличии все границы
 2.1 проверьте наличие границ у ячеек D3,D4  (ПКМ->формат ячеек->границы)- вы увидите что у обоих ячеек есть все границы по контуру

3. Выполните макрос
 3.1 проверьте наличие границ у ячеек D3,D4  (ПКМ->формат ячеек->границы)- вы увидите что у обоих ячеек есть все границы по контуру (да точно так как и в п 2.1)

4. Снова скопируйте в произвольное место ячейку D3, сдвиньте с нее курсор и вы не увидите нижней границы у вновь скопированной ячейки

5) "выполните макрос, отметьте Д3 принудительно установите в ней нижнюю границу, копируйте, что видно?"
Если загляните в макрос то увидите там закоментированную строчку
    Cells(3, 4).Borders(xlEdgeTop).LineStyle = xlContinuous
Как нетрудно догадаться  эта строчка принудительно устанавливает  нижнюю границу в D3 для компенсации обнаруженного эффекта

И последнее
Я вообще спросил в первом посте может ли кто-то объяснить этот эффект. То мне начинают советовать чего то не делать, что я и так не делаю, то начинают говорить, что мол у меня дефекты в логике, то что я чуть что эксель обвиняют не желая даже немного подумать
Ну и зачем это?
Если по существу нечего ответить ну так и вообще говорить ничего не надо
Почему диагональные границы в ячейке, вставленные макросом, влияют на верхнюю ячейку
 
Уважаемый гуру! Я далеко не "сразу" обвинил Эксель, да и не обвиняю его
Я порылся в интернетах, обнаружил, что эффект наличия границы в свойствах и отсутствия ее при копировании ячейки иногда встречается, попроводил всякие эксперименты на нескольких версиях Excel и только потом написал этот пост, приложив файл и описав ситуацию.

Цитата
Ігор Гончаренко написал: а что к вас не так
А вы ячейку D3 после выполнения макроса скопируйте куда-то и курсор со скопированной ячейки сдвиньте
Почему диагональные границы в ячейке, вставленные макросом, влияют на верхнюю ячейку
 
Цитата
Юрий М написал: Чуть что не получается - сразу глюк Excel ))
Ну так может поясните, где там я что неправильно сделал?
Почему диагональные границы в ячейке, вставленные макросом, влияют на верхнюю ячейку
 
Цитата
Ігор Гончаренко написал: как сказал А.Эйнштейн "все в этом мире относительно"
Выражаетесь Вы весьма цветисто, но может по существу что то скажете?
1) В своем коде я не трогаю  границ D3  и даже не трогаю верхнюю границу D4
2) Даже если бы я там чего то тронул все равно остается неясность почему Excel говорит, что нижняя граница есть но не отрисовывает ее?
Почему диагональные границы в ячейке, вставленные макросом, влияют на верхнюю ячейку
 
Обнаружил такой странный глюк

При установке из VBA!!! диагональных границ в ячейке (D4), ячейка (D3) расположенная над той, в которой устанавливаются диагональные границы, каким то образом теряет нижнюю границу
При копировании ячейки D3 в другое место листа или к примеру протягивании ячейки D3 вниз на D4 это хорошо видно
При этом в свойствах ячейки эта граница отмечается как установленная и наличествующая

Этого эффекта нет при установке этих диагональных границ вручную
Эффект этот есть как в версии 2010 так и в 2019

Возможно этому есть какое-то обьяснение?
Макрорекордер. Неправильно формируется макрос при сбросе цвета ярлыка листа
 
Мы привыкли пользоваться макрорекордером для получения результата желаемых действий и дальнейшего использования этих действий в VBA

Но если мы запишем макрос смены цвета листа ярлыка на "нет цвета" получим такой макрос...
Код
Sub Макрос1()
'
' Макрос1 Макрос
'
    Sheets("Лист1").Select
    With ActiveWorkbook.Sheets("Лист1").Tab
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
    End With
End Sub

и попробуем его выполнить, то получим ошибку "Subscript out of range"
Недолгое расследование выясняет, что вместо  xlAutomatic надо использовать  xlColorIndexNone, в чем конечно прослеживается некая логичность "нет цвета" как то лучше соотносится с xlColorIndexNone, чем xlAutomatic

Таким образом получается что макрорекордер записывает не столько сами действий сколько, как бы сказать, отражения этих действий, и вот конкретно в этой ситуации "отражение" какое-то не то

Теперь собственно вопрос - можно ли где то прочитать как внутри устроен макрорекоррдер Excel-а и система записи команд с его помощью?

Версия 2019
Перенос гипперссылки на другой лист/книгу
 
Цитата - не бездумная копия [МОДЕРАТОР]

Нет не совсем так
Я наверное недостаточно подробно пояснил в первом своем посте
Речь идет не о ссылка в формулах, а о гиперссылках привязываемых к ячейке

Гиперссылки привязываемые к ячейка, можно разделить на фиксированные и динамические

- Фиксированные это гиперссылки привязываемые вручную прямо на листе (ПКМ->ссылка) или в VBA функцией Hyperlinks.Add
Эти ссылки видны в коллекции Hyperlinks

- Динамические гиперссылки это ссылки формируемые функцией ГИПЕРССЫЛКА, причем сама эта функция может сложным образом входить в другую функцию с выборами, сложно формируемыми адресами, указывать на другие листы или книги и прочее. Кстати говоря Эксел для таких сложных фуекций даже не сообразит формат поменять на тот, который используется для гиперссылок. Эти ссылки не видны в коллекции  Hyperlinks

Так вот при копировании  такого листа в новый лист нового файла ссылки в формулах с этими гиперссылки будут смотреть  на источник и  если вы разорвете связи
то в ячейках останется только текстовые значения а гиперссылки удаляться. Т.е. выражения "заморозятся данные" относится не к самой гиперссылки (линку) а к тому, вы увидите в ячейке

Я прикрепил файл для иллюстрации

Однако я нашел способ такого копирования, а точнее получения адреса вот такой динамической ссылки. Заключается он в том, что ячейку надо скопировать в Word
(радость то какая - при такой операции Word вычисляет таки актуальный адрес ссылки и превращает ее в фиксированный), далее проверить коллекцию Hyperlinks уже объекта Word

Конечно в таком виде работает довольно таки медленно, но при желании можно усовершенствовать, например объект wdApp сделать статическим и не каждый раз создавать/разрушать, это весьма прилично ускорит работу, если надо много ячеек обработать
Проверено на Excel/Word 2019  (да и не забыть подключить Microsoft Object Library )
Код
' Получаем адрес гиперссылки
Function GetLink(r As Long, c As Long) As String
    
    Dim wdApp As Word.Application          
    Dim wdDoc As Word.Document
    
    If Cells(r, c).Value = Empty Then
      GetLink = ""
      Exit Function
    End If
    
    Cells(r, c).Copy
    
    Set wdApp = CreateObject("Word.Application")
    wdApp.Documents.Add
    Set wdDoc = wdApp.Documents(1)
    
    wdApp.Visible = False
    wdDoc.Range.PasteExcelTable False, False, False
    
    ' Теперь найдем ссылку в коллекции Hyperlinks Word-локумента word
    If wdDoc.Hyperlinks.Count = 0 Then
        GetLink = ""
      Else
        GetLink = wdDoc.Hyperlinks(1).Name
     End If
    wdDoc.Close (wdDoNotSaveChanges)
    wdApp.Quit (wdDoNotSaveChanges)
    
End Function
Изменено: lks1965 - 04.04.2021 22:44:10
Перенос гипперссылки на другой лист/книгу
 
Здравствуйте!

Есть лист с довольно сложно генерируемыми гиперссылками
Пример формулы  -
Код
=ЕСЛИОШИБКА(ЕСЛИ(ВПР($A2;ВсеМетодики!$A:$U;19;ЛОЖЬ) =0;""; ЕСЛИОШИБКА(ГИПЕРССЫЛКА(ВПР($A2;ВсеМетодики!$A:$U;19;ЛОЖЬ);ВПР($A2;ВсеМетодики!$A:$U;18;ЛОЖЬ));""));"") 

Формул много, они разнообразны, ячейки из которых конструируется формула в течении дня могут поменяться, в них могут собраться другие имен страниц и т.д. (сам эти ячейки тоже вычисляемые)

В конечном итоге желательно лист насыщенный такими формулами периодически переносить в другую книгу, без привязки к источнику, отправлять по почте и прочее
(т.е. просто скопировать то лист можно, но останутся связи с исходным файлом, если же скопировать только значения то сгенерированные формулами гиперссылки потеряются)

Т.е. в перенесенном листе формулы уже не требуются но требуется оставит результат их работы т.е. гиперссылки
может кто-то подсказать как это сделать?
Проблема с онлайн помощью Excel 2013, Медленное и ненадежное срабатывание онлайн помощи при нажатии F1
 
 Тоже самое с 2016 версией

А вот с 2010 интересно  - ранее в ней была возможность переключения между офлайн и онлайн  справками а сейчас при переключении на онлайн пишет, что мол пользуйтесь автономной справкой а онлайн не работает (...Поддержка Excel 2010 завершается Перейдите на Microsoft 365, чтобы работать удаленно с любого устройства и продолжать получать поддержку.)

Совершенно нормально  работает online помощь по VBA  в 2019-ый - все быстро и как ожидалось
Черт его знает - то ли временный глюк какой-то, то ли что то вроде желания пересадить на 2019 (с другой стороны при все уважении к сообществу разработчиков в Office не думаю что это такой уж большой сегмент среди потребителей)
Проблема с онлайн помощью Excel 2013, Медленное и ненадежное срабатывание онлайн помощи при нажатии F1
 
Здравствуйте!

Ситуация
Комп с установленными W10 pro и MS Office 2013. Все обновления сделаны. Никаких внешних антивирусов не установлено

При попытке получить в редакторе помощь по нажатию F1 какая то явно неправильная работа  (не зависит от файла, не зависти от браузера та же истоия что в Edge что в Хроме, не зависит от включенного-отключенного Defender-а)

То находит слово то не находит, то открывает прямо верхний узел с документацией
https://docs.microsoft.com/ru-ru/

то вот этот (Ключевые слова (Visual Basic для приложений))
https://docs.microsoft.com/ru-ru/office/vba/language/reference/keywords-visual-basic-for-application...
иногда впрочем открывет неужную страницу

Второй момент - чаще всего все это происходит очень долго несколько минут с блокированием работы Excel (что  немного намекает, что дело не в браузере)


Еще такой мелкий момент - при нажатии F1 (в редакторе VBA) сразу эксель переключается на листы с даннымми

Сама по себе онлайн-справка Экселя (т.е. справка на листах по формулах) работает совершенно нормально

Может кто то что то подсказать?
Перенос (нежелательный) форматов на ячейку с формулой из влияющих ячеек
 
Немного разобрался. Может кому то  будет полезным

Описанная ситуация имеет родственное отношение к распространенной ситуации вводу текстовых данных  дат и автоматической конвертации их в дату

Суть в том, что все эти правила (в т.ч. и описанная мной ситуация ) видимо вшиты в Эксел где то глубоко. Чаще всего сталкиваются с нежелательными преобразованиями текстовых данных вроде того как при вводе в ячейу текста вида 2-3-2015 получаем дату и формат ячейки меняется с общего на дату
Описано подробно тут
https://excel2.ru/articles/avtomaticheskoe-preobrazovanie-formata-yacheyki-v-ms-excel-pri-vvode-tekstovyh-dannyh-chast-2

Вся эта эксельная автоматика таким образом распространяется на более сложные ситуации чем описано по вышеприведенной ссылке.

Существенно, что она срабатывает когда в ячейку что то вводится (прямо данные или формула или даже происходит изменение цвета заливки или цвета шрифта при условном форматировании!) и формат в этой целевой ячейке выставлен общий.

Таким образом если мы поставим в ячейках с формулой формат числовой то эксель уже не будет менять там формат

Я попробовал несколько вариантов и похоже все подтверждается

Конечно неплохо бы где-то найти подробное описание всей этой автоматики, но "хватит и пяти"
Изменено: lks1965 - 26.08.2019 21:23:49
Перенос (нежелательный) форматов на ячейку с формулой из влияющих ячеек
 
Это не помогает (уже пробовал). Также дело не в стилях. Также так ведет себя Excel 2007

Думаю, что где то в регистре есть управление таким поведением
Перенос (нежелательный) форматов на ячейку с формулой из влияющих ячеек
 
Здравствуйте!

Суть проблемы (Excel 2010) - в ячейку с формулой автоматически переносятся форматы из влияющих ячеек

Предположим у нас очищены форматы во всей таблице (см. приложенный файл)
В ячейке B7 формула - =СУММ(A3:A5)
В ячейке B8 формула - =A3+A4+A5

Если я установлю формат в ячейке A3 в денежный, то при установке курсора в ячейку B7 и Enter (ну как бы ввели формулу) формат ячейки B7 меняется на денежный. Тоже самое и для ячейки B8. Но!!! Если я сброшу все форматы в таблице и снова такое проделаю но уже я ячейкой A4, то формат в ячейке B7 поменяется а ва ячейке B8 нет!!!
Очистка форматов в ячейках A3:A5 и дальнейшем "редактировании" формул в B7 и B8 уже не меняет формат в B7 и B8

Тоже самое произойдет при установке формата числовой. Он тоже передет в ячейки И

Ситуация еще более сложная так так зависит еще и от последовательности установок форматов.
Например, если я установлю формат в A3 числовой и щелкну по B7 то в B7 установится фомат числовой, а если затем я установлю формат в A3 денежный и щелкну по B7 то в B7 останется фомат числовой
Однако если я установлю формат в A3 числовой а затем поменяю его на денежный и щелкну по B7 то в B7 установится фомат денежный

Может ли кто-то обьяснить такое поведение Экселя и где это отключить?
Страницы: 1
Наверх