Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 117 След.
Как скриптом скачать файл с сети с сохранением даты создания/изменения?
 
smr801, это в некоторых форматах файлов картинок есть такие данные
(вы же изначально не уточнили, про файлы какого типа речь)
И вопрос тогда должен звучать не «как скачать файл» (ибо скачивать можно как угодно), а как потом извлечь из конкретного типа файла его метаданные (где эта дата хранится)
Как скриптом скачать файл с сети с сохранением даты создания/изменения?
 
Если речь про произвольный файл (например, текстовый) - то никак
(даты эти не хранятся в самом файле)
При скачивании с сайта, сервер выдает только файл, не сообщая ничего про дату создания
По FTP если скачивать - то там можно запросить данные по файлу
Почему не запускается браузер в экселе
 
Решение описано в этой инструкции
https://excelvba.ru/programmes/Parser/manuals/errors/compilation_error
(читайте, начиная с "Причины проблемы")
Загрузка большого json
 
Тогда макрос нужно написать
(сколько конкретики в вопросе, столько же и в ответе)
Отправка запроса к API с использованием сертификата
 
Цитата
при включенных SSL 2/3
вроде как, это не включить

Цитата
при включенном TLS 1.0
1.0 используется по умолчанию, это включать не надо
Можно включить 1.1 / 1.2, см. инструкцию:
https://excelvba.ru/programmes/Parser/manuals/errors/WinHTTP_TLS

Цитата
что требуются - это Authorization, Client-Login, Content-Type и Accept-Language
с этим проблем нет, это всё работает

Цитата
с использованием сертификата
Сертификат-то нужно?
В вашем коде ничего нет касательно сертификата
См. метод SetClientCertificate объекта WinHttpRequest

Цитата
пробовал использовать XMLHTTP2 v6.0
Это не нужно. Продолжайте использовать WinHttpRequest
Парсер, Создать парсер, который будет вытаскивать из массива текста значения по ключевым словам
 
Заказ свободен
(бюджет не устроил, вкупе со срочностью. и задания четкого нет)
Парсер, Создать парсер, который будет вытаскивать из массива текста значения по ключевым словам
 
Здравствуйте
Пишите в личку
Контакты в профиле
Корректный импорт данных с сайта
 
А вы вручную копируете с сайта?
Может, попробовать настроить в Excel веб-запрос, — тогда Excel сам всё разнесёт по столбцам, и будет всё как на сайте.
Парсинг с помощью VBA. Какими способами возможно выделять необходимые данные с HTML страницы? 
 
Вот функция для извлечения тегов на базе регулярных выражений:
https://excelvba.ru/code/html
DoEvents ... Loop не даёт открывать другие книги Эксель в процессе работы.
 
Я думаю, такой вариант тоже не очень поможет
Если книги открываются в процессе работы макроса, — наверняка нужно и как-то работать с этими книгами.
Т.е. макросу лучше не работать в бесконечном цикле.
Для часов (хотя, к чему это вообще?) лучше применить запуск макроса по расписанию, раз в секунду, по Application.OnTime
Пример кода можно найти здесь:
Как открыть ссылку макросом НЕ через IE?, Как открыть ссылку браузером по умолчанию или MS Edge?
 
Вам уже второй простой проверенный код дали, из одной строки
Дальше будете искать коды и пробовать, или перечитаете то что я вам написал, насчёт сбоя в реестре из-за кривой установки браузера?
(и у вас после решения этой проблемы все эти макросы заработают без ошибок)
Как открыть ссылку макросом НЕ через IE?, Как открыть ссылку браузером по умолчанию или MS Edge?
 
Это не ошибка макроса
Это у вас в системе (windows) что-то криво установлено

Макрос делает то же самое, что вы сделали бы вручную, нажав в Windows в меню ПУСК пункт ВЫПОЛНИТЬ, вставив туда ссылку, и кликнув на ОК
Это стандартный функционал Windows (она понимает, что это ссылка, и её нужно отправить в браузер по умолчанию)
Если же у вас этот макрос выдаёт ошибку (а этот макрос у меня проверен более чем на 10 тысячах разных компов),
то искать проблему надо не в макросе, а откатывать windows до того состояния, когда она умела открывать ссылки.
Отображение картинки по ссылке из ячейки (макрос)
 
Пишите в личку. Контакты в профиле

Отказался от работы - бюджет не заинтересовал
Изменено: Игорь - 23 июн 2020 00:43:52
Поиск совпадений по нечетким данным: найти одинаковые адреса и обозначить их
 
Мила, не пытайтесь это делать средствами Excel (искать похожие адреса, предварительно не приведя их к единому написанию)
Все эти решения с нечетким поиском - весьма далеки от идеала на сегодняшний день
Процент ошибок (ненайденных совпадений, неверно найденных совпадений) будет настолько велик, что результат этой работы использовать не получится (всё равно придется вручную всё проверять)

Поищите макросы, разбивающие данные по столбцам (отдельно город, отдельно улица, отдельно дом)
Потом результаты работы этого макроса подправьте вручную (где что неверно найдет) - это не так сложно
И потом уже сравнивайте 2 таблицы по 3 столбца (тут уже всё будет совпадать, и ошибок будет минимум)
Как открыть ссылку макросом НЕ через IE?, Как открыть ссылку браузером по умолчанию или MS Edge?
 
Всё намного проще.
Одна строка кода (открывающая ссылку в браузере по умолчанию)
Код
CreateObject("WScript.Shell").Run "https://ExcelVBA.ru/"
Может ли макрос экселя - создать пустой файл определенного типа, как в контекстном меню
 
Да, можно
Сумма прописью VBA для UNICODE
 
Цитата
VBA не работает с UNICODE
хм.. а я думал, что работает
По крайней мере, с кириллицей в коде ничего не случится (VBA код не повредится), - если она установлена на компе пользователя, он увидит читаемое сообщение в 99% случаев (кроме редких русскоязычный пользователей с изначально англоязычной виндой, ибо там кодовая страница другая)
А если не установлена, — этот пользователь скорее всего русским языком не владеет, и нет никакого смысла выводить ему текст на русском языке.
Единственное, что в коде нельзя, - это названия макросов и кодовые имена листов / книг на кириллице (это может вызвать неработоспособность некоторых макросов)
Или я не угадал?
Робот для ставок в бк
 
Да, возможно
Специфика задачи такова, что видеоролики и книги тут вряд ли помогут. Скорее, опыт в программировании нужен (задача непростая)
Макрос в Excel+ Word, Генератор коммерческих предложений
 
Заказ свободен.
Ознакомился с ТЗ, - там много нюансов всяких, нужно макросы писать (готовым решением не обойтись),
а бюджет скромный.
Макрос в Excel+ Word, Генератор коммерческих предложений
 
Есть готовое решение
Пишите в личку. Контакты в профиле.
Быстрый доступ из макроса (через ADO) к массиву пар Ключ|Значение, хранящемся в текстовом файле
 
Цитата
bedvit написал:
Вообщем нужно более подробнее от Игоря, прямо по шагам, что делаем, с какими данными.
Спасибо, но в данном вопросе я воспользуюсь вариантом от Андрея (с бинарным поиском по файлу)
Конкретно этот функционал будет использоваться очень редко в надстройке, поэтому усложнять всё использованием отдельной dll не хочу.

PS: DLL пригодилась бы для других функций, которые проблематично / невозможно реализовать в VBA ввиду низкой скорости / утечек памяти, таких как многопоточная загрузка, преобразование JSON в XML, декодирование GZIP, и т.п.
Виталий, если можете написать под заказ такую DLL (с многопоточной загрузкой), пишите в личку, обсудим.
А с этими парами Ключ|Значение, будем считать, что вопрос решён (я получил ответы на все свои вопросы)
Изменено: Игорь - 30 май 2020 18:08:52
Быстрый доступ из макроса (через ADO) к массиву пар Ключ|Значение, хранящемся в текстовом файле
 
Андрей, спасибо, думаю такой вариант мне подойдет
Я как-то и забыл про поиск по упорядоченному массиву (привык искать перебором всех в цикле)
Учитывая, что чаще всего записей будет меньше 200-500 тысяч, должно работать быстро.
(а считывать и записывать в массив попробую через split / join, они вроде тоже быстро работают. Хотя, возможно, построчный Input и быстрее окажется)

БМВ, что мне пора отказываться от Excel, я давно уже понимаю (особенно когда речь про сложный код из 30 тысяч строк)
Но я из языков программирования знаю только VBA, потому и делаю в том в чём могу
(есть в планах заказать разработку аналогичного функционала в нормальной среде разработки, или в качестве веб-сервиса, но это все обойдется в семизначную сумму, и только ТЗ мне писать надо несколько месяцев. Потому и откладываю до поры до времени, стараясь выжать из VBA максимум возможного)
Быстрый доступ из макроса (через ADO) к массиву пар Ключ|Значение, хранящемся в текстовом файле
 
Андрей, спасибо, но мне никак нельзя использовать дополнительные библиотеки / файлы.
Этот код будет встроен в мою надстройку для Excel, которую и без того людям непросто установить и запустить (это ж надо разблокировать файл, макросы включить),
а тут нужно ещё какие-то файлы в нужные папки устанавливать (ради одной из 500 функций программы)
Слишком сложно это будет использовать на практике (хотя, как вариант, рассмотрю, если по-другому вообще никак).

Нужно что-то, что работает на чистом VBA (без использования библиотек, которых нет в стандартной поставке Windows + Office)

Думал, раз у меня в программе много где используется CreateObject("ADODB.Stream"), и это на всех компах работает, и CreateObject("ADODB.Connection") должен везде работать.
Но сейчас погуглил, - да, много где пишут про ошибку Provider cannot be found. It may not be properly installed.

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

Может, еще какие идеи есть? Что-нибудь есть встроенное в винду / Office для подобного?
Быстрый доступ из макроса (через ADO) к массиву пар Ключ|Значение, хранящемся в текстовом файле
 
Всем привет.
Появилась задача, которую не знаю каким способом лучше реализовать.

Проблема: нужно при работе макроса кешировать пары вида Ключ|Значение
(Имеем ключ. Если в текстовом файле уже есть пара для этого ключа, надо считать значение, а если нет, то позже из того же макроса дописать туда эту пару, когда станет известно значение). Файл предназначен для использования этих данных при следующих запусках макроса (каждый запуск макроса может немного пополнять этот файл)

Ситуация осложняется следующим:

1) количество пар, которые надо кешировать, от 200 тысяч до 2 миллионов (максимум - 5 млн)
Было бы из 10-20 тысяч, — считывал бы текстовый файл, и загонял в словарь (dictionary) или коллекцию, а потом бы из словаря / коллекции в цикле формировал текстовую строку, и перезаписывал файл.
Но при больших объемах записей, на заполнение словаря / коллекции будет уходить очень много времени, да и Excel жрёт сотни мегабайтов памяти (а таких текстовых файлов может быть несколько, для разных данных)

2) есть понимание, что нужно использовать что-то типа ADO, но ранее с ним не работал.
В каком формате хранить данные - csv, sql, mdb или ещё что-то, тоже не знаю (есть разница?)

3) всё это должно работать на любой версии Excel (2003-2019) под любой версией windows (XP-10) любой разрядности (32/64), причем работать это будет на тысячах разных компов, т.е. нужно что-то такое, что будет одинаково стабильно работать на любом компе.

4) при запуске макрос должен подключаться к файлу (но желательно не считывать всё его содержимое в память, ибо Excel не любит, когда он занимает в памяти 1 гиг), и иметь возможность через ранее установленное соединение БЫСТРО находить значение по ключу (или по массиву из 100 ключей получить 100 значений), а также сравнительно быстро дописывать новые пары Ключ|Значение (с перезаписью старых ключей, если вдруг такой ключ уже существует).

Вопросы:

1) что посоветуете использовать?
ADO? другие варианты?

2) Если ADO - это на всех компах будет работать?
Там у ConnectionString всего 2 варианта написания, для Excel версии ниже 11 и выше 11, и всё?
(одной из этих 2 строк подключения достаточно, чтобы обеспечить работу на любой версии Office?)

3) в каком формате хранить этот файл с данными?

4) реально ли, чтобы после команды добавления записи, не требовалось принудительное сохранение файла?
(чтобы если макрос внезапно завершил работу, не закрыв соединение, добавленные данные не потерялись)

5) как думаете, это совсем извращением будет, если хранить все эти данные в реестре Windows?
(записывая / считывая данные через штатные функции GetSetting / SaveSetting)
В принципе, ветку реестра можно экспортировать в файл, и импортировать на другом компе.
Просто загаживать реестр винды не хочется, хотя это было бы самым простым решением.


PS: прочитал кучу тем на форуме про использование ADO, но больше путаницы, чем понимания.
Почти во всех примерах - чтение данных с листа Excel, а с поиском записи в текстовом файле - особо примеров не нашёл.

В идеале хочу получить что-то примерно такого вида:
Код
Public Connections As Collection
' коллекция Connections содержит какие-то объекты, каждый объект - подключение к одному из файлов
' но только чтобы эта коллекция подключений не занимала кучу памяти в Excel


Function GetValue(ByVal key$, ByVal filename$) As String
    ' подключается к файлу filename$ (если подключение требуется, и ранее не установлено)
    ' ищет в нём ключ key$, и возвращает значение, соответствующее ключу
End Function

Sub SetValue(ByVal key$, ByVal value$, ByVal filename$)
    ' подключается к файлу filename$ (если подключение требуется, и ранее не установлено)
    ' и добавляет к нему запись key$|value$
End Sub
Изменено: Игорь - 28 май 2020 21:18:19
Запрет на отправку писем из VBA
 
Цитата
может еще есть какой-нибудь третий вариант?
Есть.
Найти предыдущую версию макроса (до ваших исправлений), и пользоваться ей

Цитата
если макрос подписать сертификатом, поможет ли это?
точно нет
Привязка файла к железу HDD, Нужен конкретный макрос привязки к железу к HDD
 
Нереально так сделать, только с использованием макроса (без сайта)
Вот выслали вы человеку файл, и он запустил файл на своем компе.
Откуда макрос узнает, первый это комп или второй?

Для второго компа человек возьмет файл не с первого компа, а высланный вами файл из почты.
Как макрос поймет, что ему нельзя работать?

PS: Любой файл НЕВОЗМОЖНО защитить от копирования
PPS: TheBestOfTheBest, видимо, волшебник, раз спрашивает бюджет и готов такое реализовать.

Впрочем, решение возможно, если вы лично будете устанавливать файл на комп пользователя (чтобы у него не осталась исходного непривязанного файла)
Изменено: Игорь - 25 май 2020 16:00:42
VBA, Парсинг - Поиск информации на web-странице и вставка результата в ячейку
 
Я бы примерно так написал:
Код
Sub Graber()
    Dim cell As Range
    For Each cell In Range("a2:a" & [B1]).Cells
        txt = GetHTTPResponse("http://" & cell)
        
        span = GetTags(txt, "span", "id", "label", "innerHTML 1")
        linkText = GetTags(span, "a", "", "", "ConvertToText 1")
        
        cell.Next = linkText
    Next cell
End Sub


Тут можно найти функцию VBA для извлечения тегов из HTML
https://excelvba.ru/code/html
а для скачивания - здесь:
https://excelvba.ru/code/GetHTTPResponse
Чтение содержания Immediate Window, Содержание Immediate Window
 
возможности есть. но оно вам точно надо?

вариант 1: простой, но коряво работающий:
через SendKeys (3-4 строки кода)

вариант 2: сложный, но более стабильный
через WinAPI
пример похожего кода (но для очистки этого окна) есть здесь:
http://dailydoseofexcel.com/archives/2004/06/09/clear-the-immediate-window/

PS: не вижу ни малейшей необходимости читать содержимое этого окна
получить данные через rest api
 
Андрей, так не работает (ответ получается в неверной кодировке)
Я бы не стал добавлять дополнительную функцию без надобности.
Срочно. Получение данных через rest API
 
Какой бюджет?
Напишите, подскажу что сделать
Контакты в профиле

=========
Сделал.
Изменено: Игорь - 17 май 2020 15:09:25
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 117 След.
Наверх