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

Страницы: 1
Макрос для добавления строк n-количество раз, Заготовленные строки с группировками и форматированием
 
Цитата
Маугли написал:
Не могу понять, зачем эти навороты, диалоги. отступы, пароли

Прикрепленные файлы
Копирование строк н автомате (3).xlsm  (45.17 КБ)

Изменено: Маугли  - 20 Янв 2018 07:49:21
Очень сложная таблица и много разных тонкостей при работе с ней, поэтому такая замудреная.
Спасибо за помощь, после проверки всё работает отлично.  
Изменено: sergey_sasin - 24.01.2018 09:49:29
Макрос для добавления строк n-количество раз, Заготовленные строки с группировками и форматированием
 
Цитата
Маугли написал:
Приведите примеры ваших макросов и реальную структуру в файле. Впереди выходные-народ порешает )
Спасибо за помощь!
Файл с макросами, которые отслеживают изменение вложил.
Существует ли вообще команда на остановку выполнения другого макроса?
Макрос для добавления строк n-количество раз, Заготовленные строки с группировками и форматированием
 
Маугли, переношу макросы, чтобы выложить в файле, и возникла ошибка (Method "Range" of object "_worksheet" failed), которая в искомой таблице не появлялась, подскажите, почему он ругается?
Код
'Добавление времени изменения
Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target
       If Not Intersect(cell, Range("С2:С1048576")) Is Nothing Then '-ошибка определяется на этой строке
        If cell.Value = "" Then Call b_addlineseek
            With cell.Offset(0, -1)
               .Value = Now
            End With
       End If
    Next cell
End Sub
Макрос для добавления строк n-количество раз, Заготовленные строки с группировками и форматированием
 
Маугли, отлично подходит! Вот, что значит специалист, сложная вещь, была описана в несколько строк, Спасибо!

Обновление!
После проверки на рабочей таблице, возникла проблема, но она не связанна с работой вашего макроса, а другого.
Я забыл что у меня на лист установлены "следящие макросы" (worksheet_change), которые следят за изменением в строках и вносят в отдельную ячейку время последнего редактирования и копирует формулы из вышестоящей строки. Они, по видимому, реагируют на то, что появляются новые строки и начинают заносить время изменения в свою ячейку и всё переходит в новую проблему.
А ещё диапазон начиная от шапки таблицы защищен паролем. Соответственно он делает вид что работает, вызывают работу следящих макросов, но добавления не происходит.

Есть ли возможность, добавить команду отключения определенных макросов при выполнении либо как можно сослаться на макрос на листе
Изменено: sergey_sasin - 19.01.2018 11:28:19
Макрос для добавления строк n-количество раз, Заготовленные строки с группировками и форматированием
 
Добрый день всем, кто уделил время на мою тему!

Есть определенная необходимость автоматизировать один процесс, суть и внешний вид во вложенном в тему файле.

Есть таблица (лист 1 в файле) в которой используется построчная группировка. Группировки двух уровней, общая группировка для одного наименования на группы 5-ти частей, и каждая часть ещё сгруппирована отдельно. Строки обозначающие группировки имеют оформление, оно важно.

Необходим макрос который бы мог путем копирования строк относящиеся к группировкам, вставлять их в таблицу n-ое количество раз (т.е. можно в выполняемом макросе каждый раз указывать сколько нужно добавлений), при этом сохранить так же группировку и получить в итоге результат в виде таблицы (лист 2 в файле). Т.к. порой таких добавлений может быть то 100 и вся по себе таблица имеет более сложный вид, необходим подходящий макрос.

P.S. была мысль создать лист с заготовкой такой группировки из которого макрос бы копировал эти строки. Но что и как это на vba может быть воплощенно, не получается представить. Макрорекордеры не помогают,т.к всегда окончание одной позиции с группировками и её последней строкой дело переменное и должно каким-то образом перед вставкой определяться.

Буду благодарен любым советам и подсказкам!

Всем спасибо!
Изменено: sergey_sasin - 18.01.2018 14:02:51
Копирование листа в новую книгу
 
Ігор Гончаренко, и ещё сложнее))) Смысл скрытых листов ещё же связан с тем что структура книги защищена паролем, поэтому он даёт ошибку из-за запрета. Вроде бы через макрос можно снять защиту с листа, провести процедуру по макросу, и, опять защитить книгу:
Код
Sub unlc ()
    Worksheet(01).Unprotect "1"
.....
    Worksheet(01).Protect "1"
End sub
Есть подобная команда для структуры книги?

Чуть позже.....
Код
Sub newdoc()
Application.ScreenUpdating = False                                     'отключить активное обновление экрана
ThisWorkbook.Unprotect "777"                                           'снять защиту с книги, где 777 - пароль установленный на защите книги
Dim ShtV:  ShtV = Worksheets(01).Visible
  Worksheets(01).Visible = xlSheetVisible                              'показать копируемый шаблон, где 01 - название копируемого листа
  Worksheets(01).Copy                                                  'создать новый документ из шаблона
  ThisWorkbook.Worksheets(01).Visible = ShtV                           'скрыть копируемый шаблон
  ActiveSheet.Name = "Doc " & Format(Now, "DD.MM.YYYY hh-mm-ss")       'изменить название листа на дату создания листа
ThisWorkbook.Protect "777"                                             'установить защиту книги, где 777 - пароль установленный на защите книги
Application.ScreenUpdating = True                                      'включить активное обновление экрана
End Sub
Вот так вот всё заработало и при защищенной паролем структуре и при защищенной паролем книге.
Изменено: sergey_sasin - 14.12.2017 20:55:27
Копирование листа в новую книгу
 
Цитата
Ігор Гончаренко написал: этот мощный макрос...
Если лист не скрыт, то всё работает, если лист скрыт, то выдаёт ошибку 1004, что может помочь?
Изменено: sergey_sasin - 14.12.2017 20:55:09
Копирование листа в новую книгу
 
Ігор Гончаренко, Всё гениальное - просто! Спасибо! А как можно при копировании назначить переименование копируемого листа на дату и время создания файла?
Изменено: sergey_sasin - 14.12.2017 15:42:02
Копирование листа в новую книгу
 
Всем доброго времени суток!

Прошу помочь с макросом либо советом как возможно реализовать следующую задачу.

Существует файл в котором имеется скрытый лист (форма документа).
Необходимо чтобы при выполнении макроса, этот лист открывался в новой книге, без предварительного сохранения нового файла.
Т.е. аналогично стандартной операции, скопировать лист в новую книгу.

Сразу скажу, что макрорекордером записываются только выбор листа, всего остального он не записывает.
Изменено: sergey_sasin - 14.12.2017 15:18:27
Автоматическое добавление даты для новой строки
 
gling, для копирования пачкой это подходит больше, спасибо! Но вот в связи с тем что это не единственный блок, то выполнение по событию завершается сразу и последующие блоки не выполняются, поэтому это не подходит. Попробовал вместо закрытия команды прописать выполнения другого блока. Но накладка в том что этот блок должен выполняться при изменении ячеек. И когда добавляется новая строка он сразу вносит время изменения при том, что ячейка пустая. А ещё когда удаляешь строку, то он присваивает время изменения(удаления строки), строке которая идёт после удаляемой. Что вообще ни как недопустимо. Подскажите как прописать правильно, что если при изменении строки сначала проверялось наличие значений в ячейке и если значение есть, то заносилось дата время, если ячейка стала пустой, то не заносилась дата и время.
Изменено: sergey_sasin - 07.11.2017 14:21:44
Автоматическое добавление даты для новой строки
 
gling, он сначала выдаёт ошибку, и не совсем то, что нужно. Как указать удаление значений из ячейки куда вносится дата, если в отслеживаемой ячейке становится пусто?
Автоматическое добавление даты для новой строки
 
Всем привет и хорошего настроения!

Существует макрос, который отслеживает отслеживает изменение в ячейках в указанном диапазоне и в отдельную ячейку вносит дату и время изменения ячеек в диапазоне.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     
    For Each cell In Target   'проходим по всем измененным ячейкам
       If Not Intersect(cell, Range("F4:F1048576")) Is Nothing Then  'если изменененная ячейка попадает в диапазон
            With cell.Offset(0, -3)         'вводим в соседнюю справа ячейку дату
               .Value = Now
            End With
       End If
    Next cell
End Sub
ВОПРОС? Т.к ячейка может быть изменена на пустое значение, т.е. отчищена, нужно чтобы дата не вносилась в этом случае. Если объяснить другим языком, то нужно чтобы в соседнюю ячейку вносилась дата изменения, если значение в ячейке меняется и если ячейка не пустая.

Либо так: Если в указанном диапазоне значение в ячейке меняется, заносить в соседнюю ячейку дату изменения, но если значение изменяется на пустое, то удалять из соседней ячейки любое значение.
Изменено: sergey_sasin - 03.11.2017 23:05:52
Работа с файлами и гиперссылками на файлы
 
tolstak, Отлично работает, папки создаёт, конфликтов не возникает. Вот что значит совет профессионала! Спасибо!
Работа с файлами и гиперссылками на файлы
 
tolstak, выходит ошибка ByRef, несоответствие типа аргумента, на foldertopaste в
Код
If createFullFolderPath(folderTopaste) Then
Изменено: sergey_sasin - 20.10.2017 11:30:40
Работа с файлами и гиперссылками на файлы
 
Попробовал так и при первой попытке, папка создается и файл в неё копируется, но при втором и последующем выходит ошибка 75,о доступе.
Я так понимаю что т.к. после первого раза папка создалась, ошибка ругается на существование папки, видимо я что-то неправильно указал раз не проверяется её наличие. И файл не может быть скопирован в новую папку.
Код
   If Dir(ThisWorkbook.Path & "\документы") = "" Then
                MkDir ThisWorkbook.Path & "\документы"
   End If

Изменено: sergey_sasin - 20.10.2017 10:58:30
Работа с файлами и гиперссылками на файлы
 
tolstak,
А если говорить о том чтобы папка не была прописанная заранее, а создавалась (если её нет) в директории нахождения самой книги Excel.

Как вариант сохранения в директории нахождения файла, но как прописать тут путь новой папки  
Код
 folderTopaste = ThisWorkbook.Path
(folderTopaste = ThisWorkbook.Path & "\документы") - даёт ошибку, т.к папки нет, нужно чтобы она сначала создавалась

Создать директорию, но она даёт ошибку если указывать директорию с подпапкой ("документы\сканы"), т.к видимо не может создать папку в папке, которой не существует.
Код
MkDir  ThisWorkbook.Path + "\" + "документы" 
Полный макрос в котором это всё должно работать.
Код
Sub doc_upolad_template()
    Dim FileDialog As FileDialog, filePath As String, fso As Object
    Set FileDialog = Application.FileDialog(msoFileDialogFilePicker)
    Set fso = CreateObject("Scripting.FileSystemObject")
    'Показать форму выбора файла
    FileDialog.InitialFileName = ThisWorkbook.Path & "\"
    FileDialog.Show
    If FileDialog.SelectedItems.Count > 0 Then
        'Путь к выбранному файлу
        filePath = FileDialog.SelectedItems(1)

        'Путь к папке куда сохранять 
        'ВОПРОС:  Вместо точного адреса по которому находится папка для сохранения, нужно чтобы необходимая папка, допустим "документы" (или папка в подпапке "\документы\скан")
                    '1. создавалась в директории нахождения самого файла excel в котором работает этот макрос.
                    '2. Выбранный файл копировался именно в эту новую созданную папку
                    '3. И если таковая папка уже есть то только провести копирование в неё и всё.
    

        folderTopaste = "C:\Users\sasin\Desktop\Документы"
              

        Set selectedRn = Selection.EntireRow
        ExtFind = Right$(filePath, Len(filePath) - InStrRev(filePath, "."))
        newName = selectedRn.Columns(37) & Format(selectedRn.Columns(38), "ddmmyyyy") & "." & ExtFind

        pasteFl = folderTopaste & "\" & newName
        fso.CopyFile Source:=filePath, Destination:=pasteFl
        'Добавление ссылки
        ActiveSheet.Hyperlinks.Add Anchor:=selectedRn.Columns(39), Address:=pasteFl, TextToDisplay:="ОТКРЫТЬ"
        Selection.Font.Size = 8
        Selection.Font.Bold = True
        Selection.HorizontalAlignment = xlCenter
        Selection.VerticalAlignment = xlCenter
        Else
        MsgBox Prompt:="Файл не был выбран", Buttons:=vbCritical
    End If
End Sub
Изменено: sergey_sasin - 20.10.2017 10:07:48
Автонуммерация с учётом подгруппы, Порядковое присвоение номера с учётом нахождения в подгруппе
 
Владимир, спасибо вам, всё получилось. Прикрепил полное решение.
Изменено: sergey_sasin - 19.10.2017 09:46:10
Автонуммерация с учётом подгруппы, Порядковое присвоение номера с учётом нахождения в подгруппе
 
Владимир, прям один в одни то, что нужно, но только при появлении новой позиции с самой старшей группой, макрос присваивает лишнюю цифру, пример прикрепил:
Автонуммерация с учётом подгруппы, Порядковое присвоение номера с учётом нахождения в подгруппе
 
Всем добрый день и хорошего настроения!

Прошу внимания, возможно кто-то сталкивался с решением такого вопроса как нумерация строк  в зависимости от группировок и автоматизирование такого процесса для всего столбца и новых появляющихся строк.

Более подробно с примером и промежуточным решением всё изложено в файле прикрепленному к теме.
Спасибо всем кто уделит внимание и подскажет где искать решение!
Работа с файлами и гиперссылками на файлы
 
tolstak, благодарю!
Работа с файлами и гиперссылками на файлы
 
tolstak, спасибо о мудрейший! :)

А вот ещё вопрос:
Код
' Имя копируемого файла - 2ая колонка выделенной строки + 3 колонка как дата в формате "ДДММГГГГ"
        Set selectedRn = Selection.EntireRow
        newName = selectedRn.Columns(2) & Format(selectedRn.Columns(3), "ddmmyyyy") & ".pdf"
Что нужно прописать вместо ".pdf", чтобы оставить исходный формат выбранного файла?
Работа с файлами и гиперссылками на файлы
 
Здравствуйте! Облазил форум но не нашёл ничего близкого по смыслу с возникшей задачей.
Возможно кто-то сталкивался с  автоматизацией загрузки ссылок на документы, разного формата, pdf, jpg, docx и т.д.

В связи с этим такой вопрос, как можно прописать макрос и какими командами, чтобы можно было выбрать ячейку, нажать кнопку, выбрать файл для загрузки, и далее автоматически производились бы операции: скопировать выбранный файл в прописанную папку, переименовать выбранный файл на значение из ячейки в той же строки таблицы и создать на него гиперссылку с отображаемым имени "ОТКРЫТЬ".

Есть понимание как создать макрос для создания гиперссылки на конкретный документ по конкретному адресу, а вот как реализовать возможность выбрать файл за каждым разом? И возможно ли вообще макросами производить копирование, переименовывание файлов вне экселя?
Страницы: 1
Наверх