Страницы: 1
RSS
Ещё раз про удаление кнопки с макросом в сохраняемом листе
 
Доброго всем времени суток, собрал по кирпичикам макрос, сохраняющий заданный лист из книги    
 
в заданную папку под именем зависящем от значения определённой ячейки, одновременно он    
 
стирает с листа все формулы оставляя только значения и после всего автоматом выводит на    
 
печать. Прикрепил его к кнопке, на том листе многостраничной книги, который нужно сохранять.    
 
Всё прекрасно работает, только вот беда, "выдранный лист" сохраняется вместе с этой кнопкой,    
 
а мне она более там не нужна, над тем чтоб перенести на другой лист думал-это не вариант.    
 
Вот этот макрос целиком(чтоб не позориться в своём знании "английского", оставил в нём    
 
только пояснение, в каком месте нужно удалять кнопку)
 
Файлик не зацепился, вот он
 
А не проще (и экономичнее по объёму) выложить текст макроса?  
Например так?  
 
ActiveSheet.Shapes("имякнопки").Delete
 
Я бы с удовольствием его выложил, только он русский текст выводит как кракозябры, к сожалению эта функция тоже ничего не дала, кнопка по прежнему на месте.  
Сам макрос присвоен листу, даже если его в редакторе VBA прописать в новый модуль.
 
Чтоб без кракозябр - копируйте при русской раскладке. Уж столько раз говорилось... всюду, не только тут.  
А по кнопке - значит у Вас кнопка не из shapes.  
Включите рекордер, удалите кнопку, посмотрите код.
 
Сейчас буду пробовать, а вот и код, спасибо за пояснение про копирование!!!  
 
Sub СохранитьЛистВФайл()  
On Error Resume Next  
' название подпапки, в которую по-умолчанию будет предложено сохранить файл в данном случае это папка Акты  
Const REPORTS_FOLDER = "Акты\"  
' создаём папку для файла, если её ещё нет  
MkDir ThisWorkbook.Path & "\" & REPORTS_FOLDER  
' выбираем стартовую папку  
ChDrive Left(ThisWorkbook.Path, 1): ChDir ThisWorkbook.Path & "\" & REPORTS_FOLDER  
 
'устанавливаем ячейку имя которой автоматически будет прописываться в названии файла при сохранении  
With Workbooks("модификация.xls").Sheets("акт")  
Имя_для_сохранения = .[a1] 'Формируем имя, можем его сцепить из нескольких ячеек прописав вместо .[a1]
'значения .[хх] & "_" & .[хх], где [хх] номер ячейки в которой находится информация для сцепки
End With  
' вывод диалогового окна для запроса имени сохраняемого файла  
Filename = Application.GetSaveAsFilename(InitialFileName:=Имя_для_сохранения, _  
FileFilter:="Excel Files (*.xls), *.xls")  
If VarType(Filename) = vbBoolean Then Exit Sub  
 
' копируем активный лист (при этом создаётся новая книга)  
Err.Clear: ActiveSheet.Copy: DoEvents  
If Err Then Exit Sub    ' произошла какая-то ошибка при попытке копирования листа  
 
' убеждаемся, что активной книгой является копия листа  
If ActiveWorkbook.Worksheets.Count = 1 And ActiveWorkbook.Path = "" Then  
     
'эта строка убирает из документа все формулы  
With ActiveSheet.UsedRange  
.Value = .Value  
End With 'окончание функции  
 
 
     
'удаление макроса с сохраняемого листа целиком  
 
ActiveSheet.Shapes("Сохранить и отправить в печать").Delete  
 
 
' сохраняем файл под заданным именем в формате Excel 2003  
ActiveWorkbook.SaveAs Filename, xlWorkbookNormal  
ActiveWorkbook.Selection.SpecialCells(xlFormulas).ClearContents  
 
         
'With ActiveSheet.PrintOut ' выводим лист на печать(убрать одинарные ковычки перед командами)  
'End With  
         
' закрываем сохранённый файл  
' (удалите следующую строку, если закрывать созданный файл не требуется)  
ActiveWorkbook.Close False  
End If  
End Sub
 
Оказывается всё было просто, спасибо за совет с рекордером, я только учусь, и скорее всего буду долго учиться, кнопка удалилась, поскольку была Button 1, команда стала выглядеть так: ActiveSheet.Shapes("Button 1").Delete
 
Рекордер хорошая штука - если из него "лишние детали" повыкидывать :)
 
Прочитал про ваш макрос. Сейчас буду пробовать. Начал учиться пользоваться макросами только позавчера. А ваш макрос - как раз то что я пытался сделать в течение полу года.    
Напишу обязательно получилось или нет!))
 
Простите. Указал ваше имя вместо своего!  
Прочитал про ваш макрос. Сейчас буду пробовать. Начал учиться пользоваться макросами только позавчера. А ваш макрос - как раз то что я пытался сделать в течение полу года.    
Напишу обязательно получилось или нет!))
 
{quote}{login=habar}{date=08.11.2012 08:41}{thema=}{post}Начал учиться пользоваться макросами только ПОЗАВЧЕРА. А ваш макрос - как раз то что я пытался сделать в течение ПОЛУГОДА.{/post}{/quote}  
мне одному кажется, что здесь что-то не так? О_о
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Вариант 1: раздвоение личности.  
Вариант 2: 6 месяцев удалял руками, и думал, как бы это всё автоматизировать :-)
Страницы: 1
Читают тему
Наверх