Страницы: 1 2 След.
RSS
Удалить макросы при создании новой книги из шаблона
 
Здравствуйте! С Новым годом! Пусть новый год принесет всем Мира, добра, счастья!)

Помогите мне пожалуйста в решении вопроса.
Есть книга с макросами.
1 макрос -  в модуле ЭТА КНИГА (при открытии файла происходит нумерация документа)
2 макрос - модуль 1 (запуск формы)
3 макрос - модуль 2 (сохранение файла)
4 форма.

при сохранении файла в отдельный документ также переносятся все макросы, два из которых в новом документе не нужны. Это - 1 макрос, который находится в модуле ЭТА КНИГА и 3 макрос - сохранение файла.

Вот сам код сохранения файла:
Код
Sub сохранение_новый()
t = Application.ThisWorkbook.Path
t = StrReverse(Mid(StrReverse(t), InStr(1, StrReverse(t), "\") + 1))
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=t & "\папки\" & CStr(Range("A4")) & "\" & CStr(Range("B4")) & "\" & Range("AC3") & ".xlsb"
Selection.Replace What:="[*]", Replacement:=""
ActiveSheet.Buttons.Delete
Application.DisplayAlerts = True
End Sub
Как сделать так, чтобы при сохранении в новом документе остались только форма и макрос  с модуля 1(запуск формы)?
Какую строчку в код нужно вписать?
Просто каждый раз открывая потом созданный документ в нем автоматически происходит перенумерация документа.

Заранее спасибо)
Изменено: Просто Ledi - 02.01.2018 14:48:55
 
Думаю оптимально - перенести/переписать макрос из ЭТА КНИГА в ЭТА КНИГА но персональной книги или надстройки, и аналогично макрос сохранения (чуть скорректировав).
 
так это и так персональная книга,  так что с переносом  честно говоря не поняла.
 
Или Вы не понимаете что такое персональная книга макрсов, или я не понимаю зачем Вы её сохраняете в новый документ... И что там в этом новом документе кроме этих макросов :)
Изменено: Hugo - 02.01.2018 14:38:14
 
этот файл типа шаблона - учетный лист. открывая его, он автоматически нумеруется, затем в него вставляются персональные данные и он сохраняется уже под именем этих персональных данных в нужную папку, нужного года и месяца. Затем этот, сохраненный  файл уже можно редактировать, добавляя новые записи. Таких файлов-анкет очень много. Для этого и создан шаблон с автоматической нумерацией. Но беда в том, что каждый раз затем открывая вновь созданные файлы, срабатывает макрос нумерации.  
 
Похоже, гланды рвете не с той стороны :)
Не об удалении кода спрашивать надо. Нужно описывать задачу, которую пытаетесь решить. Показать, рассказать...
 
Я прикрепила файл. При сохранении нового файла сохраняется и макрос из модуля "эта книга", а нужно чтобы он не сохранялся во вновь созданном документе, иначе потом при открытии его каждый раз меняется номер этого документа
 
Файл скачать не могу, поэтому остаётся только спросить - макрос сохранения как выполняете?
 
для макроса сохранения кнопка на листе, которая в сохраненном документе удаляется
сам макрос такой
Код
Sub сохранение_новый()
t = Application.ThisWorkbook.Path
t = StrReverse(Mid(StrReverse(t), InStr(1, StrReverse(t), "\") + 1))
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=t & "\папки\" & CStr(Range("A4")) & "\" & CStr(Range("B4")) & "\" & Range("AC3") & ".xlsb"
Selection.Replace What:="[*]", Replacement:=""
ActiveSheet.Buttons.Delete
Application.DisplayAlerts = True
End Sub
 
1. Совет не по нумерации, а вообще: обязательно указывайте имя листа, на котором меняете номер.
2. После открытия книги и изменения номера прописать в любой ячейке флаг (любой символ, слово, значение...). Перед нумерацией проверять наличие флага. Если флаг есть, номер не изменять.
А лучше нумеровать при наличии флага. В шаблоне флаг записан, при перенумерации флаг удаляется.
 
Код сохранения Вы уже показывали.
Вроде как на кнопку можно завязять и код из персональной книги (у меня получилось), так что мой совет выше может сработать.
 
Цитата
vikttur написал:
. После открытия книги и изменения номера прописать в любой ячейке флаг. Перед нумерацией проверять наличие флага
это не удобно( каждый раз проверять наличие флага. Особенно когда работы очень много, можно просто забыть про это.
 
Проверять в коде! Перед изменением номера.
Код
Private Sub Workbook_Open()
    With Worksheets("учетный лист")
        If .Cells(1, 1).Value = "kkk" Then
            .Cells(4, 9).Value = .Cells(4, 9).Value + 1
            .Cells(1, 1).ClearContents
        End If
    End With
    
    Me.Save
End Sub
 
vikttur, Скучно как-то получается, а как же программное редактирование модулей  (VBProject.VBComponents) :-)
По вопросам из тем форума, личку не читаю.
 
если я в файле шаблоне поставлю флаг, он также перенесется и во вновь созданный файл, и все останется на прежнем уровне.
на счет кода из персональной книги - макрос находится в модуле "эта книга" файла, в котором он написан, в списке макросов его поэтому нет, и если открывать чистый эксель, его тоже там нет.. так не могу понять, куда его перенести..Ребят, вы только не сердитесь, я ведь не такой уж специалист в макросах, и если бы я хорошо разбиралась, я бы и сама сделала, но у меня не получилось..
 
Цитата
БМВ написал: Скучно как-то...
Из-за одной строки  удалять макрос веселее? )
Цитата
если я в файле шаблоне поставлю флаг, он также перенесется и во вновь созданный файл
См. сообщение №13
 
я попробовала вставить ваш код, но теперь не номеруется вообще... пока я в ячейку А1 не поставлю  kkk
Изменено: Просто Ledi - 02.01.2018 15:28:40
 
В персональную книгу или надстройку можно прописать макрос, который при открытии книги-шаблона будет делать ту же работу. Т.е. с одним макросм разобрались.
Ну и второй тоже убираете в любую другую книгу. Кнопку можно оставить.
 
Цитата
это не удобно( каждый раз проверять наличие флага. Особенно когда работы очень много
а это флаг для макроса а не для Вас, и ему (макросу) по барабану сколько у Вас работы
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Просто Ledi написал: не номеруется вообще... пока я в ячейку А1 не поставлю  kkk
Цитата
vikttur написал: А лучше нумеровать при наличии флага. В шаблоне флаг записан, при перенумерации флаг удаляется.
 
и, видимо, замену вот этого [*] и удаление кнопок нужно сделать до сохранения файла, а не после
не так:
Код
ActiveWorkbook.SaveAs Filename:=t & "\папки\" & CStr(Range("A4")) & "\" & CStr(Range("B4")) & "\" & Range("AC3") & ".xlsb"
Selection.Replace What:="[*]", Replacement:=""
ActiveSheet.Buttons.Delete
а так:
Код
Selection.Replace What:="[*]", Replacement:=""
ActiveSheet.Buttons.Delete
ActiveWorkbook.SaveAs Filename:=t & "\папки\" & CStr(Range("A4")) & "\" & CStr(Range("B4")) & "\" & Range("AC3") & ".xlsb"
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
ивобщем то я решила проблему) переписала код нумерации, теперь он выглядит так:
Код
Private Sub Workbook_Open()
On Error Resume Next
    With Workbooks("новый").Worksheets("учетный лист")
            .Cells(4, 9).Value = .Cells(4, 9).Value + 1
    End With
    Me.Save
End Sub
Я в самом коде указала конкретную книгу, в которой меняется номер и все). Спасибо Вам всем за советы и помощь)

И еще раз с Новым годом!) Счастья и удачи всем!)
Изменено: Просто Ledi - 02.01.2018 16:45:40
 
Меняете нумерацию в конкретной книге, сохраняете, возможно, не ее :)
А если имя книги - не "новый"?
 
я в конкретной книге записала макрос, при открытии этой книги он меняет номер и сохраняет сразу эту книгу, чтобы при следующем открытии вновь поменять уже сохраненный ранее номер) После введения данных в эту книгу, сохраняю ее под новым названием, в конкретном месте. Да, макрос  переносится тоже при сохранении, но так как условия поставленные в макросе, а конкретно название книги не совпадает, то он не срабатывает, то есть номер во вновь созданном документе не меняется уже, что мне и нужно было)
 
Цитата
Просто Ledi написал: при открытии этой книги он меняет номер и сохраняет сразу эту книгу... После введения данных в эту книгу, сохраняю ее под новым названием
Вариант: открыли книгу случайно или данные ввели неправильно и дубликат книги удален.... Но номер изменился и книга сохранилась с новым номером.
 
во первых случайно этот файл не откроешь, потому что он для конкретной работы, а во вторых, если в этой, еще не заполненной книге-шаблоне увеличится номер, то это не страшно, гораздо хуже было когда уже в заполненных новых файлах менялся номер каждый раз при открытии, ну и в третьих, всегда можно изменить вручную номер в пустом шаблоне, для меня это было не так важно)
 
Стоп!
Вы уверены, что в такой записи номер будет меняться?
Workbooks("новый") - такого Excel не поймет, ему подавай путь к файлу.
 
да, уверена, я уже проверила, и к тому же там не только название файла, но и название страницы на которой нужно менять номер( за этот совет Вам большое спасибо, потому что  в старом макросе не была указана страница). И еще раз повторюсь - этот макрос написан в конкретной книге, и написан для нее, а не для вообще документа эксель, поэтому он и срабатывает именно в этой конкретной книге, и еще срабатывал при сохранении  этой книги... слава Богу этот вопрос решен) потому что я поздно заметила что номера меняются.. представьте.. данные нужно было вносить каждый день, иногда по нескольку раз в день открывать документ, за месяц таких открываний в каждом из заполненных документов номер менялся)
 
Проверьте I4. У Вас номер меняется?
 
на I4 вообще пусто, кроме желтого окошка нет чисел) попробовала вставить число, но при дальнейшем открытии файла оно не меняется)
Изменено: Просто Ledi - 02.01.2018 18:05:10
Страницы: 1 2 След.
Наверх