есть ячейка с текстом, текст произвольный. Внутри текста есть стринг, который по формальным параметрам является гиперссылкой (не кликабельный). При использование встроенного экспорта в ПДФ в итоговом документе ПДФ ссылка (внезапно) становится кликабельной. Ее текст сохраняется.
Подскажите, на каком этапе простой текст приобретает свойство гиперссылки, и можно ли подменить отображаемый текст? Т.е. в ПДФ видим, к примеру, "Яндекс", а по клику попадаем на исходный текст "https://yandex.ru"?
Может есть какой-то язык разметки, который понимает конвертор?
Вопрос возник от невозможности превратить часть текста в ячейке в полноценную кликабельную гиперссылку. А может есть и такое?
Добрый день с VBA совсем отвык от формул, не могу сообразить - есть произвольный список SKU в строке (D:K). есть таблица с ценами. как простой формулой получить сумму в столбце М? Не так, чтобы перечислять условие 8 раз.
GRIM написал: используйте элемент управления, а не элемент ActiveX.
Спасибо, в этом варианте конечно все работает. Изначально уход в сторону ActiveX был вызван необходимостью менять размер и тип шрифта, что невозможно (поправьте?) с элементами управления. Все-таки, можно ли заставить комбобокс вести себя также?
Добрый день в приложенном файле два комбобокса и два списка значений. Первый (Lang) это список языков из ячеек А7:А9. Второй (List) это список формируемый на основе значения первого смещением по диапазону E:G.
Вопрос в следующем:
Как сделать так, чтобы при изменении языка в первом комбобоксе, второй автоматически отображал первый элемент актуального списка?
Сейчас это получается только в одном случае, если второй комбобокс был активен перед выбором в первом.
Макросы к сожалению недопустимы, есть ли какие свойства комбобокса позволяющие это сделать?
Если список задан через проверку данных, то вот так можно попробовать
Код
Sub test()
Debug.Print ActiveSheet.Cells(1, 1).Validation.Formula1
arr_test = Split(ActiveSheet.Range("A1").Validation.Formula1, ";")
For i = 0 To UBound(arr_test)-1
If ActiveSheet.Cells(1, 1).Value Like arr_test(i) Then
ActiveSheet.Cells(1, 1).Value = arr_test(i + 1)
Exit For
End If
Next i
End Sub
Игорь написал: поэтому, я остановился на таком способе поиска тегов в HTML:
Да, я видел в поиске выдачу этой ссылки, когда искал решение. Моя задача существенно скромнее, все в принципе решается через Instr и Mid в применение к тексту документа. Просто делать через getElement иногда выглядит гораздо изящнее, и с циклами проще. Тут уже принципиальный вопрос, есть ли лазейка чтобы скрипт принял текстовую переменную и выполнил как будто это строка кода. Пока только решение из первого ответа, програмное создание нового модуля с заданным текстом, вызов и удаление потом.
В любом случае всем спасибо и всех с праздником. Если кто набредет на ответ, дайте знать.
Андрей, вопрос-то не в этом. И вытаскивать содержимое не нужно.
В примере нужная информация описана как путь: doc.getElementsByClassName("ViewTable1")(0).getElementsByTagName("b")(0).innerText
вопрос в том, можно ли загнать путь в текстовую переменную, и использовать ее как указание откуда брать данные.
переменная генерится в процессе исполнения скрипта, то есть может принять вид и такой, и например вот такой:
doc.getElementsByClassName("deemphasize")(2).getElementsByTagName("span")(10).innerHTML (для приведенного примера вернет ошибку, конечно)
Это будет текст, по которому скрипт должен пойти и получить данные. Собственно вопрос в том, как заставить принять текст как команду.
Так не вводит в заблуждение?
querySelector штука занятная, но я не вижу пока как его применить по моей теме. Может он обращаться ко вложенным тегам? И брать не первый по порядку а с нужным номером?
Добрый день есть условный HTML документ (см. файл с примером). Обычный способ извлечения работает на ура. Суть в том, что нужное дерево тегов формируется каждый раз заново и существует в виде текстовой переменной. Как можно подружить текст и необходимость извлечь данные? То есть заставить Excel воспринимать текст как код? Робкая попытка использовать Evaluate() не прошла. Буду признателен за подсказку. С уважением, Slaffka
Второй раз вляпался в проблемы с Dir - в этот раз имена были английские, но файлы сделаны на бельгийской машине, то есть опять франузский язык в системе. Если сделать копию файла в папке (просто Ctrl-c, Ctrl-v), появляющуюся копию Dir уже не воспринимает. Дальше еще круче, открываешь файл, меняешь данные вручную, сохраняешь, закрываешь. Открываешь через sFiles - открывается старая версия, неизмененная. Ну ладно, думаешь, забыл сохранить изменения. Открываешь обычным образом - все изменения на месте. Бред какой-то. Вобщем настала пора попробовать:
Используется Excel 2007, локализованый русский. Собственно проблема в открытии файлов с использованием функции Dir. Я накидал простенький пример, любой из методов открывает все .xlsx файлы в заданной папке. Но как только в имени файла появляются французские акценты, VBA дает ошибку. Прилагаю и файл который не открывается. в окне Immediate видно, что переменная содержит имя файла с измененной буквой é, поэтому и не находит файл чтобы открыть. Странность в том, что открытие файла через ThisWorkbook.FollowHyperlink какое-то время срабатывало, и только вот сегодня отказалось напрочь. Умолчания в системе обычные, Excel только одной версии. Если отбросить Dir, и читать имя файла из ячейки - то первый метод срабатывает корректно, второй так же не работает. Подскажите, можно ли заставить текстовые переменные принимать значения в соответствие с не английским и не локальным языком? Или тут есть еще что-то что я вообще упустил? Спасибо!
Добрый день! подскажите пожалуйста, можно ли, и как, изменить границы именованого диапазона на основании значения некой ячейки? есть диапазон "list1" задан формулой =СМЕЩ(Data!$A$2;;;СЧЁТЗ(Data!$A$2:$A$10000)). применяется для проверки данных при вводе. как при изменении значения произвольной ячейки с другого листа, например A2 на "2" изменить формулу в описании диапазона "list1" на =СМЕЩ(Data!$B$2;;;СЧЁТЗ(Data!$B$3:$B$10000))? то есть перескочить на соседний столбец, не меняя имени самого диапазона? чувствую, что есть решение, сломал мозг уже, не выходит никак. Спасибо!
вопрос вот в чем. Есть задача получить исходный код веб-страницы в текстовую переменную. Данный код прекрасно справляется в большинстве простых случаев:
Код
Sub sample()
sURL = "https://yandex.ru"
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
With oXMLHTTP
.Open "GET", sURL, False
.send
If .Status = 200 Then txt = .responseText
End With
MsgBox (txt)
End Sub
дальше начинаются сложности - в браузере страница отображается корректно, а при выполнении кода:
Код
Sub sample()
sURL = "http://www.manta.com/ic/mtq599v/ca/45th-street-limited-partnership"
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
With oXMLHTTP
.Open "GET", sURL, False
.send
If .Status = 200 Then txt = .responseText
End With
MsgBox (txt)
End Sub
ответ сервера содержит только информацию, что роботам данные не предоставляются.
Собственно сам вопрос - чем отличается запрос от браузера и от макроса, и, главное, как убедить сервер дать корректный ответ? Спасибо.