Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/удаление листа, на котором сам макрос - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » удаление листа, на котором сам макрос (Макросы/Sub)
удаление листа, на котором сам макрос
lordua Дата: Воскресенье, 20.03.2016, 21:49 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003
есть макрос. запускается кнопкой. трудится, старается. чистит соседние листы от формул. но нужно чтоб после отработки он удалял тот лист, на котором находится сам.
[vba]
Код

Workbooks("файл.xls").Sheets("лист").Application.DisplayAlerts = False
End Sub
[/vba]
такая штука в конце вызывает ошибку. да, и желательно без запроса на подтверждение удаления.

подсобите =)

а, да, эксель 2003


Сообщение отредактировал Manyasha - Понедельник, 21.03.2016, 10:11
 
Ответить
Сообщениеесть макрос. запускается кнопкой. трудится, старается. чистит соседние листы от формул. но нужно чтоб после отработки он удалял тот лист, на котором находится сам.
[vba]
Код

Workbooks("файл.xls").Sheets("лист").Application.DisplayAlerts = False
End Sub
[/vba]
такая штука в конце вызывает ошибку. да, и желательно без запроса на подтверждение удаления.

подсобите =)

а, да, эксель 2003

Автор - lordua
Дата добавления - 20.03.2016 в 21:49
gling Дата: Воскресенье, 20.03.2016, 21:58 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1623
Репутация: 394 ±
Замечаний: 0% ±

2010
Это разовая процедура? Написали макрос на листе -- запустили -- очистили все --удалил себя вместе с листом. Второй чистки не будет, а если будет вновь пишем макрос .... Для чего это так? Нельзя макрос в обычном модуле записать? И пусть он остается для многоразового использования.


Сообщение отредактировал gling - Воскресенье, 20.03.2016, 21:59
 
Ответить
СообщениеЭто разовая процедура? Написали макрос на листе -- запустили -- очистили все --удалил себя вместе с листом. Второй чистки не будет, а если будет вновь пишем макрос .... Для чего это так? Нельзя макрос в обычном модуле записать? И пусть он остается для многоразового использования.

Автор - gling
Дата добавления - 20.03.2016 в 21:58
lordua Дата: Воскресенье, 20.03.2016, 22:01 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003
gling, база копируется перед отправкой куда нить начем отдела (рабочий стол), удаляются все формулы, и лист, на котором помимо кнопы запуска макроса куча промежуточной лабуды и база, откуда выбирается ниспадающем меню значения. через кнопу им понятнее всего

удалить на живой базе все формулы - это ппц мне головняк потом, 15 минут трудиться восстанавливать) а там еще форматы, и прочие радости жизни, и док в общем доступе)


Сообщение отредактировал lordua - Воскресенье, 20.03.2016, 22:03
 
Ответить
Сообщениеgling, база копируется перед отправкой куда нить начем отдела (рабочий стол), удаляются все формулы, и лист, на котором помимо кнопы запуска макроса куча промежуточной лабуды и база, откуда выбирается ниспадающем меню значения. через кнопу им понятнее всего

удалить на живой базе все формулы - это ппц мне головняк потом, 15 минут трудиться восстанавливать) а там еще форматы, и прочие радости жизни, и док в общем доступе)

Автор - lordua
Дата добавления - 20.03.2016 в 22:01
StoTisteg Дата: Воскресенье, 20.03.2016, 22:03 | Сообщение № 4
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Макрос не может удалить сам себя. В принципе. по той же причине, по которой нельзя вытащить себя из болота за волосы. Пропишите
[vba]
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Sheets(<Имя_или_идекс_листа_с_макросом>).Delete

End Sub
[/vba]
в модуль книги, а
[vba]
Код
ThisWorkbook.Save
[/vba]
в конец макроса.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеМакрос не может удалить сам себя. В принципе. по той же причине, по которой нельзя вытащить себя из болота за волосы. Пропишите
[vba]
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Sheets(<Имя_или_идекс_листа_с_макросом>).Delete

End Sub
[/vba]
в модуль книги, а
[vba]
Код
ThisWorkbook.Save
[/vba]
в конец макроса.

Автор - StoTisteg
Дата добавления - 20.03.2016 в 22:03
StoTisteg Дата: Воскресенье, 20.03.2016, 22:04 | Сообщение № 5
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
lordua, так сделайте "кнопу" в отдельном файле.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщениеlordua, так сделайте "кнопу" в отдельном файле.

Автор - StoTisteg
Дата добавления - 20.03.2016 в 22:04
lordua Дата: Воскресенье, 20.03.2016, 22:07 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003
StoTisteg, ThisWorkbook.Save chfpe сразу желтым бьет
 
Ответить
СообщениеStoTisteg, ThisWorkbook.Save chfpe сразу желтым бьет

Автор - lordua
Дата добавления - 20.03.2016 в 22:07
lordua Дата: Воскресенье, 20.03.2016, 22:07 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003
StoTisteg, вариант... но хотелось бы все в одном) не получится - так и сделаю

а встречный вопрос. в рабочем файле можно сделать, чтоб отработал макрос через кнопу, и что получилось одним листом скопировалось бы на с:/ к примеру? так ваще идеально было б

точнее, как сделать) такой вариант нуваще идеален был бы


Сообщение отредактировал lordua - Воскресенье, 20.03.2016, 22:10
 
Ответить
СообщениеStoTisteg, вариант... но хотелось бы все в одном) не получится - так и сделаю

а встречный вопрос. в рабочем файле можно сделать, чтоб отработал макрос через кнопу, и что получилось одним листом скопировалось бы на с:/ к примеру? так ваще идеально было б

точнее, как сделать) такой вариант нуваще идеален был бы

Автор - lordua
Дата добавления - 20.03.2016 в 22:07
StoTisteg Дата: Воскресенье, 20.03.2016, 22:32 | Сообщение № 8
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Да ради Бога.
[vba]
Код
Sub Копирование()

    Dim Имя As String
    i As Integer
    
    Имя = ThisWorkbook.Name
    Workbooks.Add
    Do While Err.Number = 0
        On Error Resume Next
        Worksheets(1).Delete
    Loop
    For i = 1 To Workbooks(Имя).Sheets.Count
        With Workbooks(Имя).Worksheets(i)
            If .Worksheets(i).Name <> "Лист с макросом" Then
                Worksheets.Add after:=Worksheet(Sheets.Count)
                .Cells.Copy Destination:=Cells
            End If
        End With
    Next i
    Worksheets(1).Delete
    ActiveWorkbook.SaveAs Filename:="C:\Копия.xlsx"
    
End Sub
[/vba]
Естественно, вместо "Лист с макросом" и "C:\Копия.xlsx" пропишите реально нужные данные.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.

Сообщение отредактировал StoTisteg - Воскресенье, 20.03.2016, 22:34
 
Ответить
СообщениеДа ради Бога.
[vba]
Код
Sub Копирование()

    Dim Имя As String
    i As Integer
    
    Имя = ThisWorkbook.Name
    Workbooks.Add
    Do While Err.Number = 0
        On Error Resume Next
        Worksheets(1).Delete
    Loop
    For i = 1 To Workbooks(Имя).Sheets.Count
        With Workbooks(Имя).Worksheets(i)
            If .Worksheets(i).Name <> "Лист с макросом" Then
                Worksheets.Add after:=Worksheet(Sheets.Count)
                .Cells.Copy Destination:=Cells
            End If
        End With
    Next i
    Worksheets(1).Delete
    ActiveWorkbook.SaveAs Filename:="C:\Копия.xlsx"
    
End Sub
[/vba]
Естественно, вместо "Лист с макросом" и "C:\Копия.xlsx" пропишите реально нужные данные.

Автор - StoTisteg
Дата добавления - 20.03.2016 в 22:32
lordua Дата: Воскресенье, 20.03.2016, 22:42 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003
StoTisteg, вот неудобно понимать, что ты дибил, и не шаришь. а иногда нужно. я - дибил в программировании.

код макроса (удаляет формулы)
[vba]
Код
Private Sub CommandButton1_Click()
Application.ScreenUpdating = 0
With Sheets("111")
With .Range(.Range("A1"), .Range("A1").SpecialCells(xlLastCell))
.Copy
.PasteSpecial (xlPasteValues)
End With
End With
End Sub
[/vba]
где 111 - лист, откуда убираются формулы. его же желательно отдельным файлом сохранить. после обработки

как туда добавить ваш код?( прошу прощения за дибильный вопрос

и да, офис 2003. *.xlsx не подходит


Сообщение отредактировал Manyasha - Понедельник, 21.03.2016, 10:11
 
Ответить
СообщениеStoTisteg, вот неудобно понимать, что ты дибил, и не шаришь. а иногда нужно. я - дибил в программировании.

код макроса (удаляет формулы)
[vba]
Код
Private Sub CommandButton1_Click()
Application.ScreenUpdating = 0
With Sheets("111")
With .Range(.Range("A1"), .Range("A1").SpecialCells(xlLastCell))
.Copy
.PasteSpecial (xlPasteValues)
End With
End With
End Sub
[/vba]
где 111 - лист, откуда убираются формулы. его же желательно отдельным файлом сохранить. после обработки

как туда добавить ваш код?( прошу прощения за дибильный вопрос

и да, офис 2003. *.xlsx не подходит

Автор - lordua
Дата добавления - 20.03.2016 в 22:42
StoTisteg Дата: Воскресенье, 20.03.2016, 22:45 | Сообщение № 10
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
В конец Вашего макроса
[vba]
Код
Call Копирование
[/vba]
мой макрос — в Модуль1.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеВ конец Вашего макроса
[vba]
Код
Call Копирование
[/vba]
мой макрос — в Модуль1.

Автор - StoTisteg
Дата добавления - 20.03.2016 в 22:45
StoTisteg Дата: Воскресенье, 20.03.2016, 22:48 | Сообщение № 11
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
И вообще просто копируйте сразу:
[vba]
Код
Sub Копирование()

     Dim Имя As String
     i As Integer
     
     Имя = ThisWorkbook.Name
     Workbooks.Add
     Do While Err.Number = 0
         On Error Resume Next
         Worksheets(1).Delete
     Loop
     For i = 1 To Workbooks(Имя).Sheets.Count
         With Workbooks(Имя).Worksheets(i)
                 Worksheets.Add after:=Worksheet(Sheets.Count)
                 .Cells.Copy
                 Cells.PasteSpecial (xlPasteValues)
                 Cells.PasteSpecial (xlPasteFormats)
         End With
     Next i
     Worksheets(1).Delete
     ActiveWorkbook.SaveAs Filename:="C:\Копия.xlsx"
     
End Sub
[/vba]
А лист с макросом выбросьте совсем.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.

Сообщение отредактировал StoTisteg - Воскресенье, 20.03.2016, 22:52
 
Ответить
СообщениеИ вообще просто копируйте сразу:
[vba]
Код
Sub Копирование()

     Dim Имя As String
     i As Integer
     
     Имя = ThisWorkbook.Name
     Workbooks.Add
     Do While Err.Number = 0
         On Error Resume Next
         Worksheets(1).Delete
     Loop
     For i = 1 To Workbooks(Имя).Sheets.Count
         With Workbooks(Имя).Worksheets(i)
                 Worksheets.Add after:=Worksheet(Sheets.Count)
                 .Cells.Copy
                 Cells.PasteSpecial (xlPasteValues)
                 Cells.PasteSpecial (xlPasteFormats)
         End With
     Next i
     Worksheets(1).Delete
     ActiveWorkbook.SaveAs Filename:="C:\Копия.xlsx"
     
End Sub
[/vba]
А лист с макросом выбросьте совсем.

Автор - StoTisteg
Дата добавления - 20.03.2016 в 22:48
lordua Дата: Воскресенье, 20.03.2016, 22:53 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003
В конец Вашего макроса
Call Копирование

мой макрос — в Модуль1.


вот такое
К сообщению приложен файл: 0418338.jpg(9Kb) · 2720534.jpg(7Kb)


Сообщение отредактировал lordua - Воскресенье, 20.03.2016, 22:54
 
Ответить
Сообщение
В конец Вашего макроса
Call Копирование

мой макрос — в Модуль1.


вот такое

Автор - lordua
Дата добавления - 20.03.2016 в 22:53
lordua Дата: Воскресенье, 20.03.2016, 22:56 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003
А лист с макросом выбросьте совсем.

выбросить совсем его нельзя, там списки для ввода. просто для отчета этот лист не нужен, кнопу обработки запер в него, дабы не создавать новых непойми зачем нужных листов. списки для отчета тоже не нужны. только для ввода по ниспадающему меню

и там вспомогательных листов штуки 3, если не ошибаюсь. "так надо", как мне сказали. а нужен лист с базой и без формул и ссылок


Сообщение отредактировал lordua - Воскресенье, 20.03.2016, 22:59
 
Ответить
Сообщение
А лист с макросом выбросьте совсем.

выбросить совсем его нельзя, там списки для ввода. просто для отчета этот лист не нужен, кнопу обработки запер в него, дабы не создавать новых непойми зачем нужных листов. списки для отчета тоже не нужны. только для ввода по ниспадающему меню

и там вспомогательных листов штуки 3, если не ошибаюсь. "так надо", как мне сказали. а нужен лист с базой и без формул и ссылок

Автор - lordua
Дата добавления - 20.03.2016 в 22:56
StoTisteg Дата: Воскресенье, 20.03.2016, 23:01 | Сообщение № 14
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
выбросить совсем его нельзя

Тогда просто верните тот if, что был в первом варианте. Где-то так.
К сообщению приложен файл: Macros.xlsm(14Kb)


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение
выбросить совсем его нельзя

Тогда просто верните тот if, что был в первом варианте. Где-то так.

Автор - StoTisteg
Дата добавления - 20.03.2016 в 23:01
KuklP Дата: Воскресенье, 20.03.2016, 23:53 | Сообщение № 15
Группа: Проверенные
Ранг: Старожил
Сообщений: 2304
Репутация: 474 ±
Замечаний: 0% ±

2003-2010
Макрос не может удалить сам себя
Не совсем так. :) В модуль листа:
[vba]
Код
Public Sub www()
    Me.Move
    ActiveWorkbook.Close 0
End Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщение
Макрос не может удалить сам себя
Не совсем так. :) В модуль листа:
[vba]
Код
Public Sub www()
    Me.Move
    ActiveWorkbook.Close 0
End Sub
[/vba]

Автор - KuklP
Дата добавления - 20.03.2016 в 23:53
Wasilich Дата: Понедельник, 21.03.2016, 01:51 | Сообщение № 16
Группа: Друзья
Ранг: Старожил
Сообщений: 1195
Репутация: 316 ±
Замечаний: 0% ±

2003
что получилось одним листом скопировалось бы на с:/
так ваще идеально было б
Смотрите здесь
http://www.excelworld.ru/forum/3-6954-1


Сообщение отредактировал Wasilich - Понедельник, 21.03.2016, 01:52
 
Ответить
Сообщение
что получилось одним листом скопировалось бы на с:/
так ваще идеально было б
Смотрите здесь
http://www.excelworld.ru/forum/3-6954-1

Автор - Wasilich
Дата добавления - 21.03.2016 в 01:51
Мир MS Excel » Вопросы и решения » Вопросы по VBA » удаление листа, на котором сам макрос (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!