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

Страницы: 1
Макрос VBA Outlook на открытие книги Excel при получении входящего сообщения с определенной темой, Запуск Excel при получении входящего сообщения Outlook по теме письма
 
Добрый день!
Пытаюсь наваять макрос в VBA Outlook, который по теме входящего сообщения будет запускать Excel и открывать книгу (и там запускать макрос)
из разных интернетов нарыл код, только чего-то не хватает - не срабатывает
и Application_NewMail, и Application_NewMailEx не работают - выдают ошибку на "if..."
понимаю, что надо положить в переменную Item это самое новое письмо, но не могу сообразить как..
помогите, пожалуйста!
Код
Private Sub Application_NewMail()
Dim Item As Outlook.MailItem ()
Dim xl As Object
       If Item.Subject = "Запуск макроса 1" Then
           Item.MarkComplete
            Set xl = CreateObject("Excel.Application")
            xl.Workbooks.Open ("C:\Users\Desktop\Работа\Макрос1.xlsm")
            xl.Run "'Макрос1.xlsm!'Test"
            xl.Quit
         Set xl = Nothing
       End If

End Sub

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim Item As Outlook.MailItem
Dim xl As Object
       If Item.Subject = "Запуск макроса 1" Then
           Item.MarkComplete
           Set xl = CreateObject("Excel.Application")
           xl.Workbooks.Open ("C:\Users\Users\Desktop\Работа\Макрос1.xlsm")
            xl.Run "'Макрос1.xlsm!'Test"
            xl.Quit
         Set xl = Nothing
       End If

End Sub
Макрос с пропуском ошибок сбоя Excel, Макрос с пропуском ошибок сбоя Excel
 
Добрый день!
помогите, пожалуйста)
Сколько ни гуглил  - не нашел способа решить проблему.

есть макрос, который проходит по папкам/файлам на сервере и обновляет в них запросы Power Query (по очереди), сохраняет файл, переходит к следующему (обычный цикл перебора файлов). Много файлов и в каждом много запросов.
НО если обновляемый файл сбойнул при обновлении, вылетел и хочет заново открыться, то выскакивает окошко с ошибкой типа
"Не удалось... Отправить нахмуренный смайлик".
И ТОЛЬКО если ВРУЧНУЮ нажать "Закрыть", то макрос дальше продолжает работу.
если ли способ, команды VBA, чтобы макрос игнорировал эти окна с ошибками, или сам жал кнопку "закрыть"?

аналогичная проблема, если этот макрос пытается сохранить файл, обычная команда Save,
а сохранение не происходит по причине сбоя сервера, или еще что-то ("Файл занят другим пользователем. Пожалуйста, повторите попытку позже..."), то пока ВРУЧНУЮ не нажмешь "ок" в этом окошке - то макрос дальше не работает.
есть ли команды VBA, чтобы обойти эти окошки как-то, или нажать в них "ок" сразу?
или перед сохранением файла, если не получается вот по каким-то причинам сохранить, то продолжать дальше, перейти к следующему файлу?
Сколько ни гуглил  - не нашел...

вот код макроса
Код
Sub Обновление_запросов_в_файлах_папок()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.AskToUpdateLinks = False
Dim lLastRow As Long
On Error Resume Next
   lLastRow = Worksheets("Папки").Cells(Rows.Count, 1).End(xlUp).Row
    Set TW = ThisWorkbook 'объявляем короткую объект-переменную, нужна будет для передачи в процедуру RefreshQueries
    For i = 2 To lLastRow
        WORK_FOLDER = TW.Sheets("Папки").Range("A" & i).Value
        If Not IsEmpty(WORK_FOLDER) Then 'если в ячейке не пустота, то
            With CreateObject("Scripting.FileSystemObject") 'используем объект, для работы с папками и файлами(позднее связывание)
                For Each File In .GetFolder(WORK_FOLDER).Files 'перечисляем все файлы в указанной папке
                    If InStr(File, ".xls") > 0 Then 'проверяем чтобы в имени файла имелись символы .xls(т.е. это могут быть .xls, xlsm, xlsx, xlsb), эту проверку можно переделать, т.к. если будет файл file.xls.doc, то поймаем ошибку
                        .CopyFile File, WORK_FOLDER & "\Архив\" & File.Name & " " & Format(Now() - 1, "DD/MM/YYYY") & ".xlsm"
                        RefreshQueries TW, File, i: DoEvents 'передаем процедуре RefreshQueries параметры - объект нашей книги, полное имя файла и номер строки: после окончания процедуры запускаем DoEvents
                    End If
                Next File
            End With
        End If
        TW.Sheets("Папки").Range("B" & i).Value = DateValue(Now) & " / " & TimeValue(Now): DoEvents
    Next i
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Application.AskToUpdateLinks = True
End Sub

Private Sub RefreshQueries(ByVal TW As Workbook, ByVal File As String, ByVal Row As Integer)
                BValue = TW.Sheets("Папки").Range("B" & Row).Value
                CValue = TW.Sheets("Ошибки").Range("A2").Value
                Set WO = Workbooks.Open(File)
                FName = WO.Name
                If WO.ReadOnly = False Then
                    On Error Resume Next
                    For Each oc In WO.Connections
                      oc.OLEDBConnection.BackgroundQuery = False 'отключаем обновление в фоне
                                        oc.Refresh 'обновляем
                                        oc.OLEDBConnection.BackgroundQuery = True 'включаем обновление в фоне
                            If Err.Number <> 0 Then
                                'TW.Sheets("Папки").Range("C" & Row).Value = IIf(Len(CValue) = 0, FName & ". " & "Сбой запросов PQ. " & oc.Name, CValue & vbCrLf & FName & ". " & "Сбой запросов PQ. " & oc.Name): DoEvents
                                TW.Sheets("Ошибки").Range("A2").Value = IIf(Len(CValue) = 0, FName & ". " & "Сбой запросов PQ. " & oc.Name, CValue & vbCrLf & FName & ". " & "Сбой запросов PQ. " & oc.Name): DoEvents
                                Err.Clear
                            End If
                     Next oc
                TW.Sheets("Папки").Range("B" & Row).Value = DateValue(Now) & " / " & TimeValue(Now)
                WO.Close True
                Set WO = Nothing
                Else
                TW.Sheets("Ошибки").Range("A2").Value = IIf(Len(CValue) = 0, FName & ". " & "Был недоступен для редактирования", CValue & vbCrLf & FName & ". " & "Был недоступен для редактирования"): DoEvents
                Err.Clear
                WO.Close False
                Set WO = Nothing
                End If
End Sub
В 100 файлах заменить часть формул со на правильные ссылки
 
Добрый день!
прошу помочь.
Нужно в 100 файлах заменить часть формул со #ССЫЛКАМИ на правильные ссылки (на умную таблицу)
В ручном режиме "найти и заменить"  - работает прекрасно. Находит, заменяет, формула работает
Записываю эти действия макрорекордером - и макрос не работает. Вообще напрочь.
Код
    Cells.Replace What:="СУММЕСЛИМН(#ССЫЛКА!;#ССЫЛКА!", Replacement:= _
        "СУММЕСЛИМН(ФОТ_мой[Сумма];ФОТ_мой[критерий]", LookAt:=xlPart, SearchOrder _
        :=xlByColumns, MatchCase:=False, SearchFormat:=False, ReplaceFormat:= _
        False, FormulaVersion:=xlReplaceFormula2
В чем может быть дело?
прилагаю файл, с примером формул (на 2х листах) и записанным макрорекордером кодом.
на 9-10 строках написал, что нужно найти и на что заменить.
Обход ошибки макроса, работающего с другой книгой, если она недоступна для редактирования
 
Добрый день!
есть макрос, который в цикле перебирает файлы в папках, открывает их для редактирования, обновляет в них запросы Power Query и закрывает с сохранением, и далее по циклу след файл.
если запросы не обновляются - ошибка - то на этот случай стоит метка ErrorHandle, к которой идет макрос в случае ошибки
сейчас получается. что если книга недоступная для редактирования - то макрос останавливается, ждем пока я там нажму всякие "ок"/"не ок" (ну вы поняли)
Помогите переписать код в этой метке, чтобы в случае ошибки - последним шагом книга закрывалась БЕЗ сохранения, и дальше шла по основному циклу - открывала след файл и так далее...
я попробовал, но макрос не работает - зависает на файле с ошибкой
Код
rivate Sub RefreshQueries(ByVal TW As Workbook, ByVal File As String, ByVal Row As Integer)
                Application.AskToUpdateLinks = False
                Set WO = Workbooks.Open(File) 'открываем книгу по полному имени файла и сразу передаем в объект-переменную WO
                On Error GoTo ErrorHandler 'включаем обработчик ошибок, с перебросом к метке в случае ошибки
                For Each oc In WO.Connections 'перебираем все подключения в книге
                    oc.OLEDBConnection.BackgroundQuery = False 'отключаем обновление в фоне
                    oc.Refresh 'обновляем
                    oc.OLEDBConnection.BackgroundQuery = True 'включаем обновление в фоне
                Next
ErrorHandler: 'метка
                If Err.Number <> 0 Then 'если в объекте Err параметр Number не равен нулю, значит там есть данные по ошибке
                    FName = WO.Name 'короткая переменная пути к книге
                    CValue = TW.Sheets("Папки").Range("B" & Row).Value 'данные в ячейке, куда собираемся записывать
                    TW.Sheets("Папки").Range("B" & Row).Value = IIf(Len(CValue) = 0, FName, CValue & vbCrLf & FName): DoEvents 'записываем данные в ячейку, проверяем - если сначала пусто, то просто записываем имя файла, если есть данные, то добавляем перенос строки
                    Err.Clear 'очищаем данные в объекте по ошибкам
                End If
                Application.AskToUpdateLinks = True
                WO.Close True 'закрываем книгу с сохранением
                Set WO = Nothing 'уничтожаем объект-переменную
End Sub
Изменено: vikttur - 06.10.2021 18:53:42
Ищу программиста-макросника на фриланс, поиск фрилансера на определенных условиях
 
Всем привет!
я работаю в крупной компании, где очень много Экселя
пришли к тому, что нам очень нужны макросы, плюс последние полгода стали активно использовать Power Query, BI, Pivot
Ищем толкового программиста для написания макросов Excel, бонус - знание Power Query, BI, Pivot (в перспективе - макросы со связью с этими Power-ами)
условия:
- договор между нашей компанией и вами как ИП или Самозанятым, или договор ГПХ

-фриланс, 1-2 макроса в неделю, или сразу задание на пул макросов, с разумными сроками
- оплата - за макрос или за час работы (как договоримся), цены - точно не ниже рынка (от 700 руб/час и выше)
- ответственность, дружелюбие, настрой на сотрудничество
- адекватность и честность - не просить согласовать 10 часов работы на макрос в 10 строк (у нас был такой печальный опыт)

прошу отозваться заинтересованных!
Изменено: ChubraevRO - 04.10.2021 17:03:47
Макрос на обновление запросов Power Query в файлах по очереди, с пропуском ошибок, Доработка макроса, чтобы он пропускал ("перескакивал") ошибки обновлений запросов
 
Добрый день!
Есть макрос в отдельной книге, который перебирает папки, открывает в них по очереди файлы, обновляет запросы Power Query, закрывает файл, переходит к следующему.
проблема в том, что если при обновлении в очередном файле один из запросов не обновился - выдал ошибку - то макрос прекращает работу.
помогите дописать код, чтобы макрос в таком случае 1) закрывал такой файл без сохранения и переходил к следующему и 2) имена (и путь, если возможно, т.е. в какой папке лежит) таких  "не обновленных" файлов записывал себе куда-нибудь на отдельную вкладку

Цена - 500 рублей

Код
Sub Refresh_All_Files_in_Folder()
    Dim lTest As Long, cn As WorkbookConnection
     
    WORK_FOLDER = "C:\Users\roman\Downloads\"       'путь к папке с файлами (должен заканчиваться на обр.слэш!)
     
    'получаем список всех файлов из папки в массив
    CurPath = Dir(WORK_FOLDER & "*.xlsx", vbNormal)
    i = 0
     
    'перебираем по очереди все файлы в папке
    Do Until CurPath = ""
        i = i + 1
        'открываем очередной файл
        Workbooks.Open Filename:=WORK_FOLDER & CurPath, ReadOnly:=False
         
         
        'обновляем всё запросы PQ и дожидаемся загрузки новых данных
        For Each oc In ActiveWorkbook.Connections
                 oc.OLEDBConnection.BackgroundQuery = False
            oc.Refresh                  
        oc.OLEDBConnection.BackgroundQuery = True
        Next
         
        
        'обновляем сводные
        ActiveWorkbook.RefreshAll
 
         
        'закрываем файл
        ActiveWorkbook.Close SaveChanges:=True
         
        'переходим к следующему файлу
        CurPath = Dir()
    Loop
     
    MsgBox "Обновлено " & i & " файлов"
 
 
End Sub
Изменено: ChubraevRO - 27.09.2021 13:20:15
Макрос сохранения копий книги с именами из диапазона ячеек
 
Добрый день!
перебрал много форумов, но так и не сумел собрать "свой" макрос из разных кусков кодов,
и поэтому оооочень нужна помощь в нарезке шаблонов файлов с именами из диапазона ячеек, с небольшим копипастом перед-этим
есть файл, в нем много вкладок
Необходим макрос, который будет:
1) Копировать из вкладки "Пути и имена" ячейку B2, вставлять значение во вкладку "Настройки" в ячейку A2
2) Сохранять копию книги через "Сохранить как" с именем из ячейки A2 из вкладки "Пути и имена", в формате .xlsx (без макросов)
3) В этой копии скрывать вкладку "Настройки", удалять вкладку "Пути и имена"
4) закрывать эту копию
и дальше с п.1 заново цикл - скопировать из вкладки "Пути и имена" ячейку B3, вставить  во вкладку "Настройки" в ячейку A2 ,сохранять копию книги через "Сохранить как" с именем из ячейки A3 из вкладки "Пути и имена", в формате .xlsx (без макросов), и далее п.3 и 4

и повторять цикл сохранения копий книги до первого пустого значения в столбце B вкладки "Пути и имена"

Большое спасибо заранее!
Изменено: vikttur - 15.09.2021 21:48:03
Макрос для копирования строчки вниз по условию, Макрос для копирования строчки вниз по условию
 
Добрый день!
Есть таблица, со значениями и формулами
В столбце "Критерий" у некоторых строк есть индикатор "Месяц май".
Нужно макросом найти каждую такую строку, и копировать ее полностью (полная копия, со всеми формулами) ниже исходной, и создать еще один столбец типа "Признак", в котором бы выводился текст "Дубль" (ну или в существующем столбце исходной таблицы, отдельном каком-нибудь, если новый в макросе трудно создать),
и так по всем таким строком таблице
Можно ли написать такой макрос?
Как в Power Query удалить строки ниже заданной
 
Добрый день!
обрабатываю таблицу в PQ, 3 тыс строк.
Где-то в ней есть строка с текстом условно "отсечка"
Мне нужно отсечь все строки ниже этой.
сразу скажу - нет никаких признаков у строк до и после нее, чтобы отфильтровать в столбце каком-то.
У этой строки нет номера, чтобы сохранить или удалить по кол-ву строк снизу или сверху, завтра "отсечка" может быть в другом месте.

Возможно ли это, без допиливания исходной таблицы?
Изменено: vikttur - 26.06.2021 00:30:42
Макрос для написания в формуле изменяющихся ссылок на другой файл
 
Добрый день!
ищу универсальное решения для записи макроса.
Нужно, чтобы макрос вытаскивал определенное имя книги из ячейки со списком, внимание - ДЛЯ ВСТАВКИ ИМЕНИ (ТО ЕСТЬ ДИАПАЗОНА ДАННЫХ В ВЫБРАННОЙ КНИГЕ) В ФОРМУЛУ.
надеюсь, понятно описал.
например.
есть несколько файлов (книг), в них есть одинаковые вкладки (с одинаковым названием), соответственно, имя вкладок отличается друг от друга именем файла.
нужно макросом вытащить из указанной в отдельной ячейке книги (путь к файлу на компе) данные в диапазоне A2:G7 листа 1, например, ВПР по листу1  из столбца 4 по условию в ячейке "A1".
Это вообще реально?
пробовал с помощью макрорекордера писать в формулу ссылку на ячейку с именем книги, потом превращать ее в значение, но программа распознает эту операцию все равно как ввод в формулу имени именно этой книги, а нужно универсальное решение для выбранного имени файла.
Отбор всех значений из списка по фильтру автоматически, автоматизированый отбор по фильтру значения в заданной ячейке
 
Добрый вечер!
прошу помощи в решении задачки
есть табличка с 2-мя столбцами, имя человека и пол (муж, жен)
Нужно вытянуть формулой или макросом (автоматизированно) список всех мужчин или женщин, в зависимости от выбранного пола в отдельной ячейке (муж или жен).
есть идеи?
впр или индекс вытягивает только первую строку, а нужно все.
Формат ячейки, если в ячейке не формула, а значение, условное форматирование
 
Всем привет!
кто подскажет, возможно ли настроить условное форматирование ячейки по условию "значение ячейки не равно значению формулы {формула}"?
например, можно ли сделать так, чтобы при вводе в ячейку С1 значения, не равного выдаваемого формулой "С1=А1*1,5", ячейка условно форматнулась?
Спасибо!
Изменено: ChubraevRO - 31.08.2016 15:15:37
Как подсчитать сколько всего повторений одинаковых значений в столбце
 
Добрый день, коллеги!
Есть большая таблица с покупателями и товарами которые они купили. 1 операция купли-продажи - 1 строка в Экселе (например - строка 1: Вася Иванов - яблоки; строка 2: Петр Петров - апельсины; строка 3: Вася Иванов - сливы). Видно, что операции 3, а покупателей - 2.
Как подсчитать, сколько всего сколько покупателей, автоматически?
Поиск точного соответствия и возврат порядкового номера
 
Всем привет! Есть большая таблица с данными. Задача - чтобы при введении в стороннюю ячейку точного названия столбца Эксель возвращал бы номер столбца, в котором найдено точное соответствие. Есть мысли как это сделать?
Вывод определенного текста в ячейке, если при расчете получается нуль или пустое поле
 
Всем привет! Есть большая таблица с данными о контрагентах (название, телефон, местонахождение и пр.). Есть получаемое значение из этой таблицы (при помощи ГПР). Задача - чтобы при расчете ячейки, если найденное значение - нуль или пустое поле, то в ячейке выдавалась бы фраза "не найдено"? то есть организация например - Вася Иванов, а телефона нет (пустая ячейка) - и при выборе Васи Иванова и типа данных "телефон" в ячейке выскакивает фраза "нет телефона"?
Изменено: ChubraevRO - 16.03.2016 11:23:03
Страницы: 1
Наверх