есть макрос. запускается кнопкой. трудится, старается. чистит соседние листы от формул. но нужно чтоб после отработки он удалял тот лист, на котором находится сам. [vba]
Код
Workbooks("файл.xls").Sheets("лист").Application.DisplayAlerts = False End Sub
[/vba] такая штука в конце вызывает ошибку. да, и желательно без запроса на подтверждение удаления.
подсобите =)
а, да, эксель 2003
есть макрос. запускается кнопкой. трудится, старается. чистит соседние листы от формул. но нужно чтоб после отработки он удалял тот лист, на котором находится сам. [vba]
Код
Workbooks("файл.xls").Sheets("лист").Application.DisplayAlerts = False End Sub
[/vba] такая штука в конце вызывает ошибку. да, и желательно без запроса на подтверждение удаления.
Это разовая процедура? Написали макрос на листе -- запустили -- очистили все --удалил себя вместе с листом. Второй чистки не будет, а если будет вновь пишем макрос .... Для чего это так? Нельзя макрос в обычном модуле записать? И пусть он остается для многоразового использования.
Это разовая процедура? Написали макрос на листе -- запустили -- очистили все --удалил себя вместе с листом. Второй чистки не будет, а если будет вновь пишем макрос .... Для чего это так? Нельзя макрос в обычном модуле записать? И пусть он остается для многоразового использования.gling
ЯД-41001506838083
Сообщение отредактировал gling - Воскресенье, 20.03.2016, 21:59
gling, база копируется перед отправкой куда нить начем отдела (рабочий стол), удаляются все формулы, и лист, на котором помимо кнопы запуска макроса куча промежуточной лабуды и база, откуда выбирается ниспадающем меню значения. через кнопу им понятнее всего
удалить на живой базе все формулы - это ппц мне головняк потом, 15 минут трудиться восстанавливать) а там еще форматы, и прочие радости жизни, и док в общем доступе)
gling, база копируется перед отправкой куда нить начем отдела (рабочий стол), удаляются все формулы, и лист, на котором помимо кнопы запуска макроса куча промежуточной лабуды и база, откуда выбирается ниспадающем меню значения. через кнопу им понятнее всего
удалить на живой базе все формулы - это ппц мне головняк потом, 15 минут трудиться восстанавливать) а там еще форматы, и прочие радости жизни, и док в общем доступе)lordua
Сообщение отредактировал lordua - Воскресенье, 20.03.2016, 22:03
StoTisteg, вариант... но хотелось бы все в одном) не получится - так и сделаю
а встречный вопрос. в рабочем файле можно сделать, чтоб отработал макрос через кнопу, и что получилось одним листом скопировалось бы на с:/ к примеру? так ваще идеально было б
точнее, как сделать) такой вариант нуваще идеален был бы
StoTisteg, вариант... но хотелось бы все в одном) не получится - так и сделаю
а встречный вопрос. в рабочем файле можно сделать, чтоб отработал макрос через кнопу, и что получилось одним листом скопировалось бы на с:/ к примеру? так ваще идеально было б
точнее, как сделать) такой вариант нуваще идеален был быlordua
Сообщение отредактировал lordua - Воскресенье, 20.03.2016, 22:10
Имя = 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" пропишите реально нужные данные.
Да ради Бога. [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
Интуитивно понятный код - это когда интуитивно понятно, что это код.
Сообщение отредактировал StoTisteg - Воскресенье, 20.03.2016, 22:34
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 не подходит
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 - лист, откуда убираются формулы. его же желательно отдельным файлом сохранить. после обработки
как туда добавить ваш код?( прошу прощения за дибильный вопрос
Имя = 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] А лист с макросом выбросьте совсем.
И вообще просто копируйте сразу: [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
Интуитивно понятный код - это когда интуитивно понятно, что это код.
Сообщение отредактировал StoTisteg - Воскресенье, 20.03.2016, 22:52
выбросить совсем его нельзя, там списки для ввода. просто для отчета этот лист не нужен, кнопу обработки запер в него, дабы не создавать новых непойми зачем нужных листов. списки для отчета тоже не нужны. только для ввода по ниспадающему меню
и там вспомогательных листов штуки 3, если не ошибаюсь. "так надо", как мне сказали. а нужен лист с базой и без формул и ссылок
выбросить совсем его нельзя, там списки для ввода. просто для отчета этот лист не нужен, кнопу обработки запер в него, дабы не создавать новых непойми зачем нужных листов. списки для отчета тоже не нужны. только для ввода по ниспадающему меню
и там вспомогательных листов штуки 3, если не ошибаюсь. "так надо", как мне сказали. а нужен лист с базой и без формул и ссылокlordua
Сообщение отредактировал lordua - Воскресенье, 20.03.2016, 22:59