Возможно ли парсить сайты, если они не открываются в эксплоере? Сколько мониторил тему, так и не нашел решения. Если посылать страницу в любой другой браузер, то эксель не умеет работать с ними как .document . Но как то люди решают эти проблемы. Особо много сайтов не вспомню, но на вскидку пара есть, проверил на вин 10. Да, не открываются. https://dom.gosuslugi.ru/#!/houses
Добрый день. Сталкнулся с проблемой что бы не лазить на сайт, решил автоматизировать процесс. Но не пойму, то ли я не то делаю, то ли сайт не подходит под этот метод. Возмем несколько ИНН (3шт 2 МСП и одно нет)
6165061599- не МСП 6161085567- МСП 6165061599- не МСП 6161055347- МСП 6165061599- не МСП
При прогоне вместо необходимых МСП/Не МСП - выдает последнее удачно встреченное 6165061599- не МСП 6161085567- МСП от 67 6165061599- МСП от 67 6161055347- МСП от 47 6165061599- МСП от 47
Что я делаю не так?
Код
Private Sub inntoMSP() 'из а2 и ниже получить по ИНН данные
Dim IE As Object
Dim n As Integer
Dim sAnswer As String
On Error Resume Next ' пропуск ошибок
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = False
IE.Navigate "https://ofd.nalog.ru/#"
While IE.Busy Or (IE.ReadyState <> 4): DoEvents: Wend 'ожидание загрузки
With IE.Document
For n = 2 To Cells(Rows.count, 1).End(xlUp).Row ' берем по очереди ИНН
.GetElementsByName("query")(0).Value = Cells(n, 1).Value
.queryselector("#pnlSearch > div.quick-search-controls.form-layout-top-labels > div.form-field > div > div.field-value > button").Click ' нажать на найденый текст
Application.Wait Time:=Now + TimeValue("0:00:1")
Temp = IE.Document.queryselector("#tblResultData > tr > td:nth-child(2) > span").innertext
'Temp2 = IE.Document.queryselector("#tblResultData > tr > td:nth-child(1) > div.result-name > a > span").innertext
If Temp = 0 Then Sheets("ИНН").Cells(n, 2).Value = "не МСП" Else Sheets("ИНН").Cells(n, 2).Value = "МСП -" & Temp 'вставляем рядом найденное
Next n
End With
Добрый день. Двойным кликом в столбце F активируктся форма с данными из массива, выбор вставляется в активную ячейку.
Не получается совместить подстановку остальных частей массива в другие столбики
Попытался через макрос который сверяет значение активной ячейки, если находит, то подставляет из массива, но в модуле userform отказывается работать как кусок кода, так и ссылка на макрос и даже функция макрос который вроде как работает в модуле 2 с названием СЦ1 встроить ума не хватило.
Вероятно соль в публичности массива и передаче его между модулями и userform , но это не точно. Чем больше читаю, тем больше начинаю путаться.
Sub test()
Dim element As Range, a As Variant 'цикл по ячейкам
For Each element In Selection
a = element.Value 'значение конкретной ячейки
a = VBA.Split(a, ", ") ' отделяем на части по критерию ", "
n = UBound(a) 'a(n) это последнее после запятой с пробелом , т.е. если у нас было "мама, папа, брат", то получим a(n)=Брат
msgBox a(n)
Next
End Sub
А как теперь к этому a(n) применить макрос и вернуть все в зад но с изменениями? Допустим если замена
Код
a(n) = Replace(a(n), одно, другое)
, то это же как то надо записать все назад ( причем у меня в замене еще пара циклов, по этому думал что проще сослаться на макрос)
Хотя бы верной ли логикой я иду? Как понимаю теперь нужно назад что-то типа сцепить LBound(a) to [UBound(a) - 1] + a(n)?
Добрый, попалась гадкая таблица для анализа и сравнения, но проглядывалась некая система, между цифрами в конце пробел, а должен быть символ. Ну я как програмист мягко говоря не очень, но думаю по идее замены макрорекодер пишет, попробую. На удивление сработало. Х и У тут отдельно, т.к. мне кажется что только Х отработает 0&" "&0 ,1&" "&1, 2&" "&2 ,3&" "&3 ... 9&" "&9 или я ошибаюсь?[ т.е. было г. Азов Васильева 79 1 стало г. Азов Васильева 79что нибудь1 г. Азов, Васильева, д. 79 1 стало г. Азов, Васильева, д. 79что нибудь1
Код
Sub замена()
Dim x, y As Integer
For x = 0 To 9 '
For y = 0 To 9
Selection.Replace What:=x & " " & y, Replacement:=x &"что нибудь"& y, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next
Next
End Sub
Но вопрос на самом деле не в этом(просто плодить темы на схожую тему не правильно) Вот с буквами сложнее, объявил массив и если пишу Selection.Replace x & "что нибудь" & АБВ, x & АБВ, где АБВ-имя переменной, то ошибка, попытался втулить for each, вообще закидало ошибками.
по запарке оставил i и вроде бы отрабатывает, но мне не ясно почему? Я ведь i не объявлял, что оно значит? или это нечто по умолчанию? т.е. было г. Азов Васильева 79 Б стало г. Азов Васильева 79Б г. Азов , Васильева,, 79 Б стало г. Азов ,Васильева,, 79Б
Код
Sub замена2()Dim x As VariantDim АБВ As Variant
АБВ = Array("а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я")
For x = 0 To 9 '
Selection.Replace x & " " & i, x & i
Next
End Sub
Добрый день. Есть такая функция МИНЕСЛИ, в 2019 офисе, но к сожалению офис 2016, есть подозрение, что через нее можно получить требуемое.
Т.е. есть табличка, название/дата. Из нее подтягиваем дату. Например
Код
=ВПР("*текст*"&с1;лист1!a:b;2;)
где с1 содержит название, которое ищем в лист1!a:b, *текст*- произвольное название, например города Москва,Ростов-на-Дону и т.п.... в зависимости от ситуации Но так он находит первое встретевшиеся , сортировать лист 1 не вариант.
=МИН(ЕСЛИ или =НАИМЕНЬШИЙ(ЕСЛИ не отрабатывают как надо из-за поиска с неточным соответствием "*текст*".
Есть ли решение? Может быть даже VBA и пользовательские функции... (желательно не формулы массива, я их боюсь) Можно конечно через сводные таблицы и ВПРить от туда, но и это лишние телодвижения, огромный вес файлов, доп таблицы и вообще, очень не удобно
Добрый. В курилке я описал проект, но видимо никому кроме меня пока он не нужен))) Курилка
Я почти реализовал задуманное, осталось подправить сохранение. Т.к. че то ниче не выходит. тем похожих вроде бы много, но как то сложна и запутанно.
Суть: требуесся сохранить лист 1( или содержимое ячейки А1) как текст в кодировке ANSI , хоть куды, дело 10е, но т.к. хороший тон описывать что требуется на выходе, то по хорошему сразу во временную папку винды
Добрый день. Я не програмист от слова совсем. Просто Юзер, но иногда по аналогии как обезъянка могу нагородить "нечто" удобное для себя и знакомых. Добрался до старого фото/видеоархива и через AviSynth нашел для себя интересную функцию, которую не нашел реализованной в другой софтине. Т.е. открытие и просмотр синхронно 2х видео через potplayer/Vdub/playerclassic или иную софтину. Суть проста, пишем текстовый файлик с рашинеем .avs В нем StackHorizontal (DirectShowSource("d:\Video\file1.MP4"),DirectShowSource( "d:\Video\file2.MP4")) или Interleave(DirectShowSource("d:\Video\file1.MP4"),DirectShowSource( "d:\Video\file2.MP4"))
1я открывает видео рядом(вертикал друг над другом), вторая покадрово 1 кадр 1й файл, второй кадр2й файл и т.д.
Т.е. смотри, сравнивай, делай выводы. Однако каждый раз файл создавать ручками не тру. Надо запилить что нибудь для удобства. Спиным мозгом чую для профи дело секундное, для меня же часы/дни/бесконечность(в случае если забью). N/t/ запускаем наше "Нечто", оно нам открывает диологовое окно, мы выбираем 1й файл, потом второй, а оно нам запускает то, что нам надо.
Один из вариантов пришедших в голову VBA Ecxel , делал я макрос для создание меток kml . Формировал команду в ячейке, сохранял как текстовик с нужным расширением. Запускал файл. Думаю вставить формулу или переменную со ссылками вопрос тоже решаемый.
Или же может я зря заморачиваюсь? Есть решения или вообще не через эксель, а батники надо делать?
Добрый день. Друг попросил помочь, а я мало того что забыл, да еще и не особо знал)) Допустим есть диапазон на листе1 b2:b9 на нем из выпадающей строки выбираются текстовые значения - методы(каждому методу будет соответствовать макрос, методов будет штук 20, ну или около того) далее требуется пройти по каждой ячейке и позапускать макросы согласно значению но что то я делаю не так. Скорее всего строки If Value = "ГГКц" Then ГГКц If Value = "ГК,ЛМ" Then Application.Run ("!Акт-заказ.xlsb!Module1.ГК_ЛМ")
Код
Sheets("Старт").Activate
For Counter = 2 To 9
Set curCell = Worksheets("Старт").Cells(Counter, 2)
If Value = "ГГКц" Then ГГКц
If Value = "ГК,ЛМ" Then Application.Run ("!Акт-заказ.xlsb!Module1.ГК_ЛМ")
Next Counter
Я думал для каждого метода прописать If... Then.... где "ГГКц", "ГК,ЛМ" это методы/макросы.. т.е. простыми словами на лист итоговый акт вставляются по порядку таблички, согласно их последовательности в b2:b9
Добрый день. Допустим Application.CommandBars.ExecuteMso "FindDialogExcel" вызывает окно поиска в эксель
Допустим есть переменная ADR и следующей строкой мы можем заполнить строку поиска, что искать Range("a1").Find adr, , xlValues, 1, xlByColumns, 1, False
Ну и в ручную нажать кнопку найти все (не нашел как реализовать макросом, новерное не очень просто, или никому кроме меня не взбрендило)
Но помимо ручного нажатия кнопки , есть и еще одна проблема. Если окно поиска уже было открыто, то данные в диологовом окне не обновляются.
Значит перед запуском макроса надо данное окно поиска закрыть. (основной вопрос темы)
Файл думаю пока не требуется , весь монстр ниже. (сильно не пинайте за корявость ,еще потихоньку пилю, диапазон поиска и т.д но это не эта тема, работает и хорошо)
Код
Sub далее()
If CheckBox1.Value = True Then
adr = Range("c3").Value
' Set myCell = Range("C3:C9999").Find(adr)
Cells.Find(What:=adr, After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, _
MatchCase:=False, SearchFormat:=False).Activate
Range("a1").Find adr, , xlValues, 1, xlByColumns, 1, False
Application.CommandBars.ExecuteMso "FindDialogExcel"
Else: CheckBox1.Value = False
adr = Range("o2").Value
Cells.Find(What:=adr, After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, _
MatchCase:=False, SearchFormat:=False).Activate
Range("a1").Find adr, , xlValues, 1, xlByColumns, 1, False
Application.CommandBars.ExecuteMso "FindDialogExcel"
End If
'LookAt:=xlWhole если надо точное xlPart- частичное совпадение
'Then
End Sub
Добрый день. Есть некий файл в котором лежат и из которого запускаются все макросы.
Есть папка с файлами xls* , структура файлов однообразна в каждом на листе с именем "ХХХ" макросом формируется табличка в диапазоне AB1:AO4. И вот все эти таблички нужно собрать в кучу.
Макрос ниже не отрабатывает (на 2х пк win10, офис 2016) убрал пропуск ошибок, ошибка Workbooks.Open sFiles или loop. По сути он в лучшем случае открывал 1й файл и на этом все, я перепробывал все вариации кода из интернетов на первых листах поисковика и никак. Плюс сама реализация переноса в иной файл, если переносишь в иную книгу сначала, то она становится активнои и закрывается,убрал строчку закрытия 'ActiveWorkbook.Save SaveChanges:=True, думал хрен сним пусть все останутся открытыми, не помогло, но видимо потому что в целом макрос не отрабатывает.
Код
Sub Auto_Write_In_Books() ' цыкл по всем книгам в папке
Dim sFolder As String, sFiles As String, li As Long
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = False Then Exit Sub
sFolder = .SelectedItems(1)
End With
'Application.ScreenUpdating = False
sFiles = Dir(sFolder & "\*.xls*")
'On Error Resume Next
Do While sFiles <> ""
Workbooks.Open sFiles
test 'мой макрос
'ActiveWorkbook.Save SaveChanges:=True
sFiles = Dir
Loop
Application.ScreenUpdating = True
End Sub
Добрый день. Зачастую возникает ситуация, что в таблице откуда берешь данные добавляют или убирают столбцы(забыв об этом уведомить хоть кого то ), запускаешь макрос и... все что нажито не посильным трудом в топку.
Хочу вставить проверку, например по шапке, если в шапке че то поменялось, значит макрос уведомляет, что надо править код. Что можно придумать?
Добрый день, есть несколько таблиц , допустим на листе4 в столбце S стоит данный монстр, вычисления из разных листов, в каждом 20000-80000 тыс строк(кол-во меняется) Формулами счетеслимного находятся(после просмотра глазами убиваются) дубли по параметрам, отрабатывает оч. долго(даже если отключаешь все отображения, сторонние пересчеты и прочее)
Можно ли как то упростить этого монстра?
Например если сцепить и сделать как значение вот эту часть Лист1!I:I;H1;Лист1!J:J;I1;Лист1!O:O( т.е. 3ячейки на листе 1 и 3 ячейки на листе 4 как итог убираем несколько параметров и сравниваем в мтоге одну ячейку с одной) ускорит ли данная махинация что то? очеь геморно добавлять столбцы, в них делать доп изменения, т.к. прейдется переписывать кучу макросов.(((
Добрый день. Надстройки ставить нельзя. Пример приложу позже если надо, пока не могу(т.к. с телефона) Берем две таблицы с одинаковой структурой A:Z, находящихся на разных листах одной книги. 1я строка заголовки.
Требуется в основную таблицу На листе NAME1 добавлять данные из листа NAME2.
Соответственно я вижу 2 сценария 1. Дублей нет, просто перенести 2. Дубли есть.Дубли ищем по столбцу C. В столбце P стоит дата, нам нужен самый свежий (причем т.к. данные подливаются, то на листе NAME2 даты всегда новее)
Вижу два пути 1 Перенести все, удалить дубли с критерием по свежей дате 2 Переносит построчно, с заменой дублей На листе NAME1 из листа NAME2.
Я так понимаю это два разных пути, какой будет быстрее? Я в програмировании 0, но с макрорекодером дружу и по аналогии иногда получается из цепочки макросов создать нужное. Может поможете что можно взять за основу. Или поможете написать готовый макрос. И еще, ВАЖНО что бы на других листах не съезжали формулы(хотя это наверное надо пробывать на практике и если что сливать таблицы в отдельном файле, а потом переносить )
Добрый день. Пример постараюсь выложить позже. А пока теория.
Есть документ WORD . В нем я авто заменой хочу поменять ряд слов и каждый раз нажимать CTRL+H и копипастить нужное можно, но время. Соответственно, может можно сделать таблицу соответствий ( на 10к другой значний) и нажатием кнопки решить этот вопрос за секунду. Все решения в этом направления в интернете через какие нибудь платные, громоздные надстройки и прописывание каких то хитрых тэгов в документе, а можно ли как я описал? Т.е. табличка в одном столбце что меняем, напротив соответственно на что. Причем я понимаю что можно прикрутить потом от выбора документа который редактируем(нужный шаблон, например прописать адрес где лежит документ C:\...\... в ячейке), до автосохранением с именем из ячейки?
Добрый день, ВПР классная штука , а нет ли возможности что бы впрились не только значения, но и форматы. Т.Е. Есть у меня список на 1м листе и некоторые значения перекрашены, впр подставляет значение, а можно ли подставлять таким способом формат\Цвет шрифта или можtnt предложить другой способ?
Добрый день. Есть тупая задача сделать список. Есть таблица с названием улицы и первым и последним домами по четной и нечетной сторонам, требуется ее развернуть как в примере, т.е. что бы протянуло прогрессией с от и до...
Добрый день, с цифрами и текстом я аналогичную задачу решал, а с цветами не могу. В общем в столбце C есть адреса, условным форматированием подсвечеваются дубли(заливка ячейки). Текст не актуальных перекрашиваетя в красный. Как автоматизировать процесс . Т.Е. по нажатию кнопки удалялась строка, если цвет текста красный, а цвет ячейки "светло-бежевый"(ну или другой) эксэль 2016
Лист 1 столбец А - уникальный номер столбец В-статус (закрыт, отложен, нет) столбец С-дата изменения статуса
Лист 2 Аналогичная таблица
задача: при совпадении значения в столбце А из листа 1 с слистом 2 в столбах лист 1 В и лист 1 С подтянут(подставить) значения из столбцов лист 2 В и лист 2 С , при этом после этого (замены) удалял бы всю строку, если замены не было, оставлял бы все как есть.
Добрый день. Подскажите пожалуйста (впр хорошо, но много формул грузит систему) Требуется макрос. Например лист 1 - таблица с которой работаем( в которой много не соответствий , например "п.Овощьной","пОвощьной","пос.Овощьной" и т.д. лист 2 - список в столбце А "значения"(в моем случае текст) которые надо заменить, в столбце В значения на которые надо заменить, дабы попытаться привести таблицу к нормальному виду и потом работать с формулами. (на выходе имеем допустим вместо многообразия значений одно, приведенное к одному виду)
Это универсальное решение, в последствии нашел несоответствие внес на лист 2 в столбец А1 (пос.Овощьной азовского р-на) в В1 ( п.Овощьной),А2( значение Х) в В2(Значение У) и т.д. нажал кнопку и работай с таблицей. Думаю многие найдут применение. Т.К. многие работают с выгрузками, в которые вносят данные люди(а от человеческого фактора\ошибки никто не застрахован) и каждый раз в выгрузке будет ошибка(т.к. в крупных корпорациях хрен добъешься что бы что то , где то поменяли) Заранее спасибо.
Добре. Допустим есть Лист 2, в котором постоянно обновляется список или меняется статус Лист 1 сводная информация
Задача: При выводе информации на листе 1 ( ячейки В2 и С2) ДНТ Союз учитывалось бы и СТ Союз, и СНТ союз.
Если усложнить, было бы неплохо как то прописать Что ДНТ Союз это если ( Таганрог, пушкинская дом 1-10, Таганрог Капустина дома 3-18 и т.д.) ДНТ Союз Азов это и т.п.
Добре. Есть сводная таблица на вкладке ОП формулы в столбиках D и E при сортировке сбиваются. т.е. напримере в столбика D возьмемм ячейку D2 =ЕСЛИОШИБКА(ВПР(ОП!$C2;База_донских!$A$2:$B$8;2;ЛОЖЬ);ВПР(ОП!$C2;окс_полная!$B$2:$C$3;2;ЛОЖЬ)) после сортировки допустим =ЕСЛИОШИБКА(ВПР(ОП!$C7;База_донских!$A$2:$B$8;2;ЛОЖЬ);ВПР(ОП!$C7;окс_полная!$B$2:$C$3;2;ЛОЖЬ)) а должно так же остаться ОП!$C2 Ставить $ перед двойкой бесполезно, т.к. физически ячейка при сортировке будет уже не в d2. точнее в в столбике С относительно столбика D будут разные значения не знаю как сформулировать...
Как бороться?
прикреплен ods с изм. расширением (т.к. меньше весит)
Добрый день. С макросами дружу плохо, обычно пользуюсь условным форматированием ( если кому надо =СЧЁТЕСЛИ($B:$B;A1)>0 подсвечивает в А то что есть в B)
но как бы сделать так: На листе 1 в столбце А есть допустем адреса (ленина, 1 в столбце B квартирность (52 ленина, 2 33 ленина, 3) 12 и на листе 2 в столбце А есть аналогичные значения(ленина, 5 то есть есть такие же значения но есть и другие... ленина, 1 ленина, 3) можно ли сделать так, что бы на листе 2 напротив совпадающих значений (в столбце B) прописалась квартирность (перенеслись/скопировались значения) в примере вкладки листов было, как должно стать. Спасибо.
Всем добра. Есть таблица, овер 9000 значений. Требуется от вида
... Цезаря Кунникова, 9к8а Нариманова,6б Ивановского, 34к11 ...... привести к значению ... Цезаря Кунникова, 9\8а Нариманова,6\б Ивановского, 34\11 ...... При замене через ctrl+h не все гладко, тк если менять "к" на "\" то оно поменяется и в \унни\ова, 9\8а, даже если ставит с учетом регистра, то получим Кунни\ова, 9\8а Что можно сделать?