Страницы: 1
RSS
Удалить все компоненты VBA файла
 
Добрый день, подскажите есть ли макрос при выполнении которого, из файла будут удалены все компоненты VBA - все макросы, формы, модули при наступлении определенной даты, а еще данные находящиеся на всех листах файла будут заменены значениями (т.е. копировать - вставить значения).  
Спасибо заранее.
 
Опять денег не хотят платить за работу?  
Про удаление кода читайте здесь:  
http://www.msoffice.nm.ru/faq/macros/module.htm  
Про замену значениями:  
For Each sh In ActiveWorkbook.Sheets  
 sh.UsedRange.Value = sh.UsedRange.Value  
Next  
Запускайте в нужное время и ФСЁ.
 
Спасибо огромное.
 
Я так понимаю, что целиком это должно выглядеть так?  
 
Sub Auto_Open()  
   If Now = 01.01.2009 Then Call DeleteModulesAndCode  
End Sub  
 
Private Sub DeleteModulesAndCode()  
 
   Dim objExcel As Excel.Workbook  
   Dim objVBProject As Object  
   Dim objVBComponent As Object  
   Dim objWindow As Object  
     
   Set objExcel = GetObject("C:\test.xls")  
   Set objVBProject = objExcel.VBProject  
   For Each objWindow In objVBProject.VBE.Windows  
       If objWindow.Type = 6  
           objWindow.Visible = True  
           objWindow.SetFocus  
       End If  
   Next  
   Set objVBProject.VBE.ActiveVBProject = objVBProject  
   SendKeys "~password~", True  
     
   DoEvents  
   For Each objVBComponent In objVBProject.VBComponents  
       Debug.Print objVBComponent.Name  
   Next  
   Set objVBProject = Nothing  
   objExcel.Close  
   Set objExcel = Nothing  
 
   For Each iVBComponent In  ThisWorkbook.VBProject.VBComponents  
       With iVBComponent  
            Select Case .Type  
                Case 1 To 3: .Collection.Remove iVBComponent  
                Case 100: .CodeModule.DeleteLines _  
                1, .CodeModule.CountOfLines  
            End Select  
       End With  
   Next  
   For Each sh In ActiveWorkbook.Sheets  
       sh.UsedRange.Value = sh.UsedRange.Value  
   Next  
 
   ActiveWorkbook.Save  
 
End Sub
 
У меня выдает ошибку код запуска макроса по дате, подскажите что не так? Оба кода находятся в Module1.  
Sub Auto_Open()  
   If Format(Now, "dd.mm.yyyy") = "01.01.2009" Then Call DeleteModulesAndCode  
End Sub
 
{quote}{login=Алексис}{date=11.08.2008 04:39}{thema=}{post}У меня выдает ошибку код запуска макроса по дате, подскажите что не так? Оба кода находятся в Module1.  
Sub Auto_Open()  
   If Format(Now, "dd.mm.yyyy") = "01.01.2009" Then Call DeleteModulesAndCode  
End Sub{/post}{/quote}Вот так, с форматом, должно работать. Только что Вы будете делать, когда первого января Ваше творение никто не запустит?  
Пишите уж так:  
Sub Auto_Open()  
If Date >= DateValue("10.08.2008") Then Call DeleteModulesAndCode  
End Sub
 
Спасибо большое.  
В коде есть строка:  
Set objExcel = GetObject("C:\test.xls")  
Здесь указано имя файла с путем.  
А как указать "этот файл" - т.е. файл в котором и находится этот код?
 
ThisWorkbook.Path - путь к книге с кодом  
ThisWorkbook.Name - соотв. имя  
ThisWorkbook.FullName - путь с именем
 
Код выдает ошибку:  
Object variable or With block variable not set  
 
Если снять защиту с VBA вручную - все работает.
 
Кто-нибудь может помочь?
Страницы: 1
Читают тему
Наверх