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

Страницы: 1
Получение ответа от сервера используя proxy SOCKS5, через vba
 
Код
With CreateObject("MSXML2.ServerXMLHTTP.6.0")
  .SetProxy 2, "999.999.999.999:9999"
  .Open "GET", "https://yandex.ru/internet/", False
  .setProxyCredentials "user", "passwd"
  .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0"
  .send ("") 
  txt = .responseText
End With

День добрый, пытаюсь с помощью вешеуказанного кода достучаться до яндекса, используя proxy socks5, но "Сервер вернул недопустимый или нераспознанный ответ".
Нашел, что ServerXMLHTTP поддерживает только http/https прокси, но может можно каким-либо образом по-другому получить данные через socks?
Парсинг данных с сайта со скриптами.
 
Добрый день,

По данной ссылке пытаюсь получить  стоимость товара ($99.97).
Т.к сначала необходимо дождаться срабатывания всех скриптов, то делаю это через IE.
Однако, несмотря на
Код
While ie.ReadyState <> 4
    DoEvents
Wend
Страница все равно не успевает прогрузиться (как мне кажется) и получается, что невозможно вытянуть цену.
Весь код предельно прост:
Код
Sub ImportData()
    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True
    sURL = "https://www.walmart.ca/en/ip/coffee-table-rustic-oak/6000199108427"
    ie.Navigate sURL
    
    While ie.ReadyState <> 4
        DoEvents
    Wend
    
    Strh = ie.Document.body.innerText
    
    Set objRegExp = CreateObject("VBScript.RegExp")
    objRegExp.Global = True
    objRegExp.Pattern = "(<span class=""css-2vqe5n esdkp3p0"".*?>)(.*?)(</span>)"
    
    If objRegExp.Execute(Strh).Count <> 0 Then
        MsgBox objRegExp.Execute(Strh).Item(0).submatches.Item(1)
    End If
End Sub  
Скрытый текст


Есть идеи, каким образом можно вытянуть цену?
Сборка данных из CSV файлов. Нехватка оперативки.
 
Добрый день,
Есть код, который из собирает в текущий .xlsm файл данные из .csv файлов (все файлы лежат в одной папке).
По сути берет первую строку из .csv файла и копирует её в конец .xlsm.

Однако когда .csv файлов >200 тыс., то чувствуется, что оперативка начинает утекать...Не пойму на каком моменте идет утечка, сами ж файлы закрываю вроде, переменные обнуляю.
Может кто ткнуть носом в место, где собака зарыта?
Код
Option Explicit
 
Sub xlsm_csv()
    Dim a_path As String
    Dim csvF As String
    Dim shb As Worksheet
    Dim sh As Worksheet
    Dim WB As Workbook
    
    Dim lcol_from As Long
    Dim lrow_insert As Long
    
    Set shb = ActiveSheet
    a_path = ActiveWorkbook.Path & "\"
    
    csvF = Dir(a_path & "*.csv", vbNormal)
    
    Application.ScreenUpdating = False
    Do Until csvF = ""

        Set WB = Nothing
        Set sh = Nothing

        Set WB = Workbooks.Open(Filename:=a_path & csvF, ReadOnly:=True, Local:=True)
        Set sh = WB.Worksheets(1)
        lcol_from = sh.Cells(1, sh.Columns.Count).End(xlToLeft).Column
        lrow_insert = shb.Cells(shb.Rows.Count, 1).End(xlUp).Row + 1
        shb.Range(shb.Cells(lrow_insert, 1), shb.Cells(lrow_insert, lcol_from)) = _
            sh.Range(sh.Cells(1, 1), sh.Cells(1, lcol_from)).Value
        WB.Close False
        csvF = Dir()
    Loop
    Application.ScreenUpdating = True
End Sub
Изменено: heso - 03.02.2020 10:53:04 (.xls -> .xlsm)
Получение данных с FTP c помощью VBA
 
Добрый день.
Условие: необходимо забрать с ftp файл, расположенный в корне.
Код
Private Const FTP_TRANSFER_TYPE_UNKNOWN     As Long = 0
Private Const INTERNET_FLAG_RELOAD          As Long = &H80000000
 
Private Declare Function InternetOpenA Lib "wininet.dll" ( _
    ByVal sAgent As String, _
    ByVal lAccessType As Long, _
    ByVal sProxyName As String, _
    ByVal sProxyBypass As String, _
    ByVal lFlags As Long) As Long
 
Private Declare Function InternetConnectA Lib "wininet.dll" ( _
    ByVal hInternetSession As Long, _
    ByVal sServerName As String, _
    ByVal nServerPort As Long, _
    ByVal sUsername As String, _
    ByVal sPassword As String, _
    ByVal lService As Long, _
    ByVal lFlags As Long, _
    ByVal lContext As Long) As Long
 
Private Declare Function FtpGetFileA Lib "wininet" ( _
    ByVal hConnect As Long, _
    ByVal lpszRemoteFile As String, _
    ByVal lpszNewFile As String, _
    ByVal fFailIfExists As Long, _
    ByVal dwFlagsAndAttributes As Long, _
    ByVal dwFlags As Long, _
    ByVal dwContext As Long) As Long
    
Private Declare Function InternetCloseHandle Lib "wininet" ( _
    ByVal hInet As Long) As Long
 
Sub FtpDownload(ByVal strRemoteFile As String, ByVal strLocalFile As String, ByVal strHost As String, ByVal lngPort As Long, ByVal strUser As String, ByVal strPass As String)
    Dim hOpen   As Long
    Dim hConn   As Long
 
    hOpen = InternetOpenA("FTPGET", 1, vbNullString, vbNullString, 1)
    hConn = InternetConnectA(hOpen, strHost, lngPort, strUser, strPass, 1, 0, 2)
 
    If FtpGetFileA(hConn, strRemoteFile, strLocalFile, 1, 0, FTP_TRANSFER_TYPE_UNKNOWN Or INTERNET_FLAG_RELOAD, 0) Then
        Debug.Print "Success"
    Else
        Debug.Print "Fail"
    End If
 
    'Close connections
    InternetCloseHandle hConn
    InternetCloseHandle hOpen
End Sub

Sub TestDownload()
    localFolder = "C:\rr.txt"
    HostName = "91.122.30.115"
    port = 21
    Username = ""
    Password = ""
    remoteMatchFile = "robots.txt"
   FtpDownload remoteMatchFile, localFolder, HostName, 21, Username, Password
End Sub
С сервером коннектится, однако файл не хочет забирать.

Безусловно, существует 1https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=54581http://www.codenet.ru/progr/vbasic/ftp.php5https://www.ozgrid.com/forum/index.php?thread/122540-how-to-use-vba-ftp-to-download-newest-file-in-directory/https://www.mrexcel.com/board/threads/download-files-from-ftp-server-using-excel-vba-script.1037043/ вопросов по данной теме(только на этом форуме 4 страницы в поисковой выдаче),
Но ступор какой то.

Что я не так делаю?
VBE Tools v2.0. Поиск установочного файла программы.
 
Добрый день,
Ни у кого не завалялся в закромах установочник VBE Tools v2.0?
Переустановил систему, а про эту полезную вещь забыл. С сайта возвращает 500 ошибку.
После закрытия книги пропадает значение переменной, которой присвоен лист из закрытой книги.
 
День добрый, завис над вопросом:
есть код:
Код
sub nn()
    book_path="C:\boook.xls"
    Workbooks.Open book_path

    Dim sh As New Worksheet
    Set sh = ActiveWorkbook.Sheets(1) 'все прекрасно, лист из открытой книги присвоился переменной

    ActiveWorkbook.Close False 'переменная sh пустая

end sub

Как-то можно закрыть книгу, не теряя переменную?
Какой программой для скриншотов(windows) пользуетесь?
 
День добрый!
Собственно интересует сабж. Всю жизнь пользовался дома Greenshot'om, потом как-то незаметно перешел на Lightshot.
Озадачился, может, появились более комфортные в использовании программы.
Понятно, что кому-то за глаза и ножниц хватает, но вдруг что-нибудь да открою нового. Да и на работе жесткая политика безопасности, и все .exe файлы нужно согласовывать с IT. Может, существует удобная portable версия вашей любимой программы..
Объединить нескольких массивов в один, удалив повторяющиеся значения
 
День добрый,
Существует 4 массива вида: {1,2,3,4}, {2,3,4,5}, {3,4}, {1,6}
Каким образом можно их объединить в один вида {1,2,3,4,5,6}?

На данный момент пользуюсь коллекциями, но не очень нравится, что приходится использовать On Error Resume Next, иначе выскакивает ошибка '457'.
Код
'tit_ds, tit_ser, tit_srza, tit_nach_zus - те самые 4 массива

On Error Resume Next
For Each i In tit_ds
    zagolovki.Add i, i
Next
For Each i In tit_ser
    zagolovki.Add i, i
Next
For Each i In tit_srza
    zagolovki.Add i, i
Next
For Each i In tit_nach_cus
    zagolovki.Add i, i
Next
быть может существует более..эстетичный метод?
Копирование диапазона ячеек с изменением формата "Общий" на "Дата"(VBA), Вставить массив VBA и изменить формат новых ячеек на "Дата"
 
День добрый.
Интересует способ скопировать один диапазон на новое место с изменением формата ячеек.
К примеру, ячейка А2 имеет Общий формат и равна 01.06, необходимо, чтобы ячейка D2 имела формат Дата и была равна 01.06.2016 и по аналогии с другими ячейками.

На данный момент не придумал ничего лучше, как добавление необходимых ячеек в массив, вставку его на новое место, а затем к каждой новой ячейке применять ф-цию DateValue()
Код
Sub StrtoDate()
    s = [a2:b5]
    Range("D2:E5").ClearFormats
    Range("D2:E5") = s
    For i = 2 To 5
        For j = 4 To 5
            Cells(i, j).Value = DateValue(Cells(i, j).Value)
        Next
    Next
End Sub
Однако, когда присваиваю новому диапазону массив, excel воспринимает его изначально как числовой и обрезает нули после единиц. Из-за этого вместо октября получаю январь.
Каким образом можно получить необходимый результат?

В примере нагляднее отобразил, что именно необходимо.
Получить имя item`а из dropdown в надстройке.
 
Прошу помочь разобраться:
Создал небольшую надстройку, в ней - выпадающий список(dropdown). Как напрямую получить имя(т.е. label) выбранного значения, а не его id?

html код:
Код
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
   <ribbon>
      <tabs>
         <tab id="tab_id" label="Test">
            <group id="id_test" label="test">                  
                  <dropDown id="id_drop" sizeString="namename" onAction="getnamew">
                  <item id="id1" label="name1" />
                  <item id="id2" label="name2" />
                  <item id="id3" label="name3" />
                  <item id="id4" label="name4" />
                  <item id="id5" label="name5" />
                  <item id="id6" label="name6" />
                  <item id="id7" label="name7" />      
               </dropDown>
               <button id="id_but" label="нажать" onAction="remember" />
            </group>
         </tab>
      </tabs>
   </ribbon>
</customUI>
vba код:
Код
Public need_name as Variant

Sub getnamew(control As IRibbonControl, id As String, index As Integer)
    need_name = id 'пытаюсь обратиться к выбранному элементу из dropdown`a, но получаю лишь id элемента, а надо имя
End Sub

Sub remember(control As IRibbonControl)
    MsgBox (need_name)
End Sub
Изменено: heso - 05.10.2016 10:51:33
Вылетает excel после создания нового документа, после создания нового документа, ввода текста - crash программы
 
win 7, office 2013.
При попытке создать новый документ, после ввода текста и перехода на другую ячейку excel вылетает.
Все надстройки отключены, переустанавливать офисный пакет целиком - не помогает . Однако в безопасном режиме excel(который через ctrl) все нормально работает.
Также нормально открываются и редактируются скачанные и старые документы.
Просьба помочь идеями, что может быть не так.

https://youtu.be/lfR6x4JbNiU
P.s если до момента ввода текста и смены ячейки сначала отформатировать ячейку(залить цветом например), то ничего не вылетает при последующей работе.
Небольшое уточнение-доработка по plex, Исправить метод undo
 
День добрый, хотел бы обратить ваше внимание на 1 момент:
В некоторых макросах при их выполнении можно сдеать UNDO.
Это достигается, путем сохранения некоторых данных из выделенной области в методе OldSelection2, к-ый является дочерним от SaveRange2.
3 элемент этого массива - .CLR с типом данных Integer

Если ему присваивать значения ColorIndex, то проблем не возникает, однако само использование ColorIndex не совсем верно, т.к он включает в себя лишь 56 цветов, и может случиться так, что один и тот же индекс присвоится разному цвету, и когда мы сделаем UNDO - то увидим, что вернулся не тот цвет, что нам был нужен.

Предложение - использовать вместо .ColorIndex -> .Color, но необходимо тогда поменять тип данных .CLR на variant(или double/long). Плюс отдельно обрабатывать незакрашенные ячейки(поскольку у св-ва .Color что белая ячейка, что неокрашенная = 16777215, у .ColorIndex же пустая - -4142, белая - 2)

P.s. пардон, что сначала этот вопрос отправил в форме на сайте.
Изменено: heso - 20.08.2015 11:28:48
Страницы: 1
Наверх