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

Страницы: 1 2 След.
Макрос на запуск макросов в других книгах, Проблема с кавычками в Application.Run
 
tolstak, Вы правы помогло! Большое спасибо, макрос заработал!
Макрос на запуск макросов в других книгах, Проблема с кавычками в Application.Run
 
Jack Famous, апостроф не помог.

Workbooks.Open ругается на Run-time error '1004': Не удалось найти "'Z:\АНАЛИТИК\... и т.д.

Application.Run "path!open_last_and_update" - Run-time error '1004': Не удалось найти "C:\Users\tol-user025\Documents\path.xlsx".

Сам подход не стандартный, согласен. В каждой книге, макрос open_last_and_update мониторит папку на наличие актуального тяжёлого файла сводной таблицы, который формируется и подкладывается в папку каждое утро. Если новый файл найден, то макрос тянет из него в себя данные по конкретным сотрудникам конкретных точек продаж, на основе которых строит красивые рейтинги, отчёты, конкурсы и т.п. Объединить всё в один файл не допускается.
Макрос на запуск макросов в других книгах, Проблема с кавычками в Application.Run
 
Добрый день!
Подскажите, пожалуйста, как правильнее создать макрос в книге, который бы запускал макрос из других книг, хранящихся на сетевом диске в разных папках. Имя макроса в этих книгах одинаковое "open_last_and_update", название файлов разное, путь разный.
Хотелось бы циклом пробежаться по книгам, запустить в них макрос "open_last_and_update" и закрыть книги с сохранением после выполнения макроса.
В Application.Run наблюдается проблема с сочетанием кавычек.На ум приходит замена пробелов на %20 или использование одинарных кавычек, но не знаю как применить.

Вот что я накидал в примере. Проблема с запуском макроса open_last_and_update в открываемых книгах. И не уверен в адекватном применении ActiveWorkbook при методе Close.
Application.DisplayAlerts и Application.ScreenUpdating вставлю позже.

Код
Sub update_all()

Dim MyPath As New Collection
Dim path As Variant

With MyPath
    .Add ("Z:\АНАЛИТИК\III кв. 2019\ОТЧЕТЫ\Имя файла 01.xlsm")
    .Add ("Z:\АНАЛИТИК\III кв. 2019\РЕЙТИНГИ\Имя файла 02.xlsm")
    .Add ("Z:\ОТЧЁТНОСТЬ\III кв. 2019\СВОДЫ\Имя файла 03.xlsm")
End With

For Each path In MyPath
      
      Workbooks.Open Filename:=path, UpdateLinks:=1, Notify:=False

      'Application.Run "path!open_last_and_update" # проблема с кавычками
      'open_last_and_update # пока ещё нет такого макроса
      'Workbooks(path).Close SaveChanges:=True # ошибка: out of range

      ActiveWorkbook.Close SaveChanges:=True
Next

End Sub
открыть последний файл в папке по дате создания
 
Добрый день!
Спасибо за макрос.
Подскажите, как открыть найденный объект (p) в режиме "только чтение"? Ставлю ReadOnly:=True но не работает...
Изменено: choreo - 24.01.2019 13:01:43
Привязать рисунок к вершинам точек данных диаграммы
 
Добрый день!
Есть линейная горизонтальная диаграмма. Есть ли возможность "привязать" рисунок к вершинам точек данных диаграммы? Чтобы рисунок всегда был у вершины во время роста или уменьшения ряда.
Спасибо!
НАИМЕНЬШИЙ ранг набора значений при их совпадении.
 
В ячейку F2 прикрепленного тут файла "Ранг_пример.xlsx" вставил формулу =МАКС($D$2:$D$8)-D2+1
Вроде работает, спасибо.
Другим вариантам также буду рад.
НАИМЕНЬШИЙ ранг набора значений при их совпадении.
 
Прошу прощения, а как переделать данную формулу, чтобы сортировка рангов в списке была по возрастанию.
Т.е. у кого меньше значение, тот и первый.
НАИМЕНЬШИЙ ранг набора значений при их совпадении.
 
AleksSid, спасибо большое! "Вариант 2" с формулой =СУММ(--(ЧАСТОТА((B$2:B$8>B2)*B$2:B$8;B$2:B$8)>0)) как раз то, что я хотел.
НАИМЕНЬШИЙ ранг набора значений при их совпадении.
 
Добрый день!

Есть функция РАНГ.РВ
Возвращает ранг числа в списке чисел, то есть его величину относительно других значений в списке. Если несколько значений имеют одинаковый ранг, возвращается наивысший ранг этого набора значений.

А как сделать, чтобы было  "...Если несколько значений имеют одинаковый ранг, возвращается НАИМЕНЬШИЙ ранг этого набора значений." ?
Подсчёт кол-ва непустых значений между датами, СЧЁТЕСЛИ?
 
Dante132, да, так я пробовал, работает, но мне бы ещё хотелось, чтобы даты начала и конца диапазона были забиты не в формуле, а находились в ячейках A1 и B1. Чтобы это реализовать, дату нужно перевести в =ТЕКСТ. Но не подберу никак.
Подсчёт кол-ва непустых значений между датами, СЧЁТЕСЛИ?
 
Здравствуйте, Уважаемые!
Есть столбец с датами с 2005 по 2017 г, есть даты, которые повторяются. Как в ячейку поставить количество непустых записей между диапазоном дат, например с 01.05.2007 по 16.11.2011?
Заранее спасибо!
Теоритический вопрос по Эксель - ссылка на другую книгу
 
Добрый день!
Хочу облегчить файлы с формулами, которые ссылаются на значения ячеек других файлов.
Ситуация: есть 7 экселевских файлов, в каждом по 20 листов, шаблонно они одинаковы для всех файлов. На каждом листе каждого файла присутствует куча формул, значения для которых берутся с ячеек других книг.
Вопрос: уместно ли в каждом файле сделать "технический" лист, куда для формул разместить значения с других книг, а уже на самих листах в формулах тянуть значения с этого "технического" листа, а не напрямую значения из других книг. Облегчит ли это открытие и расчёт в файле или же наоборот затруднит?

Другими словами хочу спросить, как отрабатывает Эксель при ссылке на значение ячейки другого файла? При открытии берёт переменную и использует во всех формулах, либо каждый раз при обращении к ссылке теребит файл который ей принадлежит?

Заранее спасибо за внимание!
Перенос цвета ячейки по условию, макросом с циклом, Не условное форматирование.
 
Добрый день!
Во вложении файл, на листе 5 таблиц с графиками. Данные в этих столбы постоянно меняются, подтягиваясь из других файлов. По макросу сортируются значения столбцов "%исп" по убыванию. Столбцы "%исп" красятся вручную. В самую нижнюю табличку "Светофор" необходимо перенести цвет соответствующий ручной окраске из соответствующей таблицы столбца %исп.
Помогите, пожалуйста, написать макрос с циклом, условием поиска соответствующей ячейки и подстановки её цвета.
Изменено: choreo - 10.08.2016 14:50:25
Построение Диаграммы с условием расположения столбцов, Которые меньше 85% красные и располагаются справа
 
...хотя, кажется, нашёл надстройку от The_Prist(Дмитрий).
Построение Диаграммы с условием расположения столбцов, Которые меньше 85% красные и располагаются справа
 
...жалко, что данный способ покраски диаграммы не работчает с "Условным форматированием" данных в таблице.
Построение Диаграммы с условием расположения столбцов, Которые меньше 85% красные и располагаются справа
 
Версия 2010. Извиняюсь, но нет возможности выложить файл. Позже вечером.
Цвет диаграммы из ячеек с ее данными - думаю это должно подойти, попробую.
Спасибо!
Построение Диаграммы с условием расположения столбцов, Которые меньше 85% красные и располагаются справа
 
Добрый день!
Подскажите, пожалуйста, есть ли возможность сформировать диаграмму по условию?
Например, те столбцы значения которых меньше 85% покрасить красным и расположить справа, визуально отделив от остальных.
Спасибо!
Сортировка двух таблиц по кулючевому столбцу первой
 
Есть вариант ВПРом, но слишком тяжело железяке сопоставлять каждую ячейку будет.
Наверное нужно взять ключевой столбец первой таблицы вставить его в третью, и на его основе циклом бегать по второй подставляя значения.
Сортировка двух таблиц по кулючевому столбцу первой
 
Добрый день!
Помогите, пожалуйста, решить задачку.
Есть две таблицы, у них общий(совпадающий) ключевой столбец с цифровым уникальным идентификатором.
Необходимо отсортировать вторую таблицу в порядке расположения ключевых значений первой таблицы.

Пробовал "Сортировкой - Настраиваемым списком", но он поддерживает лишь 255 символов, увы не влизает.

Извинаюсь, с работы нет возможности приколоть примеры файлов.
Сбор данных из файлов Эксель в заданной папке + обработка по циклу
 
Joiner, посмотрите в ЛС.
Сбор данных из файлов Эксель в заданной папке + обработка по циклу
 
Joiner, О да! Всё прекрасно работает. Огромное тебе спасибо за помощь! а то я уже 2 день голову ломаю.
Аж настроение поднялось  :)
Сбор данных из файлов Эксель в заданной папке + обработка по циклу
 
Хотел в столбец А подставлять имя файла, чтобы посмотреть как работает цикл : ThisWorkbook.Sheets(1).Cells(i, 1).Formula = FileItem.Name
FileItem как Объект. Но тоже не выходит (.
Сбор данных из файлов Эксель в заданной папке + обработка по циклу
 
Joiner,попробовал, но всё равно обрабатывает только из одного файла. Увы.
И есть пустые строки при подстановке. При переходе на следующий лист.
Сбор данных из файлов Эксель в заданной папке + обработка по циклу
 
Добавил саму папку с файлами, по которым бегает макрос.
Сбор данных из файлов Эксель в заданной папке + обработка по циклу
 
Добрый день!
Помогите, пожалуйста, доработать цикл. Я запутался, как продлить заполнение данных после перехода на следующий файл, у меня по коду идёт постоянная подстановка в 3ю строку (i = 3). Как правильнее? Использовать "флажок" после подстановки из файла, либо организовать поиск не пустой строки? Помогите реализовать, доработать код.Заранее спасибо!

в макросе LoadDataFromWorkbooks
Код
'=================================Тело========================================
                i = 3 'строка-начала заполнения Описи /// КАК ПРОДЛИТЬ ЗАПОЛНЕНИЕ ПОСЛЕ ПЕРЕХОДА В ДР. ФАЙЛ???
                    For Each sh In WB.Worksheets
                        If sh.Name <> "ИТОГО" Then
                            For j = 0 To sh.Cells(4, 3) 'СЧЁТЗ //Здесь можно не указанием на ячейку, а поиском пустой строки
                               If sh.Cells(5 + j, 2) <> 0 Then
                                ThisWorkbook.Sheets(1).Cells(i, 4) = sh.Cells(5 + j, 2) '4- столбец-начала
                                ThisWorkbook.Sheets(1).Cells(i, 3) = "Оригинал"
                                ThisWorkbook.Sheets(1).Cells(i, 1).Formula = FileItem.Name
                                    If sh.Cells(5 + j, 17) = 1 Then 'And sh.Cells(5 + j, 2) <> "" Then ' Если в ячейке "Заявление о несогласии" стоит 1
                                        ThisWorkbook.Sheets(1).Cells(i, 2) = "Заявление о несогласии с размером возмещения"
                                        Else: ThisWorkbook.Sheets(1).Cells(i, 2) = "Справка о выплаченных суммах и вкладах"
                                    End If
                                End If
                            i = i + 1
                             Next j
                        End If
                    Next
    '=================================Тело==========================
Сложный файл с общим доступа на сетевом ресурсе - загружает канал данных на 100%, При открытии файла забивается пропускной канал, зависает система у пользователя.
 
Добрый день!
Просьба помочь с проблемкой.
Есть сложный комплекс файлов Эксель, которые завязаны(ссылаются) друг с другом. Все расчёты тянуться в один итоговый файл, который так же в совместном доступе на сетевом ресурсе. И вот при его открытии у пользователей удаленных офисов с шириной канала в 2 мбит/сек возникают жуткие висяки системы, сам файлы блокируется, забивается канал данных, что влечёт за собой тормоза других сетевых программ. Может кто-то сталкивался с таким явлением? Что порекомендуете делать?
У всех ОС Win7, Office 2007-2010, сетевой ресурс на сервере Win 2008 R2.

Гугл нашёл вот такую статью, но устаревшая для XP и сервера 2003. https://support.microsoft.com/ru-ru/kb/822219
В неё идёт речь о каком-то бредовом драйвере фильтра...
Реализация "Голосования" в Эксель, ...а может быть в Outlook?
 
TheBestOfTheBest, а использовать Environ("USERNAME") приемлемо ?
Реализация "Голосования" в Эксель, ...а может быть в Outlook?
 
Ещё раз здравствуйте!
Хотел бы вернуться к теме. После реализации проекта у некоторых сотрудников во время голосования выходит сообщение с ошибкой "runtime error 13 type mismatch". Используем офис 2007-2010. Из поисков в интернете проблема возможна с входом нецифрового значения?
Т.к. файл нет возможности прицепить, вставляю код. Ошибка происходит по завершению dialog, при вызове dialog2. Писалось всё без опыта программирования, код сырой и не оптимизированный.
Код
 Sub auto_open()
Dim i As Integer, Sh As Worksheet
Set Sh = ActiveWorkbook.Worksheets("Голосовал")
userG = Environ("USERNAME")
Application.DisplayFullScreen = True
Sheets("Лист1").Visible = xlVeryHidden
Sheets("Диалог1").Visible = xlVeryHidden
Sheets("Сотрудники").Visible = xlVeryHiddenSheets("Лист2").Visible = xlVeryHidden
Sheets("Диалог2").Visible = xlVeryHidden
Sheets("Руководители").Visible = xlVeryHiddenSheets("Голосовал").Visible = xlVeryHiddenActiveWorkbook.Worksheets("Лист1").Range("B1:B7").ClearContents
ActiveWorkbook.Worksheets("Лист2").Range("B1:B10").ClearContents
    
    For i = 1 To Sh.Range("A1")
        If Sh.Cells(i, 3) = userG Then
            fioG = Sh.Cells(i, 4)
                If Sh.Cells(i, 5) = 0 Then
                    MsgBox "Здравствуйте, " & fioG & "!"
                    Sh.Cells(i, 5) = 1
                Else
                    MsgBox fioG & ", Вы уже проголосовали."
                    'ActiveWorkbook.Save
                    Application.DisplayFullScreen = False
                    ActiveWorkbook.Close savechanges = no
            End If
        End If
    Next i
Call dialogEnd Sub
'----------------------------------------------------
Sub dialog()
Dim i As Integer, j As Integer
start1:
    DialogSheets("Диалог1").Show
      If ActiveWorkbook.Worksheets("Лист1").Range("B11") = 7 Then
    For i = 1 To 7
        
            For j = 1 To ActiveWorkbook.Worksheets("Руководители").Range("A1")
                If ActiveWorkbook.Worksheets("Лист1").Cells(i, 2) = ActiveWorkbook.Worksheets("Руководители").Cells(j, 1) Then
                   ActiveWorkbook.Worksheets("Руководители").Cells(j, 6 + i) = ActiveWorkbook.Worksheets("Руководители").Cells(j, 6 + i) + 1
                End If
            Next j
      
   
    Next i
      Else
        MsgBox "Пожалуйста, выберите все категории!", vbCritical
        GoTo start1:
       End If
   MsgBox "Спасибо, Ваш голос учтён! Но голосование ещё не окончено."Call dialog2End Sub
'----------------------------------------------------
Sub dialog2()
Dim i As Integer, j As Integer
start1:
    DialogSheets("Диалог2").Show
      If ActiveWorkbook.Worksheets("Лист2").Range("B11") = 10 Then
    For i = 1 To 10
        
            For j = 1 To ActiveWorkbook.Worksheets("Сотрудники").Range("A1")
                If ActiveWorkbook.Worksheets("Лист2").Cells(i, 2) = ActiveWorkbook.Worksheets("Сотрудники").Cells(j, 1) Then
                   ActiveWorkbook.Worksheets("Сотрудники").Cells(j, 6 + i) = ActiveWorkbook.Worksheets("Сотрудники").Cells(j, 6 + i) + 1
                End If
            Next j
      
   
    Next i
      Else
        MsgBox "Пожалуйста, выберите все категории!", vbCritical
        GoTo start1:
       End If
   MsgBox "Спасибо, Ваш голос учтён!"
   MsgBox "До свидания!"
Call ВыходEnd Sub
'----------------------------------------------------
Sub Выход()
    ActiveWorkbook.Worksheets("Лист1").Range("B1:B7").ClearContents
    ActiveWorkbook.Worksheets("Лист2").Range("B1:B10").ClearContents    Application.DisplayFullScreen = False
    ActiveWorkbook.Save
    ActiveWorkbook.Close
End Sub
Реализация "Голосования" в Эксель, ...а может быть в Outlook?
 
AlexTM, да, у нас внутренняя почта на MS Exchange, все пользуются Outlookом 2007-2010. Я же склоняюсь к выкладки на сетевой ресурс.
Я уже накидал вариант с макросом, но пока не пойму, как реализовать невозможность одним сотрудником сделать повторное голосование. У нас доменная сеть. Сейчас буду искать команду считывание логина пользовтеля, нужно при голосовании занести логин в табличку свода, и при повторном голосовании если данный логин уже присутствует в таблицее - выдать сообщение, что голосование вами уже проведено.

Файлик с макросом не могу выложить, т.к. через терминальный Интернет нет возможности вкладывать файлы. (
Реализация "Голосования" в Эксель, ...а может быть в Outlook?
 
Да в том то и дело, что WEB-формы не подходят, т.к. далеко не у всех сотрудников в нашей организации есть доступ в Интернет.
Страницы: 1 2 След.
Наверх