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

Страницы: 1
Дождаться полной загрузки сайта, MSXML2.ServerXMLHTTP.6.0
 
Игорь, Спасибо. Свойства ".Busy" для "MSXML2.ServerXMLHTTP.6.0" нет . Мне именно под прокси нужно заходить на сайт, и вытаскивать информацию. Самый простой метод это Ваш же пример, за это вам огромное спасибо. На сайте "2ip" проверяю, все хорошо. Захожу на нужный сайт значит под прокси, но не всегда получаю всю информацию.....  а для IE есть способ зати сразу под прокси? Интернет весь перерыл, нашел только через "cmd". Вроде этого.
Код
cmdkey /generic:101.101.101.101 /user:12345 /pass:123456
Это я добавляю в диспетчер учетных данных свои данные чтоб IE не запрашивал пароль.
Потом запускаю скрипт ".vbs"
Код
Option Explicit
Dim valUserIn
Dim objShell, RegLocate, RegLocate1
Dim args

set args = Wscript.Arguments
valUserIn = args(0)
Set objShell = WScript.CreateObject("WScript.Shell")
On Error Resume Next
RegLocate = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer"
objShell.RegWrite RegLocate,valUserIn,"REG_SZ"
RegLocate = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable"
objShell.RegWrite RegLocate,"1","REG_DWORD"
WScript.Quit
Все работает через VBA. Запущено все циклом, но загвоздка в том что примерно после пятой попытки, прокси не меняется. Пробовал возвращать в исходное состояние, без прокси, очищать в диспетчере все данные, и всеравно ничего не помогает..... После перезагрузки ПК все опять работает но опять только на 5-10 прокси. Всетаки как зайти через IE под прокси?
Изменено: Максим Бугриев - 05.02.2024 13:40:47
Mail merge
 
в Ворде выполни вод этот макрос. Предварительно перед запуском макроса выдели тот самый текс. Если не знаете как выполнить макрос в ворд, то интернет вам в помощь.
Код
Sub GroupDigits()
  Dim SelectionStart As Long
  Dim SelectionEnd As Long
  
  SelectionStart = Selection.Start
  SelectionEnd = Selection.End
  Selection.EndKey wdStory, wdMove
  
  With Selection.Find
    .Text = "[0-9]{4;}"
    .MatchWildcards = True
    .Forward = False
    While .Execute
      If Not .Parent.Previous Is Nothing Then
        If .Parent.Previous.Text <> "," Then
          .Parent.Text = FormatNumber(CDbl(.Parent.Text), 0, GroupDigits:=vbTrue)
          Selection.Collapse wdCollapseStart
        End If
      Else
        .Parent.Text = FormatNumber(CDbl(.Parent.Text), 0, GroupDigits:=vbTrue)
      End If
    Wend
  End With
  
  Selection.SetRange SelectionStart, SelectionEnd

End Sub
Дождаться полной загрузки сайта, MSXML2.ServerXMLHTTP.6.0
 

При получении текста с сайта и рабивая данные по тегу, очень часто получаю разные значения количесва объектов в массиве. иногда допустим 160 а иногда 660. Как дождаться когда полностью закгрузиться сайт?. .readyState = 4, статус тоже проверал. Когда просто заходишь на сайт, ручками в браузере, иногда видно что информация подгружается дополнительно. как реализовать код чтоб я получил полный txt сайта. Код использую вида.

Код
Sub XMLHTTP()
ctroka:
URL = "https://oz-parts.ru/search/Hyundai-KIA/54584D3000?source=goods_info"
 On Error GoTo errorHandler
        With CreateObject("MSXML2.ServerXMLHTTP.6.0")
        .Open "GET", URL, "False"
        .setTimeouts 10000, 10000, 10000, 10000
        .send ("")
'        .setProxy 2, myProxy
'        .setProxyCredentials mylogin, mypassword
cTime = Now + TimeValue("00:00:20")
 If Now < cTime Then
        Do
        DoEvents
        Loop Until .readyState = 4
Else
        popitka = popitka + 1
        If popitka >= 3 Then
        Exit Sub
        Else
        GoTo ctroka:
        End If
End If
        txt = .responseText
        End With
errorHandler:

arr50 = Split(GetTags(txt, "td", "class", "*resultDeadline *", "innerHTML"), ARSEP)
kolishestvo1 = UBound(arr50, 1) - LBound(arr50, 1) + 1
Подключение через прокси с MSXML2.ServerXMLHTTP.6.0, не получается подключиться к прокси
 
Кто сталкивался с такой проблемой? При таком варианте кода на ПК когда я сижу по проводу, хоть даже из того же роутера то все работает. Как только я переподключаюсь на Wi-Fi, возникает ошибка, на методе .send
Код
Sub CheckProxy()
    With CreateObject("MSXML2.ServerXMLHTTP.6.0")
        .Open "GET", "https://clarity-project.info", False
        .setProxy 2, "77.37.202.134:10187"
        .setProxyCredentials "Login", "Pass" 'логин и пароль ввожу правильные
        .setTimeouts 10000, 10000, 10000, 10000
        .send ("")
        Debug.Print .Status, .statustext
    End With
End Sub
Изменено: Максим Бугриев - 23.01.2024 21:04:22
Функция LAMBDA, Кто-нибудь, подскажите пожалуйста, почему вот такая конструкция не работает
 
Юрий М, Могу предложить вот такой вариант "Почему не работает функция". Если вам и такой вариант не нравиться, то я умываю руки и предлагаю Вам  переименовать эту тему, без моего участия.
Функция LAMBDA, Кто-нибудь, подскажите пожалуйста, почему вот такая конструкция не работает
 
Юрий М, вы хотите изменить название темы?! Без проблем, я не претендую на именно такое название. Вы модератор и Вы в праве делать как вам нравиться, или как вы считаете правильно. я бы сам исправил, но к сожалению я не увидел на сайте такую возможность(или я слепой). Так что, так как вы модератор, не могли бы вы это сделать сам, если и у вас такой возможности нет, то не вижу больше вариантов решения данной проблемы.
Функция LAMBDA, Кто-нибудь, подскажите пожалуйста, почему вот такая конструкция не работает
 
я думал что конкретно с формулой:
Код
=ПСТР(ЯЧЕЙКА("ИМЯФАЙЛА";a);ПОИСК("]";ЯЧЕЙКА("ИМЯФАЙЛА";a))+1;255)
LAMBDA не работает, хотел узнать почему
Функция LAMBDA, Кто-нибудь, подскажите пожалуйста, почему вот такая конструкция не работает
 
Я в диспетчере имен задам "имя", и буду вводить только "имя" и параметр который является "А1"; можно заменой тоже, но этот путь проще, как мне кажется
Функция LAMBDA, Кто-нибудь, подскажите пожалуйста, почему вот такая конструкция не работает
 
Я не внимателен! Спасибо Вам!
Объединение данных в 2 ячейках без формул.
 
Соединить амперсантом.
Или я что-то не так понял
Функция LAMBDA, Кто-нибудь, подскажите пожалуйста, почему вот такая конструкция не работает
 
Код
=ПСТР(ЯЧЕЙКА("ИМЯФАЙЛА";A1);ПОИСК("]";ЯЧЕЙКА("ИМЯФАЙЛА";A1))+1;255)
Формула, определяет имя листа, и она динамична
есть еще  другая формула
Код
=ПРАВСИМВ(ЯЧЕЙКА("имяфайла");ДЛСТР(ЯЧЕЙКА("имяфайла"))-ПОИСК("]";ЯЧЕЙКА("имяфайла")))
но она тоже не работает с LAMBDA
Функция LAMBDA, Кто-нибудь, подскажите пожалуйста, почему вот такая конструкция не работает
 
Код
=LAMBDA(a;ПСТР(ЯЧЕЙКА("ИМЯФАЙЛА";a);ПОИСК("]";ЯЧЕЙКА("ИМЯФАЙЛА";a))+1;255))
Офис 365, с другими функциями все работает!
Сократить функцию ЕСЛИМН, Есть ли способ сократить такую формулу
 
Цитата
написал:
=ПРОСМОТР(A1;СТРОКА($1:$1000)*5-4;СТРОКА($1:$1000)&" лист")&ЕСЛИ(A1<=5;"е.";"ах.")
Норм, спасибо! до 1000 листов точно будет хватать)
Сократить функцию ЕСЛИМН, Есть ли способ сократить такую формулу
 
Спасибо!
Попробовал задать значение "101" в ячейке "А1", получилось "на 21 листах."
По хорошему, я так понял, где крайний символ в обозначении кол-ва листов заканчивается на "1", то нужно ставить "листе."
формула получиться вот такая:
Код
=ЕСЛИ(ЕПУСТО(A1);"";"на " & ЦЕЛОЕ((A1-1)/5)+1 & ЕСЛИ(ПРАВСИМВ(ЦЕЛОЕ((A1-1)/5)+1;1)*1=1;" листе.";" листах."))
если все-таки есть способ еще покороче записать? Не используя, естественно, "лямбда".
Сократить функцию ЕСЛИМН, Есть ли способ сократить такую формулу
 
=ЕСЛИМН(
A1<=5;"1 листе.";
A1<=10;"2 листах.";
A1<=15;"3 листах.";
A1<=20;"4 листах.";
A1<=25;"5 листах.";
A1<=30;"6 листах.";
A1<=35;"7 листах.";
A1<=40;"8 листах.";
A1<=45;"9 листах.";
A1<=50;"10 листах.")
В цикле определить высоту строк, после выхода из цикла задать высоту диапазонам строкам
 
Евгений Смирнов, Спасибо работает. Буду пробовать другие свойства и методы применять.
Код
Sub Test1() ' старый вариант, этот на моем ПК, выполняется за 17с
    Dim arr, lr, ss    As Long

    arr = Worksheets("Лист3").Range(Cells(1, 2), Cells(10000, 2)).Value
    For lr = 1 To 10000
        If arr(lr, 1) >= 85 Then
            ss = 28
        Else
            ss = 14
        End If
     Worksheets("Лист3").Rows(lr).RowHeight = ss
    Next
End Sub


Sub Test2() ' новый вариант, этот на моем ПК, выполняется за 3с
Dim i As Long
Dim Rg1 As Range, Rg2 As Range, nRow&, Min%, Max%, Arr1
nRow = 10000: Min = 14: Max = 28: Set Rg2 = Worksheets("Лист3").Rows("1:" & nRow)
Arr1 = Range(Cells(1, 2), Cells(nRow, 2))
    For i = 1 To nRow
If Arr1(i, 1) >= 85 Then If Rg1 Is Nothing Then Set Rg1 = Rg2.Cells(i, 1) Else Set Rg1 = Union(Rg2.Cells(i, 1), Rg1)
    Next
If Not Rg1 Is Nothing Then
    Rg1.EntireRow.RowHeight = Max
    Rg1.EntireRow.Hidden = True
    Rg2.SpecialCells(xlCellTypeVisible).EntireRow.RowHeight = Min
    Rg2.EntireRow.Hidden = False
End If
End Sub
Изменено: Максим Бугриев - 12.12.2021 08:55:30
В цикле определить высоту строк, после выхода из цикла задать высоту диапазонам строкам
 
определить в цикле при каких значениях, удовлетворяющих  условию задать определённую высоту. А после цикла задать эту высоту

Думаю вот тут я это описал.

Хочу сделать так, чтоб в цикле определялся набор тех значений которые удовлетворяют условию,  а после цикла, выполнялось это условие. Допустим, в ячейке 1 данного диапазона стоит значение  100, в ячейке два 70, в ячейке три 78,  в ячейке четыре 105,и т.д. и т.п. Так вот, в зависимости от заданного условия. мы понимает что в набор 1 мы должны записать при значении  lr=1 и 4, т.к. они больше 85. А в набор 2 мы должны записать  lr=2 и 3, т.к. они меньше 85. По окончанию цикла у меня в наборе 1, допустим значения 1,4, 5,7,8,15 и т.д. всего 100 шт.(это к примеру), а в наборе 2 значения 2,3,6,9,10, и т.д.. Вот. Цикл прошел, определил при каких значениях, в данном диапазоне, эти значения определить в набор 1 или же в набор 2. И вот после цикла разом всем строкам из набора 1 задать высоту= 28, а из набора 2, задать высоту всем строкам= 14. Сейчас макрос такой что он задает высоту для каждой строки по отдельности, при прохождении цикла в котором условие.  А нужно чтоб разом это делал,

Нашел в интернете. Вот этот код делает очень похожую задачу. Он ищет в диапазоне "B45:B94", пустую ячейку. И разом скрывает только те что удовлетворяют условию. Но как бы я не извращался над этим кодом, под мою задачу. Вечно всякие ошибки.
Код
Sub skritie()
    Dim ra As Range, delra As Range, ТекстДляПоиска As String

    ТекстДляПоиска = ""    ' скрываем строки с таким текстом

    'перебираем все строки в используемом диапазоне листа
    For Each ra In Range("B45:B94").Rows
        'если в строке найден искомый текст
        If Not ra.Find(ТекстДляПоиска, , xlValues, xlPart) Is Nothing Then
            'добавляем строку в диапазон для скрытия
            If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
        End If
    Next

    'если подходящие строки найдены - скрываем  их
    If Not delra Is Nothing Then delra.EntireRow.Hidden = True

End Sub
Импорт нетабличных данных по URL (Power Query)
 
В параметрах запроса, в шаге "Источник" нажимаешь на шестеренку и в поле открыть файл как, выбираешь "Текстовый файл", и уже с этими данными в PQ делаешь все что нужно.
В цикле определить высоту строк, после выхода из цикла задать высоту диапазонам строкам
 
Добрый день. Есть макрос вида:
Код
Sub Test()
Dim arr, lr, i, ss As Long
arr = Range(Cells(1, 18), Cells(160, 18)).Value
For lr = 1 To 160
    If arr(lr, 1) >= 85 Then
    ss = 28
    Else
    ss = 14
    End If
    Worksheets("Лист2").Rows(lr + 98).rowheight = ss
Next
End Sub.
Хочется сделать так  что бы само действие введенного условия было после цикла.
Объясняю, Когда больше миллиона строк, то это долго обрабатывать. Для чего именно так-когда ячейки объединены, автопобор высоты строк не работает. Поэтому по количеству символов я определяю какой высоты будет строка. Да и вообще, если кто-то мне поможет в этом разобраться, будет проще и другие условия выполнять после цикла. а не по отдельности каждого значения. Из всего что вычитал в интернете понял только примерную структуру. А как реализовать не понимаю.
Код
Sub Test()
Dim arr, lr, i, ss As Long
arr = Range(Cells(1, 18), Cells(160, 18)).Value
For lr = 1 To 160
    If arr(lr, 1) >= 85 Then
    ss = 28 ' при значении lr=1,7,8,9,15,19,22 и т.д.( это должно быть как бы первым набором для условия)
    Else
    ss = 14 ' при значении lr=2,3,4,5,6,10,11 и т.д., т .е. все остальные ( это должно быть вторым набором для условия)
    End If
Next
' и вот здесь накопленный, набор в данном случае строки (1,7,8,9,15,19,22 и т.д.) имеет высоту = 22; а второй накопленный набор  (1,7,8,9,15,19,22 и т.д.) имеет высоту = 14.
End Sub.

Может кто-то что-то подобное делал. Заранее спасибо.

P.S. Надеюсь тему правильно указал. Только пожалуйста не накидывайтеcь.  Я только изучаю VBA. Я не гуру. А то недавно задавал вопрос, сразу сказали что недалекого ума человек.
Сбор по табельному номеру отработанных дней из различных файлов и отображение их в основной общей таблице
 
Так в чем помощь то нужна? В сборе фамилий  и отработанных дней из разный файлов?  Или это уже все в одном файле есть , если есть то в чем проблема?
Ссылка на лист с условием
 
понял, спасибо
Ссылка на лист с условием
 
все верно
Ссылка на лист с условием
 
я отевтил о смысле этого всего, другими способами я знаю как решить а нужен конкретно этот, у меня наделано 1000 документов в котором по 50 листов, и первый лист это шаблон, а остальные естественно ссылаются на этот самый шаблон но есть естественно уникальные значения в остальных 49 листах, в том числе и дата, так вот, в определенную дату текст шаблона нужно поменять. Хочется открывать книгу, менять формулу только в шаблоне. Макросом это не сложно, но возникают трудности, потому что не каждый лист ссылается, и  их порядок не одинаковый, да и количество. Макросом было бы проще открывать книгу и менять только значение в шаблоне, а остальное само посчиталось  бы в стальных.
Ссылка на лист с условием
 
Смысл в условии текущего листа, ссылаться на лист 1, а условие принимать из текущего, в формуле пробовал применять имя листа, двссыл, не получается.
Ссылка на лист с условием
 
Еще подробнее,
На листе 2 в ячейке В1 стоит условие "да", значит в ячейке А3 должен получиться текст в виде "получилось", сама формула там должна стоять "=Лист1!A3".
На листе 3 в ячейке В1 стоит условие "нет", значит в ячейке А3 должен получиться текст в виде "не получилось", сама формула там должна стоять "=Лист1!A3".
На листе 4 в ячейке В1 стоит условие "нет", значит в ячейке А3 должен получиться текст в виде "не получилось", сама формула там должна стоять "=Лист1!A3".
На листе 5 в ячейке В1 стоит условие "да", значит в ячейке А3 должен получиться текст в виде "получилось", сама формула там должна стоять "=Лист1!A3".

Так вот на листе 1 в ячейке А3 нужно придумать формулу, которая смогла бы это сделать.
Как еще понятнее объяснить, не знаю.....
Ссылка на лист с условием
 
На листах 2-5 в ячейке "А3" должна стоять формула "=Лист1!A3", а  в Лист1!A3 нужна такая формула которая завесила бы  от условия листа. Исходя из примера в ячейке "В1" листов 2-5, стоят значения, "да,нет,нет,да", соответственно. Исходя из этого условия в ячейке "А3" листов 2-5, должно быть значение "получилось, не получилось, не получилось, получилось". Повторяю, при этом  в ячейке "А3" должна стоять формула "=Лист1!A3", а в самом листе 1 в ячейке А3 нужна эта самая формула.
Ссылка на лист с условием
 
Всем доброго времени суток. Столкнулся с такой проблемой что не могу сообразить как сделать ссылку, которая ссылается на другой лист, но при этом условие выполнялось текущего листа из которого  ссылается сама формула. Пример прикладываю. Исходя из него объясню попонятнее. В ячейке "В2" листов 2-5, стоит условие "да, "нет". Так же в листах 2-5 в ячейке "А3" стоит ссылка на лист1 ячейка "А3". Так вот, на листах 2-3 в ячейке должна стоять формула "Лист1!А3", но при этом само условие, должно выполнятся из значения "В1" текущего листа. Понятно что макросом это не проблема, а вот самой формулой не получается.
Страницы: 1
Наверх