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

Страницы: 1 2 След.
Отправка файла или его указание в окне выбора IE, upload file IE
 
В общем хочу автоматизировать загрузку на сайт: пост запросом не получаеться, уже все перепробовал, с помощью ИЕ- по проще намного, но тут встала проблема - нужно аплоадить картинки, а их фиг укажешь...
Скрытый текст
нашел 2 процедурки
Upload_Set_Filename и Upload_Click_Open - но они не работают, может кто сталкивался?
Скрытый текст
Есть еще вариант через джава скрипт, я даже на сайте его нашел когда запрос ПОСТ разбирал, но ка к с ним справиться тоже не понимаю

Скрытый текст
Изменено: Иван - 30.10.2014 06:27:16
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Многопоточность или ее имитация, Загружаем несколько сайтов одновременно!
 
в общем в результате сейчас получился вот что-то вроде такого поисковика, мои способности + слабенький дизайнер и это все прямо в екселе:
Изменено: Иван - 27.10.2014 01:07:09
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Многопоточность или ее имитация, Загружаем несколько сайтов одновременно!
 
Как бы это смешно не звучало, но у меня проблема с синхронизацией асинхронного модуля)))
Сам модуль пока не готов, но вот то что сейчас использую:


Скрытый текст
и сама процедура, парсим ссылки на картинки

Скрытый текст
Исправил предварительно записав переменную т.е. вместо
Код
      Set FindsImg = GetTxt(AsyncXMLHttpResponse(I - 2), "src=.(.*?\.(\w){3})(.\d{1,}){1,}\.\w{3}""")
Код
       html$ = AsyncXMLHttpResponse(I - 2)
       Set FindsImg = GetTxt(html$, "src=.(.*?\.(\w){3})(.\d{1,}){1,}\.\w{3}""")
 
Изменено: Иван - 24.10.2014 14:07:23
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Многопоточность или ее имитация, Загружаем несколько сайтов одновременно!
 
Статью почти перевел, есть еще пару вопросов и мне нужна Ваша помощь.
1)Пока не пойму как реализовать CreateObject, с поздним связыванием...
2)Почему-то некоторые сайты не грузились, когда заменил на MSXML2.ServerXMLHTTP - пошло, но намного медленней и хочу реализовать следующее:
Использовать сначала  MSXML2.XMLHTTP, а если будет ошибка - то  MSXML2.ServerXMLHTTP (Хотя нет знаю, создам 2 копии классов и функций, просто буду при ошибке вызывать другой)
Сейчас протестировал и MSXML2.XMLHTTP работает но через раз.

Заменил все объявления MSXML на Object и связал в одном месте, только что протестировал - все прекрасно работает.
Но проблема с загрузкой через раз - остается.
1)Решено
2)Тоже вроде решено

уже встраиваю в один из проектов - прирост скорости ОГРОМНЫЙ + никаких подвисаний, сейчас делаю краштесты, возможно получится что-то уложить буду по десятку страниц сверху загружать.
Изменено: Иван - 22.10.2014 23:51:02
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Многопоточность или ее имитация, Загружаем несколько сайтов одновременно!
 
Интересно конечно, я еще посмотрю, но для этого нам нужно что? - таскать с собой этот файл или в создавать считывать из него и т.д. в любом случае использовать не ОЗУ, а тормознутый ВИНТ, что ой как не хорошо и тормозит, конечно по сравнению с тем что сейчас есть, лучше, но все-равно немного не-то.

Еще перевожу статью, как переведу - выложу, статья офигенная  и результат - тот что нужно!
Смысл тот же что и в предыдущем сообщении, но теперь можно делать сколько угодно асинхронных запросов!

 цепочка:
1)запрос пользователя (список сайтов, ссылок, запросов ...)
2) отправка запросов (ждем по вайлу пока одна из глобальных переменных не поменялась) , как только меняется
3.1)пошел запрос на следующий сайт в эту глобальную переменную
3.2)выполняем действие с переменной, после обработки ее идем к пункту 2)
4)обработано все, запись данных

Выложу код главный сюда:

Скрытый текст
и класс:
Скрытый текст
Изменено: Иван - 24.10.2014 14:08:17
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Многопоточность или ее имитация, Загружаем несколько сайтов одновременно!
 
Ну вот ночь не прошла даром и после долгого покраснения моих глаз, а потом ОТЛИЧНОГО СНА (очень рекомендую тем у кого-то что-то не получается) мы получили пока следующее:
Module - Test Async
Скрытый текст
class CXMLHTTPHandler
В этом классе есть 1 секрет который мы не видим и из-за чего все это дело работает, а именно:
1)нужно удалить и експортировать код
2)через блокнот или что-то подобное открыть и дописать после: "Sub OnReadyStateChange()" строчку "Attribute Value.VB_UserMemId = 0"
3)снова импортировать и смотреть на результат, взято из статьи http://www.cpearson.com/excel/DefaultMember.aspx
Скрытый текст


И что вы думаете - работает  :)  , да еще и как, как минимум, нет подвисания, а значит можно спокойно делать все что угодно пока грузится(как минимум Ваш PI прогресс не висит, а это уже что-то),
НО после прочтения первой статьи я понял что нельзя загружать несколько сайтов одновременно, только делать что-то другое т.к. обьект 1 и класс 1, дальше напишу как сделать так чтоюы можно было несколько сайтов загружать одновременно.
И еще не знаю что делать если выключена библиотека с MSXML2.XMLHttp?
П.С. Начал переводить главную статью готово  на 10%
Изменено: Иван - 24.10.2014 14:08:50
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Многопоточность или ее имитация, Загружаем несколько сайтов одновременно!
 
Пока только реальный способ только через ИЕ, даже вот
Скрытый текст

Очень интересная статья, где все есть  :)  
http://www.tushar-mehta.com/publish_train/xl_vba_cases/vba_web_pages_services/index.htm#_Toc173749354
занимаюсь переводом стать, выложу тут

только что вспомнил, когда делал и искал таймер нашел асинхронный таймер на вба, который работал прекрасно!
к Стати вот нашел ту статью на хабре http://habrahabr.ru/sandbox/67296/ (про таймер)
Изменено: Иван - 01.07.2015 20:45:23
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Многопоточность или ее имитация, Загружаем несколько сайтов одновременно!
 
О Значит кто-то все-таки сталкивался и проверял, да ваш сайт вообще нечто - он меня  и вдохновил и обучил за прошлый год и сейчас переодически смотрю обновления.
Цитата
Игорь пишет:  (т.е. пока ответ сервера не получен, - другие команды макросов выполняться не будут, - т.к. VBA однопоточный)
как вариант, - написать отдельный компонент (не на VBA)? подключить к проекту, - и через него работать с многопоточностью
Да об этом то и идет речь минимальная мысль это IE их можно много открывать и проверять загруженность страницы (но он долго грузит), далее средства cURL или чего-то подобного (сейчас уже пытаюсь реализовать проблема в передаче данных или через буфер или файлы) + ко всему у нас есть CMD, в котором что-то можно выделить, но опять-же не хотелось бы батник таскать с программой (нужно программно создавать) и т.д.                                                                                             Сейчас еще смотрю что можно сделать написав ADD IN для VBA по типу MZTOOLZ, какие там есть возможности.
Как вариант думаю написать что-то на Delphi или C++.
Изменено: Иван - 20.10.2014 23:48:30
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Многопоточность или ее имитация, Загружаем несколько сайтов одновременно!
 
Во вложении класс и пример работы с ним!
Очень много времени трачу именно на загрузку страниц и т.д. сейчас активно читаю MSDN  и забугорные форму и как это реализуется на других языках, cURL  и т.д. ищу альтернативу особенно ИНДУССКОМУ IE (ой как они его любят же).
В общем случае мы используем один из этих объектов и получаем ответы от сервера так:
Код
  'Dim XMLHttp As Object: Set XMLHttp = CreateObject("Microsoft.XMLHTTP") 
  'Dim XMLHttp As Object: Set XMLHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
  'Dim XMLHttp As Object: Set XMLHttp = CreateObject("MSXML2.ServerXMLHTTP")
  'Dim XMLHttp As Object: Set XMLHttp = CreateObject("MSXML2.XMLHttp") '
  'Dim XMLHttp As Object: Set XMLHttp = New WinHttpRequest
  XMLHttp.Open "GET", "site.com", False 'OR "POST" type and True for redirect
  'XMLHttp.SetRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
  'XMLHttp.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  'XMLHttp.SetRequestHeader "Cache-Control", "no-store, no-cache"
  'XMLHttp.SetRequestHeader "Pragma", "no-cache"
  'XMLHttp.Send StrConv("title=Title&cat=Cat&post=PostText&pas=tipapass", vbFromUnicode)
  XMLHttp.Send '"title=Title&cat=Cat&post=PostText&pas=tipapass" << тут дольше всего висит
  Debug.Print XMLHttp.ResponseText
  Set XMLHttp = Nothing
 
Если кто сталкивался или знает  XMLHttp.Send действительно отправляет и ждет ответа или может только отправить и не ждать или он и так только отправляет
какие еще есть варианты?

По сути в общем смысле идея следующая:
1)сделать или массив или несколько объектов через рекурсию, любого из перечисленных выше или может даже IE
2)создали, отправили сайт на загрузку, проверили загрузился или нет 1 раз, если нет:
2.1)создали, отправили сайт на загрузку, проверили загрузился или нет ПЕРВЫЙ САЙТ, потом наш, если нет:
2.n)создали, отправили сайт на загрузку, проверили загрузился или нет ПЕРВЫЙ САЙТ, если да - забрали данные, убили обьект, проверили следующий, до n

Реально ли так сделать? - пока еще думаю на счет реализации и преимущества в скорости.
Пока по сравнению всех выше перечисленных объектов WinHttp.WinHttpRequest.5.1 - работает дольше всех в 2.5 раза, но грузит все сайты (и китайские) с любого URL, у него есть TimeAut, если сильно долго грузится и т.д., в теории есть и
Цитата
WaitForResponse
Specifies the wait time, in seconds, for an asynchronous Send method to complete, with optional time-out value.
но пока я не вычитал как им пользоваться и можно ли на VBA.
Во вложении класс и пример работы с ним!
Изменено: Иван - 22.10.2014 11:16:16 (Первая часть ответа - готова)
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Что быстрее - WorksheetFinction.Match или Find или цикл?, к вопросу об использовании функций листа в VBA
 
Если честно, всегда считал что поиск по массиву намного быстрее т.к. он весь в памяти, а не к листу обращаемся + там еще всегда нужно пути полные прописывать книга\лист и т.д., а массив он в памяти работай с ним (бери что хочешь, записуй что хочешь, он и динамичный может быть, едиственное что столбцы\строки наоборот местами, что не привычно по началу), потом освободи память, а тут таааакой прорыв - спасибо за пост!
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
добавление собственных кнопок в меню Excel 2007++
 
спасибо огромное, можно закрывать
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
добавление собственных кнопок в меню Excel 2007++
 
спасибо, хороший урок, а кто знает как увеличить значек или кнопку сделать побольше?
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
добавление собственных кнопок в меню Excel 2007++
 
Столкнулся со следующей проблемой, хочу наконец сделать нормальное меню и таки интерфейс я сделал, а вот вызывать кнопкой на листе - не красиво, а пункотом в меню ячейки не практично, раньше делал вот так:

Код
    Dim objCmdBrBtn As CommandBarButton
    
  CommandBars("Cell").Reset
  
  Set objCmdBrBtn = CommandBars("Cell").Controls.Add(msoControlButton, , , , True)
  
  With objCmdBrBtn
    .Caption = "Запуск обработки данных"
    .DescriptionText = "Показывает форму настройки"
    .enabled = True
    .OnAction = "ShowFormFilter"
    .TooltipText = "Запуск обработки данных"
    .Visible = True
    .FaceId = 2
  End With
 
сейчас где-то в интернетах нашел другой способ, добавил, а убрать или поменять уже не могу
Код
Private Sub Workbook_Open()
  Call ReadSettings
  'Application.CommandBars.Reset
  'Application.CommandBars("НАДСТРОЙКИ").Reset
  With Application.CommandBars.Add(Name:="Menu", temporary:=True)
        .Visible = True
        With .Controls.Add
            .OnAction = "showformsettings"
            .Style = 2
            .Caption = "Parser"
            .FaceId = 25 ' - значок кнопки из стандартного набора офиса
        End With
    End With
End Sub
 
Как видно выше "пытался" найти как его сбросить или убрать по аналогии с первым вариантом, но все тщетно ...
Хочу иметь свою кнопку в т.н. "ленте", где ее там разместить уже другой вопрос пусть хоть в надстройках, или в переименовать лучше конечно.
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Оставить ТОЛЬКО буквы в тексте, а символы заменить на *, Функция заменяющая все символы (!"№;%:?()...) на *
 
а он мне цифры оставляет, как убрать из шаблона цифры?
\dСоответствует цифре. То же, что и [0-9]
\DНе цифра. То же, что и [^0-9]
нашел тут http://rusproject.narod.ru/article/regexp.htm
Изменено: Иван - 27.08.2014 13:04:57
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Оставить ТОЛЬКО буквы в тексте, а символы заменить на *, Функция заменяющая все символы (!"№;%:?()...) на *
 
оооо спасибо огромное:
нашел там вот это :
Код
Private FReg As Object
Public Function replacePunctuations(ByVal this As String) As String
    If FReg Is Nothing Then
     Set FReg = CreateObject("VBScript.RegExp")
     FReg.IgnoreCase = True
     FReg.Global = True: FReg.Pattern = "[^, \da-zёа-я]"
    End If
    replacePunctuations = FReg.Replace(this, "")
End Function 
и исправил вот так:
Код
Public Function replacePunctuations(ByVal this As String) As String
    Dim FReg As Object
    If FReg Is Nothing Then
        Set FReg = CreateObject("VBScript.RegExp")
        FReg.IgnoreCase = True
        FReg.Global = True: FReg.Pattern = "[^\da-z¸à-ÿ]"
    End If
    replacePunctuations = FReg.Replace(this, "*")
End Function 
вроде-бы правильно работает
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Оставить ТОЛЬКО буквы в тексте, а символы заменить на *, Функция заменяющая все символы (!"№;%:?()...) на *
 
Полазив по интернету нашел функцию
Код
Function Extract_Number_from_Text(sWord As String, Optional Metod As Integer)
'sWord = ссылка на ячейку или непосредственно текст
'Metod = 0 – числа
'Metod = 1 – текст
    Dim sSymbol As String, sInsertWord As String
    Dim i As Integer
 
    If sWord = "" Then Extract_Number_from_Text = "Нет данных!": Exit Function
    sInsertWord = ""
    sSymbol = ""
    For i = 1 To Len(sWord)
        sSymbol = Mid(sWord, i, 1)
        If Metod = 1 Then
            If Not LCase(sSymbol) Like "*[0-9]*" Then
                If (sSymbol = "," Or sSymbol = "." Or sSymbol = " ") And i > 1 Then
                    If Mid(sWord, i - 1, 1) Like "*[0-9]*" And Mid(sWord, i + 1, 1) Like "*[0-9]*" Then
                        sSymbol = ""
                    End If
                End If
                sInsertWord = sInsertWord & sSymbol
            End If
        Else
            If LCase(sSymbol) Like "*[0-9.,;:-]*" Then
                If LCase(sSymbol) Like "*[.,]*" And i > 1 Then
                    If Not Mid(sWord, i - 1, 1) Like "*[0-9]*" Or Not Mid(sWord, i + 1, 1) Like "*[0-9]*" Then
                        sSymbol = ""
                    End If
                End If
                sInsertWord = sInsertWord & sSymbol
            End If
        End If
    Next i
    Extract_Number_from_Text = sInsertWord
End Function 
 которая заменяет цифры и решил ее дописать:
Но не знаю как написать, мне нужно заменить все символы (0-9~`!@#$%^&*()-_=+,./?\|{}[]<>;:""' ) и т.д.
в ANCII это все символы с 0-64  и 91-96 и 123-126 ну и вроде-бы все
как их указать в like я не знаю
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Создания сообщений на сайте CMS WordPress, С помощью POST запроса или IE
 
Спасибо, регулярно пользуюсь вашим сайтом и очень вам благодарен, особенно вашим готовым примером именно с его помощью сейчас отправляю запросы и получаю информацию.
Сделал так:
Все переписал, потом в точности все это дело отправил, но отправлял с помощью одно и того-же xmlhttp = CreateObject("WinHttp.WinHttpRequest.5.1"  ;)  
я его не пересоздавал, я просто переписал (данные которые отправляются), отправил логин (вроде получилось), потом переписал  - xmlhttp.Open "POST", и PostData = "", а потом заново добавил туда данные ну и отправил еще раз уже на создание поста
Изменено: Иван - 03.08.2014 02:41:11
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Создания сообщений на сайте CMS WordPress, С помощью POST запроса или IE
 
Помогите включить кукки и записать их из
Код
     'Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
     Set xmlhttp = CreateObject("WinHttp.WinHttpRequest.5.1") 
вот что мне браузер возвращает
Цитата
Осторожно: Режим обслуживания активен!
ОШИБКА: Cookies либо заблокированы, либо не поддерживаются вашим браузером. Чтобы использовать WordPress, нужно разрешить cookies.
пробую получить через
Код
Function GetHeader(sURL As String) As String
Dim oXHTTP As Object
Set oXHTTP = CreateObject("MSXML2.XMLHTTP")
oXHTTP.Open "HEAD", sURL, False
oXHTTP.send
GetHeader = oXHTTP.GetAllResponseHeaders()
Dim c As Range
End Function
Изменено: Иван - 14.08.2014 21:10:04
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Создания сообщений на сайте CMS WordPress, С помощью POST запроса или IE
 
начало я давно уже проложил, я написал макрос для того чтобы он залогинился и запомнил меня (ексель).
А вот дальше с пост запросом не пошло и наработки ушли (не сохранил).

Сейчас попробовал ручками с помощью IE это делать, но опять-же столкнулся с проблемами, который возможно можно решить, но я не хочу т.е. ИЕ очень много памяти жрет и достаточно долго работает по сравнению с обычной отправкой запроса на сайт.
Конкретно такие вопросы у меня: Как можно отправить запрос на сайт для создания поста и что для этого нужно, у меня снифер поймал следующие данные при отправке :
Скрытый текст
Нужно ли отправлять все эти данные? и как получить post_ID точнее как он его получает, если не только я могу посты создавать?
Если кто сталкивался с подобным подскажите помогите!

К Стати у этого сайта база на МУСКУЛЕ, если кто знает как это сделать с его помощью возможно подскажите.

Я сейчас играюсь со значениями, может и получится сделать.


Код
Sub PostForPostWP()
     'On Error Resume Next
     Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
     xmlhttp.Open "POST", "http://nonator.com/wp-login.php", "True"
     xmlhttp.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"    ' чтобы избежать кеширования
    Dim POST() As Byte, PostData$
      PostData = "log=test&pwd=test&rememberme=forever&wp-submit=%D0%92%D0%BE%D0%B9%D1%82%D0%B8&redirect_to=http%3A%2F%2Fnonator.com%2Fwp-admin%2F&testcookie=1"
'     PostData = PostData & "log=test"
'     PostData = PostData & "&pwd=test"
'     PostData = PostData & "&rememberme=forever"
'     PostData = PostData & "&wp-submit=Войти"
'     'PostData = PostData & "&redirect_to=http://nonator.com/wp-admin/post-new.php" 'post-new.php
'     PostData = PostData & "&testcookie=1"
     POST = StrConv(PostData, vbFromUnicode)
     xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
     xmlhttp.send (POST): DoEvents
     If xmlhttp.Status <> 200 Then Exit Sub
        Debug.Print xmlhttp.responseText
     Set xmlhttp = Nothing

End Sub
 
Ага разобрался Мне нужно включить кукки и как-то или где-то их хранить.
Изменено: Иван - 02.08.2014 19:02:22
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Макрос для регулирования нагрузки процессора
 
Цитата
Hopsright пишет:
Нет готовых решений случайно, уверен что много кто с таким сталкивался
решений по поводу чего?  Паузы т.е. задержки? - или визуализации?
http  :/  /excelvba.ru/tools/ProgressIndicator - то что я пользуюсь

задержка на 400 мс
Код
Dim t0 As Single
t0 = Timer
Do While Timer - t0 < 0.4
  DoEvents
Loop 

Ну и конечно то что выше написали вам, переведите просто все ваши формулы на макросы и все или сделайтеиз формул функции и используйте как формулу (менее рентабельно)
Изменено: Иван - 25.07.2014 01:35:28
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Серьезные или Сложные вопросы по VBA, Формы, Программирование
 
Да вариант, я этот уже и сам реализовал, подобно тому что вы дали, но меня это не совсем устраивает, хотя решает частично проблему.
Ладно, пока пусть так будет.
Изменено: Иван - 25.07.2014 14:28:21
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Макрос для регулирования нагрузки процессора
 
да запросто во
1) добавь в цикл обработки - визуализацию процесса, любую (есть готовые варианты), для того чтобы видно было процент и процесс и можно было отменить, а не казалось что "зависло"
2)в процесс обработки добавь Паузы Wait`ы и подбери нужую задержку для уменьшения нагрузки
3)Посмотри темы про оптимизацию, уверен что очень много чего можно оптимизировать, не только отключая визуализациии всякие и рюшечки, к примеру все нужно переносить на оперативку и вычислять сначало в памяти, для  этого создавай переменные и записуй сначало в них указатели, а лучше данные - потом производи с переменными уже все процессы, а потом приравняй таблицу к переменным. (надеюсь понятно изложил)
И вуаля

П.С. Найди места самые трудоемкие - для этого есть в инете мого тоже разных процедур и функций и выведи эту часть на форум, а мы посмотрим.
Изменено: Иван - 25.07.2014 00:30:08
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Серьезные или Сложные вопросы по VBA, Формы, Программирование
 
Текущий вопрос - на форме, есть listbox в нем есть текст, который не помещается, попробовал вот так:
Код
Private Sub Inf_Click()
 Inf.ControlTipText = CStr(Inf.List(Inf.ListIndex))
End Sub 
да - хорошо, но выводиться только, если вывести за пределы и навести снова  :(
Поискал по нэту, принудительного выведения - нету, переноса строк - нету, даже событие нельзя отловить перед показом этого ControlTipText, чтобы его поменять перед показом, писал в процедуре движения мышки...

У меня на уме только поверх всего создавать временный Label с содержимым вместо этого ControlTipText.
Кто сталкивался или знает ответ - подскажите.

В тему что-то подобное, интересное буду заносить!
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Иерархия объектов(класcов) в VBA Excel.
 
Вставлю свои пять копеек в тему, точно не скажу, т.к. сужу по другим языкам, но в ВБА тоже видел это свойство - называется оно Parent
http://msdn.microsoft.com/en-us/library/office/aa224980(v=office.11).aspx
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Замена пустых ячеек на среднее соседних
 
тогда макрос нужно писать в области UsedRange и постоянно вычислять после изменений на листве ь.е. записать то что выше в событие изменение листа.
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Ужасный вид таблиц. Преобразовать в нормальный вид
 
Не знаю что с этими таблицами делать, с одной вроде придумал - поделю ее пока по периодам ее (недели) и будет нормально, а вот что делать со второй там невозможно работать и фильтры разные пробовал создавать и менять столбцы\строки...
Вся суть вопроса какой может быть вид у таблицы где есть 3+1 параметра (адрес, человек, действие + время) по которым можно было-бы удобно фильтрировать.

Спасибо Вам всем что помогаете мне уже не первый раз, видел тут пару тем где вы предлагали отличные преобразования таблиц в нормальный вид, может и мое посмотрите.
В файле пример - таблица где мы "распространяем", честно думал очень долго как ее еще можно преобразовать, но ничего даже с использованием формы для поиска и фильтрации - очень не удобно.

Там где пример отчета - я думаю поделить на недели и на другие структуры уже начал работать с макросом, на сколько я понимаю нужно: поиск вдоль строки, если нашли объединеную область - то 1)создать новый лист, 2)первый столбик скопировать, 3) скопировать все столбики под выделенной областью и над.
Это я вроде как умею, но не получается что-то определить объедененную область ее начало и конец, сейчас делю ее и заполняю одинаковыми значениями и ищу их.
Изменено: ivanius - 21.07.2014 10:41:49 (добавил суть)
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Заставить VBA вводить в текстбоксы на веб-странице данные из ячейки
 
все это есть - и примеры и статьи, ексель может работать как с отправкой запросов, так и с Эксплорером.
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Поиск текстовых значений на листе. Ошибка.
 
PavelKs, Спасибо огромное!! раньше так и было, потом заменил, почему - даже не знаю!
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Поиск текстовых значений на листе. Ошибка.
 
Помогите с ошибкой поиска текста, иду от большего к меньшему, но почему-то выводит ошибку вместо текста, вроде-бы все учел уже...

Код
Function код(cell, cell2, cell3) As String
    Dim ws2, buf As Range
    Set ws2 = Sheets(2).Range("A:A")
'On Error Resume Next
    
'Set buf = ws2.Cells.Find(What:=cell.Value, LookIn:=xlFormulas, LookAt:=xlPart)
'Do While Not buf Is Nothing
'If (InStr(buf, cell2.Value) > 0) Or (InStr(buf, Left(cell3.Value, Len(cell3.Value) - 3)) > 0) Then
'   код = buf.Offset(0, 2).Value
'   exit do
'Else
'   Set buf = ws2.Cells.Findnext(buf)
'   код = "Не найдено"
'End If
'Wend


    Set buf = ws2.Cells.Find(What:=cell.Value + "*" + cell2.Value + "*" + Left(cell3.Value, Len(cell3.Value) - 3), LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False)
    If buf Is Nothing Then
        Set buf = ws2.Cells.Find(What:=cell.Value + "*" + Left(cell3.Value, Len(cell3.Value) - 3) + "*" + cell2.Value, LookIn:=xlFormulas, _
                LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False)
    If buf Is Nothing Then
        Set buf = ws2.Cells.Find(What:=cell.Value + "*" + cell2.Value, LookIn:=xlFormulas, _
                LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False)
    If buf Is Nothing Then
        Set buf = ws2.Cells.Find(What:=cell.Value + "*" + Left(cell3.Value, Len(cell3.Value) - 3), LookIn:=xlFormulas, _
                LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False)
    If buf Is Nothing Then
        Set buf = ws2.Cells.Find(What:=cell.Value, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False)
    End If
    End If
    End If
    End If
    
    'If Not buf Is Nothing Then
        код = buf.Offset(0, 2).Value
'    Else
'        код = ws2.Cells.Find(What:=cell.Value, LookIn:=xlFormulas, _
'            LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False).Offset(0, 2).Value
'    End If
    
End Function
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Поиск и замена по словарю (перевод), разные способы поиска и замены по словарю для перевода
 
Спасибо что объяснили, а каким образом тогда будет лучше реализовать поиск?
Автоматизация приложений, разработка ботов, парсинг сайтов, поиск информации и многое другое на языках : Delphi, C++, VBA. Информация в профиле.
Страницы: 1 2 След.
Наверх