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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 124 След.
VBA извлечение данных из информации о документе PDF
 
Не обязательно использовать платные приложения.
Сторонняя программа нужна, да, - но есть и бесплатный вариант: exiftool.exe
(программа для извлечения метаданных из файлов десятков разных форматов)

Код
Sub test()
    MsgBox GetMetadata(ThisWorkbook.Path & "\Раздел 5. Подраздел 4.3.pdf", "Modify Date*")
    ' выводит результат 2024:06:20 22:18:58+03:00
End Sub

Function GetMetadata(ByVal filename$, ByVal meta$)
    On Error Resume Next: Dim cmd$
    AppPath$ = ThisWorkbook.Path & "\exiftool.exe"
    cmd$ = """" & AppPath$ & """ -""" & meta$ & """ -charset Cyrillic """ & filename$ & """"
    GetMetadata = ShellRun(cmd$)
    GetMetadata = Trim(Replace(Split(GetMetadata, ":", 2)(1), vbNewLine, " "))
End Function

Public Function ShellRun(sCmd As String) As String
    On Error Resume Next: Dim oShell: Set oShell = CreateObject("WScript.Shell")
    ShellRun = oShell.Exec(sCmd).StdOut.ReadAll
End Function


Нужно только скачать exiftool с официального сайта, и положить в папку с макросом файл exiftool.exe и подпапку exiftool_files
Изменено: Игорь - 27.12.2024 00:59:55 (исправил код)
Автоудаление изображения в Excel VBA
 
Здравствуйте
Вы используете вызов функции OnMouseOver из формулы.
Этот вызов работает как пользовательская функция (UDF).
У пользовательских функций есть ограничения - они не всё могут (часть кода не отрабатывает).
В частности, не срабатывает вызов метода OnTime (то есть вызов макроса через время не планируется)

Попытки запланировать запуск макроса через ExecuteExcel4Macro у меня тоже успехом не увенчались.
Простого решения я не придумал.
В интернетах предлагают решение этой проблемы через WinAPI (вызов SetTimer):
https://www.mrexcel.com/board/threads/udf-and-ontime-macro.327530/
Лично я бы не использовал такое, - может работать со сбоями
Обращение к UserForm из другого файла, в т.ч управление элементами формы
 
Можно было проще.
Для начала, нужно убрать слово Private в обработчиках событий формы
Т.е. меняем Private Sub CommandButton1_Click() на Sub CommandButton1_Click()
И в стандартный модуль (module1) файла ФОРМА.xls добавляем функцию для подключения к форме:
Код
Public Function GetForm()
    Set GetForm = UserForm1
End Function


и тогда начнут работать вызовы из другого файла вроде такого:
Код
Sub test3234()
    Set form = Run("Форма.xls!GetForm")
    form.Show
    form.Controls("textbox1") = 444
    form.CommandButton1_Click
End Sub
Изменено: Игорь - 18.07.2024 19:12:03
Изменение кодировки текстового файла, полученного при выгрузке из Excel
 
https://excelvba.ru/code/Encode
VBA. Плавное перемещение картинки на UserForm, Нужен цикл на плавное перемещение картинки за 3 секунды
 
я пробовал и Repaint (но он тут не в тему, - тут все перерисовывается и без того)
тут задача, скорее, отключать repaint этот (а такой возможности нет)
Можно ещё попробовать картинку другого формата (типа BMP под нужный размер), чтобы перерисовка выполнялась быстрее.

Пока писал ответ, придумал решение (Hugo подсказал словом фрейм) — стал пробовать вместо Image другие контролы (картинку-то вставить можно во что угодно, в Label например)
И внезапно решение нашлось — вместо элемента Image используем Frame (отключив рамку и очистив Caption, с виду всё будет как у контрола Image)
У Frame перерисовка не глючит, картинка плавно выплывает

Код будет такой: (поменять Image2 на Frame1, и тайминги с шагом)
Код
Private Sub CommandButton4_Click()
    Frame1.Left = -204
    For i = -204 To 200 Step 2
        Frame1.Left = i
        For j = 1 To 1000: DoEvents: Next
    Next
End Sub
VBA. Плавное перемещение картинки на UserForm, Нужен цикл на плавное перемещение картинки за 3 секунды
 
Мигания полностью никак не избежать - так криво сделана перерисовка картинки в Excel
Ради интереса потратил полчаса, что только не пробовал, мерцание полностью не убирается (и картинку менял, и все её свойства)
Иногда (с другой картинкой) помогает незначительное изменение высоты картинки, например, с 558 до 550 px

Код замените на такой:

Код
Private Sub CommandButton4_Click()
    Image2.Left = -204
    For i = -204 To 12 Step 3
        Image2.Left = i
        For j = 1 To 4000: DoEvents: Next
    Next
End Sub
Создать условие для макроса, подстановка даты
 
Код
Set Child = XML.createElement("date")
Child.Text = IIf(Range("start_common").Offset(13, 2) = "", "01.01", Range("start_common").Offset(13, 2))
stamp.appendChild Child
Обновление PQ с помощью макроса с ProgressBar, Имеется два кода на VBA, один из них на обновление баз данных из PQ, другой на отображение и работу ProgressBar. Нужно их объединить, но не понимаю как это сделать
 
Никак это не объединить
Нужно:
1) выполнять обновление в фоновом режиме ( BackgroundQuery = TRUE)
2) полностью переписывать код прогрессбара
макрос открыть гиперссылку
 
просто удалите эту строку кода
макрос открыть гиперссылку
 
Не понятно, зачем в вашей формуле вставлена функция СЦЕПИТЬ
Формула должна выглядеть примерно так: =ГИПЕРССЫЛКА ("https://google.com/" & D4; D4)

Код
Sub FollowFormulaHyperlink()
    ' макрос открытия формульной гиперссылки из активной ячейки
    URL$ = GetCellHyperlinkAddress(ActiveCell) ' получаем ссылку
    CreateObject("WScript.Shell").Run URL$ ' открываем её
End Sub

Function GetCellHyperlinkAddress(ByRef cell As Range, Optional AllowInactiveURL As Boolean = False) As String
    On Error Resume Next
    Dim v$
    With cell.MergeArea.Hyperlinks(1)
        GetCellHyperlinkAddress = .Address
        If Len(GetCellHyperlinkAddress) Then
            If Len(.SubAddress) Then GetCellHyperlinkAddress = GetCellHyperlinkAddress & "#" & .SubAddress
            
            If GetCellHyperlinkAddress Like "..*" Then GetCellHyperlinkAddress = cell.Worksheet.Parent.Path & "\" & Replace(GetCellHyperlinkAddress, "/", "\")
            Exit Function
        End If
    End With   
    
    Dim txt$, Brackets&, Quotes&, i&
    If GetCellHyperlinkAddress = "" Then
        If cell.Formula Like "=HYPERLINK*" Then
            txt$ = Mid$(cell.Formula, 12)
            txt$ = Left(txt, Len(txt) - 1)
            For i& = 1 To Len(txt)
                Select Case Mid(txt, i, 1)
                    Case "(": Brackets& = Brackets& + 1
                    Case ")": Brackets& = Brackets& - 1
                    Case """": Quotes& = Quotes& + 1
                    Case ","
                        If (Brackets& = 0) And (Quotes& Mod 2 = 0) Then
                            txt = Left(txt, i - 1)
                            Exit For
                        End If
                End Select
            Next
            GetCellHyperlinkAddress = Evaluate(txt)
        End If
    End If
    Err.Clear
End Function
Изменено: Игорь - 18.06.2024 14:46:40
Пропали пункты в контекстном меню VBA Project, При попытке удалить модуль — нет соответствующего пункта "удалить"
 
Она останавливает запущенные макросы
Пропали пункты в контекстном меню VBA Project, При попытке удалить модуль — нет соответствующего пункта "удалить"
 
Нажмите кнопку СТОП, и пункт появится
Изменено: Игорь - 17.06.2024 17:40:33
VBS-скрипт открывает новый экземпляр Excel, но не подключает надстройку.
 
Цитата
пока идут эти 7-8 минут я запускаю vbs-скрипт
А вот если ненадолго забыть про существование макросов, то проблема решается элементарно:
Нажимаем Пуск - Программы - Excel
И запускается новый экземпляр Excel со всеми подключенными надстройками
Вставка из буфера обмена
 
Здравствуйте.
нужно ОДНОЙ СТРОКОЙ писать, что куда копировать: ЧтоКопировать.Copy КудаКопировать
Примерно так:
Код
Range("a1:a5").Copy Range("b8")

в вашем случае, что-то вроде такого:
Код
objXls5.Sheets("Реестр").Range("W6:X" & llastr).SpecialCells(12).Copy  objXls6.Sheets("Форма").Range("H" & llastr2)

и никаких пауз!
Изменено: Игорь - 27.05.2024 17:00:52
Выполнение команд CMD в Excel с записью результата в ячейке, Перенести данные из CMD в ячейку
 
Цитата
Дело в том, что архив, в моём случае — это "*.xlsx.zip",
я прекрасно понял, для чего этот код
я использую его для извлечения картинок из файла Excel, и работает все чётко и сравнительно быстро даже на больших файлах
(но я в основном через WinRAR это делаю)
мой код проверен на сотнях разных компов, везде работает
И получение всех файлов с просмотром подпапок там есть - см. последний вариант кода в статье
Изменено: Игорь - 21.05.2024 16:19:55
Выполнение команд CMD в Excel с записью результата в ячейке, Перенести данные из CMD в ячейку
 
Jack Famous, если нужно разархивировать и получить список файлов, то без чтения ответа из командной строки можно обойтись:
https://excelvba.ru/code/UNZIP
Макрос отправки писем, Нужен макрос для почтовой рассылки outlook
 
Есть готовое решение
Стоит 2100 руб. Пробный период 5 дней
Контакты в профиле
VBA. Скачивание файла с google.drive → размер через код - меньше.Ошибка, Использую собственную надстройку, нужно автообновление для коллег
 
У вас не файл загружается, а текст с сообщением об ошибке / какой-то HTML код
Вот этот скачанный файл размером 2кБ откройте в Блокноте, и посмотрите что там написано.

а написано там вот что:
Цитата
<!DOCTYPE html><html><head><title>Google Диск: Квота превышена</title>...

Сейчас вы не можете просматривать и скачивать этот файл.

В последнее время этот файл слишком часто просматривался или скачивался. Повторите попытку позже. Если файл очень большой или доступен большому числу пользователей, возможен отказ в доступе к нему в течение ближайших суток. Если через 24 часа ситуация не изменится, обратитесь к администратору домена.
Дождаться полной загрузки сайта, MSXML2.ServerXMLHTTP.6.0
 
Если нужен IE - зачем используете компонент "MSXML2.ServerXMLHTTP.6.0" ?

XMLHTTP60 использует WinInet HTTP стек (вместе с Internet Explorer)
ServerXMLHTTP60 использует WinHttp стек (как и компонент WinHttpRequest)

Вам нужно использовать либо CreateObject("MSXML2.XMLHTTP"), либо запускать IE
А вы сейчас прописываете прокси для IE, а потом используете компонент, не связанный с IE
Ну или не знаю какой код вы там используете (вы даете куски кода, да еще и с IE не связанные, — гадать что там у вас нет желания)

тем более, если несколько раз всё работает, не понятен сам вопрос, как "зайти через IE под прокси"
(нагуглите код работы с IE через VBA, например по фразе vba IE set proxy)
чтобы прокси применялся, можно попробовать первый ответ из этой темы:
https://stackoverflow.com/questions/55362424/toggle-internet-explorer-proxy-from-excel-vba
Дождаться полной загрузки сайта, MSXML2.ServerXMLHTTP.6.0
 
Если использовать браузер IE - то недостаточно проверять только .readyState = 4, надо ещё .Busy проверять
Например, ждем готовности браузера IE, но не более 2 секунд:
Код
        TimeStamp = Timer
        Do While (.Busy = True) Or (.readyState <> 4)
            DoEvents
            If Abs(Timer - TimeStamp) >= 2 Then Exit Do
        Loop


Если же работаем БЕЗ браузера (как у вас, компонент MSXML2.ServerXMLHTTP.6.0), то ничего вы не дождётесь
Ибо тут скрипты не отрабатывают, и, соответственно, ничего не догружают, — сколько сайт выдал данных, столько и выведется.

Вы решили совместить 2 принципиально разных кода (взяли рабочий код для MSXML2.ServerXMLHTTP.6.0, и засунули туда кусок кода от работы с браузером), — так не прокатит.

Возможно, проблема в прокси (который обрезает часть данных / выдаёт их не совсем корректно)
Изменено: Игорь - 04.02.2024 10:03:40
Банковские выписки, Агрегировать данные из нескольких банковских выписок в одну таблицу
 
Сделал, оплату получил
Изменено: Игорь - 01.12.2023 15:08:42
Microsoft Web Browser не корректно отображает сайты., Форма с объектом Microsoft Web Browser не корректно отображает сайты (нет картинок или не грузит)
 
Цитата
возможно по одному нажатию этого не получится реализовать
получится, если всё правильно сделать

Selenium управляет браузером, там есть возможность одной командой снять скриншот в файл (формата Png, Jpeg, Gif, Tiff или Bmp)
Код
WebDriver.GetScreenshot.SaveAsFile filename$, 1

Причем, либо всей страницы, либо заданной области (конкретного тега типа DIV или SECTION)
К тому же, можно один раз (предварительно) задать вручную размеры окна браузера, и для каждого сайта масштаб страницы.
Microsoft Web Browser не корректно отображает сайты., Форма с объектом Microsoft Web Browser не корректно отображает сайты (нет картинок или не грузит)
 
Здравствуйте.
Microsoft Web Browser = Internet Explorer
Этот браузер устарел, и не все сайты в нём отображаются как надо.
К сожалению, среди компонентов на форме, других вариантов нет (либо IE, либо ничего)

Есть 2 варианта создания скриншотов для ваших сайтов:
1) использовать запросы к веб-сервису типа s-shot
2) открывать страницы в браузере Chrome через Selenium (там есть возможность снять скриншот страницы)

И то и другое делается макросами (готового кода нет для примера)
Перерисовка объектов занимает длительное время, Перерисовка объектов занимает длительное время
 
Цитата
Павел К написал:
Добавляю Shapes, я так.
А, может, не добавлять вообще эту тысячу фигур? зачем их столько на листе?
И проблема исчезнет..
как создать формулу для поиска по артикулу на сайте WB, первый столбец артикулы второй нужны ссылки на сайт с этим товаром
 
Формула =ГИПЕРССЫЛКА("https://www.wildberries.ru/catalog/" & A1 & "/detail.aspx")
Отправляет на страницу товара
как создать формулу для поиска по артикулу на сайте WB, первый столбец артикулы второй нужны ссылки на сайт с этим товаром
 
если в ячейке A1 у вас артикул (например, 84759556)
то в ячейке B1 напишите формулу
="https://www.wildberries.ru/catalog/" & A1 & "/detail.aspx"
Геокодер (Яндекс Карт API )
 
Пишите в личку, контакты в профиле

PS: заказ свободен
изначально заказчик хотел РЕЗУЛЬТАТ (я мог его предоставить), сейчас же он хочет макрос
Но упорно не хочет понять, что для задачи нужно подбирать подходящий инструмент (в данном случае ГЕОКОДЕР),
а не первый попавшийся с большим числом бесплатных запросов в сутки.
Изменено: Игорь - 18.07.2023 16:51:09
Геокодер (Яндекс Карт API )
 
Короче, я могу сделать, но повторю вопросы:
1) вам это надо сделать разово, или часто хотите делать?
2) сколько готовы заплатить?
3) вам нужен результат (в файле Excel) или макрос?
Изменено: Игорь - 17.07.2023 19:16:33
Геокодер (Яндекс Карт API )
 
Так вы поэтому хотите использовать именно JavaScript API, — чтобы обойти лимит на 1000 бесплатных запросов с одного АПИ ключа?

PS: вы вообще понимаете, что такое JavaScript API, где и как он работает? Почему вы противопоставляете это HTTP запросам?
В вашем случае нужен именно HTTP геокодер
Изменено: Игорь - 17.07.2023 19:18:12
Геокодер (Яндекс Карт API )
 
Разово?
Нужно либо штук 20-30 бесплатных АПИ ключей для геокодера, либо оплачивать (там недешево)
Какой у вас бюджет на всё это дело?
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 124 След.
Наверх