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

Страницы: 1
Скопировать содержимое pdf файла
 
Цитата
написал:
Есть ещё вариант использования доп. софта (программа .exe, которая вызывается через командную строку с передачей пути к ПДФ файлу через параметры командной строки, — в ответе получаем текст файла пдф)
ну я в общем-то этот путь и рассматриваю как альтернативу, просто хотелось без доп софта
Скопировать содержимое pdf файла
 
Есть ли какой-то способ с помощью макроса скопировать все содержимое открытого pdf файла без применения SendKeys? В pdf файле только текст.
On Error Resume Next не пропускает условие
 
Цитата
написал:
Цитата
Evgeny-E написал:
А можно ли сделать так, чтобы макрос пропускал всё условие целиком?
 
Код
    [URL=#]?[/URL]       1  2  3  4  5  6  7  8  9  10  11      Sub   test()          a =   "abc"          On   Error   Resume   Next          If   a   Then              if err.number then                 err.clear              else                 b = 123              end if          End   If    End   Sub   
 
Но это опять же добавлять по еще одному условию к каждому уже существующему условию.
Я предполагал, что возможно помимо On Error Resume Next и On Error GoTo есть что-то типа On Error [какой-то неизвестный мне оператор], который делал бы то что мне нужно или что-то похожее  :)  
On Error Resume Next не пропускает условие
 
Цитата
написал:
А чем Вам On Error GoTo удобнее при описанной Вами же ситуации?
Просто этот метод привычнее, т.к. я уже так раньше делал, а Err.Number раньше не пробовал. Плюс с Err.Number появятся дополнительные end if к тем условиям, которые уже есть, это немного путает. Но в целом эти два метода примерно одинаковые в плане удобства.

Цитата
написал:
приведенные Вами примеры условий возникновения ошибок далеки от реальности на мой взгляд
Я просто для примера написал. А вообще у меня условие, в котором сравниваются значения из ячеек cells(x,y), причем x и y могут в некоторых случаях быть не заданы.

Если делать как вы предложили через IfIsErr(cells(x,y)), то опять же это еще одно условие как в случае с Err.Number
On Error Resume Next не пропускает условие
 
Цитата
написал:
Цитата
Evgeny-E: Это не совсем то.
это просто вы не понимаете, что написано. Ігор Гончаренко вам всё правильно сказал:  On Error Resume Next  пропускает вываливание в дебаг,  Err.Number <> 0  говорит о том, что ошибка случилась и можно с этим что-то сделать.  Er..Clear  обнуляет  Err.Number , чтобы проверять очередное выражение на ошибку.
Я правильно понимаю, что проверять значение Err.Number придется перед каждым условием? Если да, то мне кажется проще сделать через On Error GoTo.
On Error Resume Next не пропускает условие
 
Цитата
написал:
Код
    [URL=#]?[/URL]       1  2  3  4  5  6  7  8      Sub   test()        Dim   a$, b&, c   As   Boolean        a =   "abc"        On   Error   Resume   Next        c = a        If   Err   Then   Err.Clear   Else   If   c   Then   b = 123        MsgBox b    End   Sub   
 
Это не совсем то. Но я наверное объяснил плохо, попробую по другому.
Код
Sub test()
    a = Cells(1, 1)
    b = Cells(2, 1)
    
    If a Then
        c = 123
    End If
    
    If b Then
        d = 234
    End If
    
End Sub
Переменные a и b могут быть логическими, а могут и нет. Причем они необязательно имеют один и тот же тип, т.е. a может быть логической переменной, а b строкой. Мне нужно чтобы если в первом условии возникает ошибка, а во втором нет, то пропускается только первое условие. Если ошибка только во втором условии, то пропускается только второе. Если в обоих, то оба.
On Error Resume Next не пропускает условие
 
Здравствуйте.
Вот пример кода:
Код
Sub test()
    a = "abc"
    On Error Resume Next
    If a Then
        b = 123
    End If
End Sub
Поскольку в условии возникает ошибка, макрос пропускает строку с If и продолжает выполнять код дальше. А можно ли сделать так, чтобы макрос пропускал всё условие целиком? Т.е. не присваивал бы значение переменной b в случае ошибки.

Знаю, что можно сделать через On Error GoTo:
Код
Sub test()
    a = "abc"
    On Error GoTo prodolgenie
    If a Then
        b = 123
    End If
prodolgenie:
End Sub
Но у меня несколько условий подряд, On Error GoTo придется прописывать для каждого условия, было бы удобнее скопом через On Error Resume Next если это вообще возможно.
Изменено: Evgeny-E - 13.02.2023 09:51:53
Выбор из выпадающего списка на html странице через vba
 
Переключать-то переключает, но там сама форма для заполнения должна меняться. Для measurements форма содержит одни поля, а для docs_expertise уже другие. Если вручную переключить, то это все норм, а если макросом, то не работает  :(

Если делать макросом, то форма как на скрине 1. А если все делать вручную, то форма как на скрине 2. Правильно на втором.
Изменено: vikttur - 12.12.2021 12:10:43
Выбор из выпадающего списка на html странице через vba
 
Пытаюсь написать макрос, который должен заполнять форму на сайте. В форме есть выпадающий список, и в зависимости от того, какой элемент выпадающего списка будет выбран, меняется и сама форма.

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

Код макроса:
Код
Sub тест()

Dim oIE As Object

Set oIE = CreateObject("InternetExplorer.Application")
oIE.Visible = 1
s = "http://support.fsa.gov.ru/"
oIE.Navigate (s)
Do While oIE.busy Or (oIE.ReadyState <> 4): DoEvents: Loop
                 
Set Start = oIE.Document.getElementsbyTagname("a")
Start(13).Click

Set SelectList = oIE.Document.getElementsbyTagname("Select")
SelectList(19).Value = "measurements"

End Sub
Не обновляются данные, полученные макросом через api
 
Спасибо!

На всякий случай напишу, если у кого-то похожая проблема возникнет. Целиком код должен выглядеть так:
Код
Sub test()

    Dim httpObject As Object
    Set httpObject = CreateObject("MSXML2.XMLHTTP")
    
    URL = "https://www.bitmex.com/api/v1/orderBook/L2?symbol=XBTUSD&depth=3"
    httpObject.Open "GET", URL, False
    httpObject.setRequestHeader "If-Modified-Since", "Mon, 18 Jul 2016 02:36:04 GMT"
    httpObject.Send
    
    res = httpObject.ResponseText
    
    Cells(4, 1) = Mid(res, 26, InStr(res, "side") - 28)

End Sub
Не обновляются данные, полученные макросом через api
 
Спасибо, работает. Но только я не понял как  :)

Что за дата указана в конце?
Не обновляются данные, полученные макросом через api
 
Есть макрос, который получает данные через api. Для примера отсюда https://www.bitmex.com/api/v1/orderBook/L2?symbol=XBTUSD&depth=3
Допустим мне нужно получить самый первый параметр id.

Вот код макроса:
Код
Sub test()

    Dim httpObject As Object
    Set httpObject = CreateObject("MSXML2.XMLHTTP")
    
    URL = "https://www.bitmex.com/api/v1/orderBook/L2?symbol=XBTUSD&depth=3"
    httpObject.Open "GET", URL, False
    httpObject.Send
    res = httpObject.ResponseText
    
    Cells(1, 1) = Mid(res, 26, InStr(res, "side") - 28)

End Sub
Макрос должен выводить параметр id в ячейку А1. И в принципе он так и делает. Но значение id меняется и довольно быстро, это видно если открыть ссылку просто в браузере и обновлять страницу. Но макрос при повторном запуске параметр id не обновляет. Я пробовал в конце добавлять Set httpObject=nothing, это не помогает.
Как заставить макрос работать?  :(  
Снятие цифровой подписи (макрос)
 
Может кому пригодится.

Я решил эту проблему так, после открытия нужного мне файла создается его копия с помощью SaveCopyAs:
Код
ActiveWorkbook.SaveCopyAs Path & "123.xlsx"
из файла 123.xlsx копируются нужные данные, затем он удаляется:
Код
Kill (Path & "123.xlsx")
Снятие цифровой подписи (макрос)
 
Цитата
AlbertSF написал:
Evgeny-E , попробуйте открыть так:

Файл открывается, ЦП в нем становится недействительной, но скопировать что-нибудь из файла не получается
Снятие цифровой подписи (макрос)
 
Подниму тему.

Аналогичная проблема, есть макрос, который копирует данные из других файлов excel. Некоторые файлы подписаны ЦП, из таких файлов данные копировать не получается. Можно ли сделать так, чтобы макрос предварительно убирал ЦП?
Заменить текст кодировке utf-8 с помощью Replace
 
Цитата
sokol92 написал:
Запакуйте исходный xml файл в zip-архив и приложите к сообщению. Моё подозрение - нарушена структура исходного файла.
Там прикладывать в принципе и нечего, три строки всего
Код
Это не надо менять
Заменить это
Это тоже не надо менять
Все, больше ничего в xml файле нет. Я этот файл использовал просто для примера.

Но видимо вы правы насчет структуры, сейчас попробовал запустить макрос на рабочем xml файле, все работает.

Спасибо большое за помощь!
Заменить текст кодировке utf-8 с помощью Replace
 
Странно. Я текст макроса полностью скопировал из вашего сообщения, еще на всякий случай перепроверил глазами. Все как у вас. Но после выполнения макроса исходный файл становиться пустым  :(  
Заменить текст кодировке utf-8 с помощью Replace
 
Цитата
doober написал:
С xml надо так работать
После выполнения макроса xml файл становится пустым. Подозреваю, что здесь

Код
NewXML = Replace(XML, "Заменить это", "Заменено")

вместо XML должно быть что-то другое. Не ссылка на файл, а текст скопированный из файла, попробую пошаманить немного. В любом случае спасибо за помощь.
Заменить текст кодировке utf-8 с помощью Replace
 
Есть xml файл с кодировкой UTF-8. Пытаюсь сделать макрос, который будет в  этом файле менять фразу "Заменить это" на "Заменено" с помощью функции  Replace. Ничего не получается, макрос запускается, но исходный файл  остается без изменений.

Если все то же самое проделать с файлом с кодировкой ANSI, то работает.
Если использовать латинские буквы, т.е. попытаться заменить фразу "Zamenit eto" на "Zameneno", то тоже работает.
Подскажите в чем может быть проблема.

Текст макроса:
Код
Sub Замена()  
  file = "Для замены.xml"
  Path = ActiveWorkbook.Path & "\" & file
  
  Open Path For Input As #1
  s = Input(LOF(1), 1)
  NewFile = Replace(s, "Заменить это", "Заменено")
  Close #1
  
  Open Path For Output As #2
  Print #2, NewFile
  Close #2  
End Sub

xml файл не дает прикрепить почему-то, там всего три строки
Код
Это не надо менять
Заменить это
Это тоже не надо менять
Макрос для преобразования файла в двоичные данные
 
Цитата
buchlotnik написал: двоичные данные - это последовательность из нулей и единиц
Цитата
БМВ написал: Любой файл  - это двоичные данные
Цитата
Ігор Гончаренко написал: все в компьютере в двоичном виде
Да знаю я  :)
Просто объяснил плохо, бывает
Макрос для преобразования файла в двоичные данные
 
В общем-то я потому и не был уверен, что смогу правильно объяснить что мне нужно.
Мне нужно получить файл в base64binary. Но я не очень понимаю что это, формат или вид представления данных или еще что-то. Знаю только название и знаю что это должна быть последовательность символом (больших и маленьких) и цифр.
Макрос для преобразования файла в двоичные данные
 
Андрей VG, спасибо за ссылку.
У вас написано
Цитата
при загрузке, файлы считываются в бинарном виде, и каждый байт преобразуется в 16-ричное представление.
Можно ли получить данные не в 16-ричном виде, а в 64-ричном?
Макрос для преобразования файла в двоичные данные
 
Всем привет.

Не знаю насколько хорошо у меня получиться объяснить суть вопроса.
Мне нужно преобразовать файл в двоичные данные, т.е. в последовательность символов из букв и цифр.
Есть таблица Excel, в ячейке А1 ссылка на файл, мне нужно чтобы в ячейке В1 отображались двоичные данные, полученные преобразованием файла из ячейки А1. Стандартных функций в экселе, которые что-то подобное делали я не нашел, можно ли это сделать с помощью макроса?
Страницы: 1
Наверх