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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 118 След.
Автоподхват excel vba вложений с неизвестным окончанием
 
Функция =DIR("маска имени файла со звездочкой")
вернёт вам название файла

примерно так я бы попробовал:

Код
sAttachment=""
mask$ = "\\ip\TNS_Loyalty\GOODSANDGROUPS_Import_AddOrUpdate_" & Sheets("Лист1").Range("A1") & "*.xml"
filename$ = dir(mask$)
if len(filename$) then sAttachment = "\\ip\TNS_Loyalty\" & filename$
power bi парсить сайт с рекламой
 
Для контроля трафика есть спец. программы. Например, Fiddler
Покажет все исходящие запросы и ответы на них.
Пользовательский вариант склонения ФИО в родительный и дательный
 
Судя по кодовому имени проекта VBA, вы просто взяли этот мой файл за основу, и слегка переделали вызов функции, а теперь выкладываете как своё.

Добавлено позже
Хотя нет, код заметно доработан. Так что претензий нет.
Изменено: Игорь - 22.04.2021 17:26:46
Макрос для парсинга цен по списку ссылок
 
Выполнимо всё, если денег много
Вы бы свой ориентировочный бюджет на всё это дело озвучили, - тогда может и предложения бы поступили
По другим сайтам я бы сразу озвучил стоимость, а за эти 2 сайта браться не хочется (ибо не смогу гарантировать работу на большом количестве ссылок, и не хочется в дальнейшем сталкиваться с постоянными просьбами решить очередную проблему с обходом блокировки сайта)
Макрос для парсинга цен по списку ссылок
 
Так там можно настроить все и без кодов этих (применив другой способ получения данных со страницы)
Проблема в другом, - собственно, загрузить код страницы.
Для сайта market.yandex.ru страницы у вас перестанут грузиться после 2-3 запросов, а для сайта ozon - после 10-150 запросов.
То есть вся сложность именно в обходе блокировок сайта.
А с загруженной страницы данные взять всегда можно, неважно каким способом (просто вы предложили наименее универсальный способ)
Изменено: Игорь - 21.03.2021 00:22:23
Макрос для парсинга цен по списку ссылок
 
Здравствуйте.
Вообще, я последние годы только таким и занимаюсь (настройка мониторинга цен), но тут откажусь, из-за проблемных сайтов ozon и market.yandex.ru
Если с озоном ещё не так всё плохо (хотя в феврале 2021 озон начал блокировать парсеры, так как начал сам продавать отчеты по товарам), то с market.yandex.ru всё сложнее, ибо их защиту обойти непросто (нужны прокси-серверы, и/или автоматическое решение капчи)
Wildberries до февраля 2021 был беспроблемным, но сейчас там частично отключено API (для новых товаров с ID>20.000.000), так что там тоже свои заморочки.
Таким образом, вы отобрали 3 самых проблемных российских сайта (с остальными 99% сайтов вообще никаких проблем нет), поэтому выгоднее отказаться, чем делать это за небольшие деньги.

PS: то, что вы написали на листе Площадки Коды страниц, это всё не нужно.
К этим названием классов для сайтов ozon и market.yandex.ru привязываться нельзя (они постоянно меняются, — будете раз в неделю перенастраивать парсер). Там всё сложнее намного надо настраивать.
Удалить или закрыть незакрытые HTML теги
 
Не ответил я, потому что готового макроса у меня нет, и ваш html уж слишком повреждён.
Вы откуда такой кривой html берёте? Уж не вырезаете ли кусок строки заданной длины из корректного html?

Совет: открываете этот html в браузере (IE) или другом контейнере типа CreateObject ("htmlfile")
и потом считываете содержимое. Теги откорректируются автоматически.
Excel не грузит xlsx-файл из интернета. И сам вылетает. Причина ?
 
Какие-то проблемы с вашим Excel (скорее всего причина в нём, раз он вылетает)
У меня по вашей ссылке файл загружается и открывается.
Как нажать кнопку(control As IRibbonControl) из надстройки?
 
Замените
Код
Sub myButton(control As IRibbonControl)

на
Код
Sub myButton(OPTIONAL control As IRibbonControl)


тогда макрос myButton можно будет вызывать без параметра
Работа с InternetExplorer: получение выписки ЕГРН после заполнения поля на сайте, Запуск (отработка) событий на сайте
 
Значит, какое-то другое событие нужно генерировать (а не одно из трех, которые я прописал),
или для другого элемента страницы (родительского элемента поля, например)
Мой способ проверен на множестве сайтов, - если правильный объект передать (EL As Object) в функцию, и задать нужное событие, то скрипт обработает это событие.

ну и Dim IE As InternetExplorer должен быть объявлен ВНЕ вашего макроса,
иначе моя функция просто не видит, что это за объект IE, к которому идет обращение
Работа с InternetExplorer: получение выписки ЕГРН после заполнения поля на сайте, Запуск (отработка) событий на сайте
 
Добавьте в конец кода функцию
Код
Sub IE_RaiseEvents(ByRef EL As Object, ByVal events$)
    On Error Resume Next
    Dim eventObj As Object, event_name
    events$ = Replace(events$, ";", ",")
    
    For Each event_name In Split(events$, ",")
        EL.raiseEvent "on" & event_name        ' for IE8
        
        Set eventObj = IE.document.createEvent("HTMLEvents")
        eventObj.initEvent event_name, True, False        ' for IE9 or newer
        EL.dispatchEvent eventObj
    Next
    Set eventObj = Nothing
End Sub


а в ваш макрос, после строки ColElements(4).Click
строки
Код
IE_RaiseEvents ColElements(4), "click,keydown,change" 
Получение куков из уже залогиненного в Хроме сайта
 
Через Chrome - никак, или очень сложно
Если же использовать IE, то оттуда легко взять куки как с открытой страницы (1 строка кода), так и из файлов cookie (20 строк кода)
В большинстве случаев достаточно взять cookie из документа:
Цитата
res = IE.document.Cookie

Из файлов Cookie взять данные посложнее, примерно так:
Код
Function GetIECookiesFromFiles(ByVal domain$, Optional Apply As Boolean, Optional ExcludeUseless As Boolean) As String
    On Error Resume Next
    Dim sCookiesPath$, oCookies As Object, oFSO As Object, oFolder As Object, oFile
    Dim sContent As String, a() As String, i As Long, aItems, aCookies()
    
    ' read IE cookie files
    sCookiesPath = CreateObject("shell.application").Namespace("shell:Cookies").self.path
    Set oCookies = CreateObject("Scripting.Dictionary")
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = oFSO.GetFolder(sCookiesPath)
    For Each oFile In oFolder.files
        If LCase(oFSO.GetExtensionName(oFile.Name)) = "txt" Then
            With oFile.OpenAsTextStream(1, 0) ' read-only, ascii
                sContent = .ReadAll
                .Close
            End With
            sContent = Replace(sContent, vbCr, "")
            ' split cookies within file
            a = Split(sContent, vbLf & "*" & vbLf)
            For i = 0 To UBound(a) - 1
                If InStr(1, a(i), domain$, vbTextCompare) > 0 Then oCookies.Add oCookies.Count, a(i)
            Next
        End If
    Next
    
    ' parse data, repack to 2d array
    aItems = oCookies.Items()
    If UBound(aItems) = -1 Then Exit Function
    
    If CookiesStore Is Nothing Then Set CookiesStore = New Dictionary        ' глобальный словарь с cookies
    ReDim aCookies(1 To UBound(aItems) + 1, 1 To 6)
    Dim param_name$, param_value$, NewCookiesList$
    
    For i = 1 To UBound(aItems) + 1
        a = Split(aItems(i - 1), vbLf)
        aCookies(i, 1) = a(0)
        aCookies(i, 2) = a(1)
        aCookies(i, 3) = a(2)
        'aCookies(i, 4) = GetInetCookieFlags(a(3))
        'aCookies(i, 5) = ConvDT(a(4), a(5))
        'aCookies(i, 6) = ConvDT(a(6), a(7))
        
        
        param_name$ = "": param_value$ = ""
        param_name$ = a(0)
        param_value$ = a(1)
        
       ' If ExcludeUseless Then param_name$ = ExcludeUselessCookie(param_name$)        
        
        If Len(param_name$) Then
            NewCookiesList$ = NewCookiesList$ & IIf(NewCookiesList$ = "", "", vbLf) & param_name$
            GetIECookiesFromFiles = GetIECookiesFromFiles & IIf(GetIECookiesFromFiles = "", "", "; ") & param_name$ & "=" & param_value$
            
            If Apply Then CookiesStore.item(param_name$) = param_value$
           Debug.Print  "Set cookie from IE cookie file" & param_name$ & " = " & param_value$
        End If
    Next   
End Function
Создать макрос Excel для парсинга данных с сайта, нужно использую ссылку в ячейке документа заполнять столбец в таблице строкой, с информацией которая есть на сайте.
 
Цитата
Нужно обязательно снабдить код комментариями
Уверены, что разобраться сможете потом в этом коде?
Получение токенов, BASIC авторизация, поддержка Cookies, всякие непростые POST запросы
Там без комментов к коду это всё бы заработало..

Цитата
использовать только стандартные функции и методы
а как определить, та или иная функция стандартная или нестандартная?

Бюджет бы свой озвучили сразу, - это ускорило бы поиск исполнителя
VBA скачать файл с сайта
 
Проблема с формированием ссылки на скачивание файла
У вас в ссылке пробелы, их там быть не должно
Нужно перекодировать строку (перед дописыванием к ссылке) в URLEncode:
https://excelvba.ru/code/URLEncode

Цитата
Oleg Boyaroff написал:
после авторизации там еще используются куки
В данном варианте кода это, скорее всего, не критично
Компонент MSXML2.XMLHTTP, который используется к коде (в отличие от WinHTTPRequest) использует стек WinINET (общий с браузером IE), потому сохранение всех этих Cookies выполняется автоматически
(можно вообще не настраивать авторизацию в макросе, а один раз вручную авторизоваться в браузере IE, и макрос будет работать с сайтом уже авторизованный)

Цитата
Joker097 написал:
респонсТекст пустой если что..
в данном случае (бинарный ответ) нужно использовать .responseBody (перекодируя через ADODB.Stream)
Пример кода:
Код
СодержимоеФайла= GetHTTPResponse (URL$, "utf-8") 

Код
Function GetHTTPResponse(ByVal URL$, Optional ByVal Encoding$) As String
    On Error Resume Next
    Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
    With oXMLHTTP
        .Open "GET", URL$, False
        .Send
        If Len(Encoding$) Then
            With CreateObject("ADODB.Stream")
                filename$ = Environ("tmp") & "\response.txt"
                .Charset = Encoding$: .Type = 1        ' adTypeBinary:
                .Open: .Write oXMLHTTP.ResponseBody
                .SaveToFile filename$, 2
                .Type = 2        'adTypeText
                .LoadFromFile filename$
                GetHTTPResponse = .ReadText
                .Close
            End With
        Else
            GetHTTPResponse = .ResponseText
        End If
    End With
    Set oXMLHTTP = Nothing
End Function
Изменено: Игорь - 08.02.2021 14:15:53
VBA скачать файл с сайта
 
В предыдущей теме я вам ответил
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=136857
или вы не читаете ответы в своих темах?
Защита книги
 
Вся эта защита от честного / ленивого пользователя
Любая защита с макросов снимается за минуту
Попробуйте готовые платные решения, типа такого:
https://www.spreadsheet1.com/unviewable-vba-project-app-for-excel.html

Цитата
все это бесполезно и как написано на большинстве форумов и сайтах
если везде пишут, что это бесполезно, - с чего вы взяли, что может быть иначе?

PS: защиту можно сделать, с использованием сайта (какие-то простейшие вычисления выполняются на сайте, макрос не работает без доступа к сайту, проверка лицензии и пробного периода выполняется на стороне сайта). Но это сложно / дорого / вряд ли кто-то возьмётся вам это делать
VBA и запрос POST для авторизации на сайте Status 500
 
Здесь примеры посмотрите, - поймёте, чего не хватает:
https://excelvba.ru/code/GetHTTPResponse
Генерировать Word-документы по каждой однотипной позиции под требования отдела закупок
 
Цитата
aequit написал:
встречал плавающие ошибки (редко и на определенных компьютерах), которые излечивались заменой позднего связывания на раннее
нет никаких ошибок нигде
но только если код правильно написан
(какое связывание используется, значения не имеет)
Макрос для склеивания ячеек и вставки в них изображений., Макрос для склеивания ячеек и вставки в них изображений.
 
Цитата
Cжатие изображений перед вставкой
ха-ха
и при этом вы мне пишете, что моё решение очень дорого?
посмотрим, за сколько вам напишут макрос со сжатием изображений, как в моей надстройке
(учитывая, что это одна из немногих команд Excel, которую не выполнить из макроса)

хоть бы бюджет свой озвучили, чтобы люди вам зря не писали
Макрос для склеивания ячеек и вставки в них изображений., Макрос для склеивания ячеек и вставки в них изображений.
 
Есть готовый макрос, умеющий делать всё описанное вами
Стоит 1700 руб
10 дней пробного периода (можете настроить и протестировать)
Настраивать просто, за минуту можно справиться.
Отправил ссылку на скачивание в личные сообщения
Как сохранить/открыть скачанный файл в Internet Explorer, Вы хотите открыть или сохранить файл?
 
Вот это всё вообще не нужно
Чтобы скачать файл, - не нужно использовать браузер, не нужно нажимать программно кнопки
Просто 1-2 строки кода
(но поскольку вы не озвучили, что и для чего хотите сделать, что откуда скачать, а изначально пошли самым сложным путём, потому простого решения вам и не предложили)
Как кликнуть кнопку в internet explorer через vba?, нажать на кнопку "Скачать" для скачивания таблицы
 
Здравствуйте.
Во-первых, не .Submit а .Click
Во-вторых, не надо изобретать несуществующие методы типа getelementbyclassname

Задам примерно направление, куда копать:
Код
IE.Navigate ...

Do While IE.Busy Or (IE.ReadyState < 4)
    DoEvents ' ждем пока страница прогрузится
Loop

Dim objEL As Object, SearchRange As Object
Set SearchRange = IE.document.body.GetElementsByTagName("button")
For Each objEL In SearchRange ' перебираем все теги button
    If objEL.outerHTML Like "*button2_role_download*" Then
        objEL.Click
        Exit For
    End If
Next objEL
Изменено: Игорь - 20.01.2021 20:55:31
Надстройка XLibraryDisplay
 
А разблокировать файл не забыли после скачивания?

Смотрите причины №№ 1,3,5 в этом списке:
https://excelvba.ru/faq/addin_toolbar
Запрос файлов cookie при загрузке веб-страницы
 
Просто отключите вывод этих уведомлений в настройках Internet Explorer
(как именно - загуглите по тексту уведомления)

Например, так можно решить проблему:


Вообще, проблема весьма редкая (если бы такое случалось чаще, чем на 1 из 100 компов, я бы об этом знал)
Видимо, у вас нестандартные настройки Internet Explorer (например, отключен приём этих Cookies)
Изменено: Игорь - 25.12.2020 15:38:57
Win XP - тест возможности создания временного файла в папке Пользователя средствами VBA
 
Цитата
Environ; прочитал, будто она не всегда работает
всегда. проверено лично на десятках тысяч компов
это системная папка, с чего ей не работать-то

Цитата
не помешает список "всех возможных SpecialFolders"
так гуглится же за минуту
вот, например
http://scriptcoding.ru/2013/06/27/wscript-shell-specialfolders/

Цитата
тест возможности создания временного файла в папке Пользователя
можно и не тестировать, - всё будет работать
Написание макроса для создания QR кода в ексель, Написание макроса
 
Есть готовое решение (позволяющее формировать квитанции сразу с QR кодами, без лишних макросов)
https://excelvba.ru/programmes/FillDocuments/manuals/barcodes_and_images
стоит 1600 руб
Экспорт/импорт модулей при открытии книги
 
Цитата
Неудобство заключается в том, что мне постоянно приходится править в код в нескольких файлах
ну так и сделайте ОДИН файл с макросами - надстройку

Цитата
как реализовать импорт макроса (в которых хранятся функции) пользователю при открытии экселевской таблицы и удаление этого макроса при закрытии
плохая идея
не в том направлении думаете
Получить с веб-страницы текст, который заключен между двумя тегами
 
Цитата
Универсальность этого макроса в том, что он подойдет к любому сайту, только URL меняй
ага... если бы всё было так просто
новое имя класса добавилось - ничего не найдено
к тегу добавился id или любой другой атрибут - формулу переписываем
любой лишний пробел в теге span - ничего не найдено

надо искать СОДЕРЖИМОЕ конкретного тега (найдя тег по id или классу), а не брать содержимое между 2 кусками текста

Цитата
что-то подобное, бесплатное и без надобности что-то дорабатывать?
оставьте любые 2 из этих трёх пожеланий, - и тогда найдёте)
При загрузке программы, Ексель уходит в ошибку., Прекращена работа программы Microsoft Excel
 
нет, не правильно
(не везде надо LongPtr писать вместо Long)

пример правильного написания:
Код
#If VBA7 Then
    Private Declare PtrSafe Function SetWindowPos _
        Lib "user32" (ByVal hwnd As LongPtr, ByVal hWndInsertAfter As LongPtr, _
        ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
#Else
    Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
        ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
#End If


думаю, там ещё в вызовах функций есть ошибки
короче, исправлять много и долго
При загрузке программы, Ексель уходит в ошибку., Прекращена работа программы Microsoft Excel
 
Цитата
почему редактор VBA меняет код  .value
не обращайте на это внимания
возможно, где-то в вашем коде объявлена переменная value (с маленькой буквы)

Цитата
Ексель уходит в ошибку
одна из WinAPI функций объявлена неверно
или ей передаются недопустимые параметры при вызове
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 118 След.
Наверх