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

Страницы: 1 2 След.
Макрос VBA Outlook на открытие книги Excel при получении входящего сообщения с определенной темой, Запуск Excel при получении входящего сообщения Outlook по теме письма
 
Цитата
написал:
Добрый
Цитата
ChubraevRO написал:
не работают - выдают ошибку на "if..."
Имеют право на это
Код
    [URL=#]?[/URL]       1  2  3  4  5  6  7  8  9  10  11  12  13  14      Private   Sub   Application_NewMailEx(  ByVal   EntryIDCollection   As   String  )    Dim   Item   As   Outlook.MailItem    Dim   xl   As   Object       Set   Item = Application.GetNamespace(  "MAPI"  ).GetItemFromID(EntryIDCollection)             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   
 
Спасибо!
Макрос 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 файлах заменить часть формул со на правильные ссылки
 
а потом перестало работать...(((((
Ham13, спасибо, ваш код работает! на инглише замена формулы работает
В 100 файлах заменить часть формул со на правильные ссылки
 
Всем спасибо, кажется уже сам разобрался
дело было в этом "FormulaVersion:=xlReplaceFormula2"
Не знаю, что это за настройка, но подозрение вызвала. убрал из кода и все стало работать
В 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
Ищу программиста-макросника на фриланс, поиск фрилансера на определенных условиях
 
Добрый день!
Всем спасибо, кто откликнулся - вас уже достаточно для того, чтобы выбрать с кем мы будем работать.
Тема закрывается :)
напоследок отвечу на некоторые вопросы выше:
1) т.к. работа на компанию, то только через заключение договора. Простые заказы частнику с переводом на карту нам не подходят, иначе я бы не создал тему.
2) нужен постоянный фрилансер, который не пропадет через неделю, или не окажется слишком занят для срочной задачи, плюс макросы будут связаны друг с другом, он не будет переписывать "чужой кривой код", короче, плюсов работы с одним и тем же человеком гораздо больше, чем минусов
3) оплата за час работы
4) само собой, макросы не меряются кол-вом строк, команды все разные, разной сложности, разные затыки могут быть и ошибки - понимаю.
но за неимением лучшего, как понять, врет человек или нет - то нам понятно, что 30 строк кода не могут занять 20-30 часов работы. Даже если что-то не работает - то разобраться в каждой строке и переписать вообще все заново явно меньше времени займет (понятно, при условии что исходные файлы правильно работают, данные корректные, и тд и тп). Просто у нас был фрилансер, который за макрос на как раз 30 строк (простых команд достаточно), т.е. на 1 час работы попросил ему согласовать 12 часов (как раз тут один пользователь за 1 час и написал в итоге этот макрос,я заказ размещал),
а на еще один макрос с простейшими командами типа "открыть, поставить фильтр, заблокировать, выделить, закрасить" - попросил согласовать 30 (!!!) часов. Это явное надувательство Заказчика, с такими сразу не по пути. Я сам после написал этот макрос с помощью макрорекодера и переписывания небольшого "под себя" за 12 часов, и это я чайник почти полный был, методом тыка и гугла детские ошибки в коде исправлял, а знающий программист, я думаю, вообще за пару часов справился бы.

Еще раз всем спасибо за отзывы, за отклики, за советы.
Тема закрыта.
Ищу программиста-макросника на фриланс, поиск фрилансера на определенных условиях
 
Обновил условия, возможно заключение с физ.лицом через договор ГПХ
Ищу программиста-макросника на фриланс, поиск фрилансера на определенных условиях
 
Планируется скорее сразу пул макросов (5-7-10, по 30-50 строк), и обсуждение сразу всего пула.
оплата времени обсуждения (при необходимости, если из текстового ТЗ не все понятно будет)-  возможно, за какие-то разумные деньги (н-р 50% от часовой ставки работы)
Если бы нам надо было заказать 1 простенький макрос на 15 строчек, который можно написать за 30 минут - мы бы на постоянную основу не искали фрилансера :)
Ищу программиста-макросника на фриланс, поиск фрилансера на определенных условиях
 
Всем привет!
я работаю в крупной компании, где очень много Экселя
пришли к тому, что нам очень нужны макросы, плюс последние полгода стали активно использовать 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 в файлах по очереди, с пропуском ошибок, Доработка макроса, чтобы он пропускал ("перескакивал") ошибки обновлений запросов
 
Добрый день!
Есть макрос в отдельной книге, который перебирает папки, открывает в них по очереди файлы, обновляет запросы 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
Макрос сохранения копий книги с именами из диапазона ячеек
 
Цитата
Nordheim написал:
Доброго времени суток! А где то, что не получилось?
ну вот такой код я нарыл в интернет, но это разовое сохранение копии, мне главное запустить цикл сохранений многих копий
все остальное на самом деле я могу сам другими макросами потом сделать - подставить значения. скрыть листы, удалить листы,
а вот цикл - не могу понять, как
помогите, пожалуйста!
Код
Sub SaveFile()

   Dim CellValue As String
   Dim Path As String
   Dim FinalFileName As String

   Application.DisplayAlerts = False
   Path = ThisWorkbook.Path & "\"
   CellValue = Range("B14")
   FinalFileName = Path & CellValue
   ActiveWorkbook.SaveAs FileName:=FinalFileName, _
                      FileFormat:=xlOpenXMLWorkbook

  End Sub
Макрос сохранения копий книги с именами из диапазона ячеек
 
Спасибо большое, но не срабатывает до конца - создает Лист 1, но не сохраняет его с нужным именем, и выскакивает ошибка "400"
Макрос сохранения копий книги с именами из диапазона ячеек
 
Добрый день!
перебрал много форумов, но так и не сумел собрать "свой" макрос из разных кусков кодов,
и поэтому оооочень нужна помощь в нарезке шаблонов файлов с именами из диапазона ячеек, с небольшим копипастом перед-этим
есть файл, в нем много вкладок
Необходим макрос, который будет:
1) Копировать из вкладки "Пути и имена" ячейку B2, вставлять значение во вкладку "Настройки" в ячейку A2
2) Сохранять копию книги через "Сохранить как" с именем из ячейки A2 из вкладки "Пути и имена", в формате .xlsx (без макросов)
3) В этой копии скрывать вкладку "Настройки", удалять вкладку "Пути и имена"
4) закрывать эту копию
и дальше с п.1 заново цикл - скопировать из вкладки "Пути и имена" ячейку B3, вставить  во вкладку "Настройки" в ячейку A2 ,сохранять копию книги через "Сохранить как" с именем из ячейки A3 из вкладки "Пути и имена", в формате .xlsx (без макросов), и далее п.3 и 4

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

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

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