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

Страницы: 1
макрос excel на анализ входящей почты outloock и отправку файла excel
 
Цитата
написал:
Ромул РОМ,  Что за ..... вернитесь и исправьте или грохну и сообщения и учетку забаню. Злой я сегодня.
Я не понимаю как с телефона исправить старые сообщения. Сегодня вечером с компа попробую сделать.
макрос excel на анализ входящей почты outloock и отправку файла excel
 
Цитата
написал:
Цитата
написал:
сверху написал вопрос
похвально  Но лучше бы оформили его правильно, а не смешивали с цитированием всего сообщения. Ничего в итоге не понятно и читается с трудом.
По факту самого вопроса:
Цитата
написал:
Как можно сделать универсальной эту строку под любую версию офиса?
Эта строка и так универсальна и работает с любой версией офиса. Где Вы там увидели хоть намек на конкретную версию?
Дело не в строке, а в самом ПК. Там просто либо установлена урезанная версия офиса, либо Outlook установлен криво. Поэтому и не получается подключиться к нему методом позднего связывания.
Цитата
Спасибо за ответ. Но с телефона у меня только так получается отвечать.... Не могу разобраться как корректно ответить.
Цитата
Я поменял createobject на getobject - вроде теперь работает нормально. Сильно изменил я логику работы макроса при этом?
макрос excel на анализ входящей почты outloock и отправку файла excel
 
Anchoret,  сверху написал вопрос
макрос excel на анализ входящей почты outloock и отправку файла excel
 
Цитата
написал:
Подобным макаром можно по запросу (кнопке) шерстить папки Outlook из Excel:
Код
    [URL=#]?[/URL]       1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17      Sub   ReadOutMail()    Dim   fld   As   Object    Set   fld = CreateObject(  "Outlook.Application"  )    Set   aa = fld.Session.CurrentUser.Session.Folders    For   Each   bb   In   aa        For   Each   cc   In   bb.Folders          Debug.Print cc.Name          For   Each   dd   In   cc.Items            If   InStr(dd.Subject,   "Нужная тема"  ) > 0   Then   'выбираем тему письма              Debug.Print dd.Subject &   " "   & dd.CreationTime              Debug.Print dd.Attachments.Count              ' здесь какой-то код по обработке            End   If          Next        Next    Next    End   Sub   
 
Если подключить словарь или массив, то можно собрать нужные данные по письмам с определенной темой или отправителем.

Все содержимое писем в Outlook в HTML формате, насколько я знаю. Это на случай если потребуется ковырять тело писем, то потребуется парсер.
Цитата
Этот Макрос работает.но на некоторых пк выдаёт ошибку "run time error 429. ActiveX component can,t create object". Ошибка эта вылетает на строке set fld=createobject"outlook.application")
Цитата
Мысль,что причина в версии аутлука либо в разрядности. Как можно сделать универсальной эту строку под любую версию офиса?
цикл по отфильтрованному диапазону или как скопировать отфильтрованный диапазон в другую книгу
 
Код
Private Sub CommandButton3_Click()

Dim objFSO1 As Object, strFileName$, strFilePath$
Set objFSO1 = CreateObject("Scripting.FileSystemObject")

' ссылка на 1 лист книги
Dim sheet1 As Worksheet
Set sheet1 = ActiveWorkbook.Sheets(1)
' ссылка на 2 лист книги
Dim sheet2 As Worksheet
Set sheet2 = ActiveWorkbook.Sheets(2)
' ссылка на 3 лист книги
Dim sheet3 As Worksheet
Set sheet3 = ActiveWorkbook.Sheets(3)

Dim lastrow1 As Long
Dim c As Range

Application.CutCopyMode = False

  avFiles1 = Sheets("Лист2").TextBox1.Text
  strFileName1 = objFSO1.GetFileName(avFiles1)
   Workbooks.Open Filename:=avFiles1
   Set WS_bank = Application.Workbooks(strFileName1)
   
 '***********************************************************

kodTU = Cells(12, 4).Value

WS_bank.Sheets("page").Range("F2").Select
Selection.AutoFilter
WS_bank.Sheets("page").Range("$A$1:$W$500000").AutoFilter Field:=6, Criteria1:=CStr(kodTU)


Set c = ActiveCell.CurrentRegion.SpecialCells(xlCellTypeVisible)

i = 16

LastStr_oktmo = sheet3.Cells(1, 1).CurrentRegion.Rows.Count
LastStr_bank = WS_bank.Sheets("page").AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count - 1

For oktmo_i = 2 To LastStr_oktmo

konec = CStr(sheet3.Cells(oktmo_i, 1).Value)
nachalo = CStr(sheet3.Cells(oktmo_i, 1).Value)

        If (Right(konec, 3) = "000") And (Left(nachalo, 2) = CStr(kodTU)) Then
            kod_MO = Left(sheet3.Cells(oktmo_i, 1).Value,     '(CStr(sheet3.Cells(oktmo_i, 1).Value)) 'вычленяю код МО из справочника ОКТМО
            i = i + 1  ' нашел очередное МО, значит нарастил счетчик строк в итоговой таблице
            sheet1.Cells(i, 1).Value = sheet3.Cells(oktmo_i, 2).Value ' переношу название МО из справочника ОКТМО на 1 лист
        'считаю банкоматы *****************
        kol_bank = 0
          ' For ii = 2 To LastStr_bank
          For Each c In Range("A2", Cells(Rows.Count, "A").End(xlUp)).SpecialCells(xlCellTypeVisible)
           With c
            tmp = .Value ' ?????????/???????? ? ??????? ??????
     If InStr(tmp, CStr(kod_MO)) > 0 Then kol_bank = kol_bank + 1
    ' If InStr(WS_bank.Sheets("page").Cells(ii, 11).Value, CStr(kod_MO)) > 0 Then kol_bank = kol_bank + 1
     
     End With
                   ' If InStr(WS_bank.Sheets("page").Cells(ii, 11).Value, CStr(kod_MO)) > 0 Then kol_bank = kol_bank + 1
           Next
        sheet1.Cells(i, 5).Value = kol_bank
        ii = 2
        End If
        
      '  For i = 17 To PosStr_oktmo + 17
 
        Next
        '**********************************
'Sheets("Лист2").Visible = True

'  Включаю обновление экрана
    Application.ScreenUpdating = True

Workbooks(strFileName1).Close False

меня смущает еще вот эта часть кода, т.к. не хотелось бы заведомо большой диапазон фильтровать- пол миллиона строк. но количество строк может быть разным, поэтому взял с запасом.
Код
WS_bank.Sheets("page").Range("$A$1:$W$500000").AutoFilter Field:=6, Criteria1:=CStr(kodTU)
по хорошему тут бы как-то определять размер таблицы для фильтрации... или же фильтровать только то количество строк, сколько есть на листе
цикл по отфильтрованному диапазону или как скопировать отфильтрованный диапазон в другую книгу
 
Приветствую всех!
только недавно на форуме тут, но уже много прочитал... но что-то не смог решить свою проблему(((
у мня макрос запускается из одного файла, он открывает другую книгу и в ней фильтрует данные. далее мне нужно пройтись циклом по этому отфильтрованному диапазону. не получается сделать цикл по отфильтрованному диапазону...
либо я даже согласен на то, чтобы скопировать весь этот отфильтрованный диапазон в книгу, из которой запустился макрос, на новый лист. и уже там буду обрабатывать данные.
подскажите плиз, второй день мучаюсь((
Изменено: Ромул РОМ - 19.03.2021 00:12:53
Страницы: 1
Наверх