Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Удаление кода средствами VBA / 12 сообщений из 12, страница 1 из 1
25.05.2005, 14:24:21
    #33083593
kdimetrius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление кода средствами VBA
Привет Всем. Тут на днях тема обсуждалась о вставке текста кода средствами VBA. У меня обратная задача, с дополнительным ньюансом:
1. Необходимо удалить код програмно
2. Текст кода "нацеплен" на лист Excel (чтобы быть более точным - это Worksheet_Activate). Пытался рыть в сторону ActiveWorkbook.VBProject.VBComponents, но чего-то ничего не нарыл. Помогите пожалуста. Заранее благодарен, Дмитрий
...
Рейтинг: 0 / 0
25.05.2005, 15:02:59
    #33083673
rrrrrrrrrr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление кода средствами VBA
У меня ламерское решение: добавить лист, скопировать на него данные, удалить исходный
...
Рейтинг: 0 / 0
25.05.2005, 17:05:29
    #33083898
kdimetrius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление кода средствами VBA
В том-то и дело, что этот вариант не подходит. Необходимо сохранить все настройки для это листа: колонтитулы, области печати, размеры и т.д. Для этого необходимо перемещать весь лист в новую книгу, а этот код сидит там как ... Ну вот я пока и не знаю, как именно мне удалить этот модуль. Да, и чего греха таить, интересно все же узнать как это вообще делается.
...
Рейтинг: 0 / 0
25.05.2005, 18:17:02
    #33084035
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление кода средствами VBA
kdimetriusПытался рыть в сторону ActiveWorkbook.VBProject.VBComponents, но чего-то ничего не нарыл.
А ты точно рыть пытался?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
For i =  1  To ThisWorkbook.VBProject.VBComponents("Sheet1").CodeModule.CountOfLines
   If ThisWorkbook.VBProject.VBComponents("Sheet1").CodeModule.Lines(i,  1 ) = "Private Sub Worksheet_Activate()" Then
      StartLine = i
      For j = i+ 1  To ThisWorkbook.VBProject.VBComponents("Sheet1").CodeModule.CountOfLines
         If ThisWorkbook.VBProject.VBComponents("Sheet1").CodeModule.Lines(j,  1 ) = "End Sub" Then
            EndLine = j
            ThisWorkbook.VBProject.VBComponents("Sheet1").CodeModule.DeleteLines StartLine, (EndLine - StartLine)
         End If
      Next
   End If
Next
...
Рейтинг: 0 / 0
26.05.2005, 22:20:19
    #33086329
sergeyvg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление кода средствами VBA
Я как-то уже публиковал такой код
Sub zzz()
With ThisWorkbook.VBProject
For Each VBR In .References
If Not VBR.BuiltIn Then .References.Remove VBR
Next VBR
For Each VBC In .VBComponents
If VBC.Type = 100 Then
Call VBC.CodeModule.DeleteLines(1, VBC.CodeModule.CountOfLines)
Else
.VBComponents.Remove VBC
End If
Next VBC
End With
End Sub
...
Рейтинг: 0 / 0
27.05.2005, 11:49:46
    #33087095
kdimetrius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление кода средствами VBA
White Owl kdimetriusПытался рыть в сторону ActiveWorkbook.VBProject.VBComponents, но чего-то ничего не нарыл.
А ты точно рыть пытался?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
For i =  1  To ThisWorkbook.VBProject.VBComponents("Sheet1").CodeModule.CountOfLines
   If ThisWorkbook.VBProject.VBComponents("Sheet1").CodeModule.Lines(i,  1 ) = "Private Sub Worksheet_Activate()" Then
      StartLine = i
      For j = i+ 1  To ThisWorkbook.VBProject.VBComponents("Sheet1").CodeModule.CountOfLines
         If ThisWorkbook.VBProject.VBComponents("Sheet1").CodeModule.Lines(j,  1 ) = "End Sub" Then
            EndLine = j
            ThisWorkbook.VBProject.VBComponents("Sheet1").CodeModule.DeleteLines StartLine, (EndLine - StartLine)
         End If
      Next
   End If
Next

При выполнении кода выскакивает ошибка (см. рисунок). Как этого избежать?
...
Рейтинг: 0 / 0
27.05.2005, 13:06:38
    #33087364
kdimetrius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление кода средствами VBA
По поводу ошибки сам догадался, отбой.
По ходу возникла другая проблемка. Лист, на котором висел код перенес в новую книгу, удалил текст кода, сохранил книгу под другим именем и казалось бы, при открытии этой книги ни о каких макросах речи быть неможет, ан нет. При открытии выскакивает сообщение о налии макросов и т.д. Может кто подскажет в чем моя ошибка или это глюк? И по возможности способ решения.
...
Рейтинг: 0 / 0
27.05.2005, 18:25:55
    #33088406
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление кода средствами VBA
Где-то макросы все же остались.... Ищи внимательнее.
...
Рейтинг: 0 / 0
28.05.2005, 10:57:38
    #33088764
kdimetrius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление кода средствами VBA
White OwlГде-то макросы все же остались.... Ищи внимательнее.
Да нет там макросов. Я вот чего попробовал: взял в этой книге в этом листе после сохранения на месте кода понабирал всякую чепуху, а потом сразу и удалил ручками. При закрытии книги мне было предложено сохраниться. А вот при повторном открытии ни о каких макросах речи уже не было. Чепуха какая-то. Я уже думал, что где-то пустая строчка осталась. Нет ничего. Может Ёксел где-то прописывает, что в ём были макросы? Может еще что? Я уже второй день бьюсь. Обидно :(
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
03.01.2007, 11:40:16
    #34235459
Stanislaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление кода средствами VBA
kdimetriusПо поводу ошибки сам догадался, отбой.
По ходу возникла другая проблемка. Лист, на котором висел код перенес в новую книгу, удалил текст кода, сохранил книгу под другим именем и казалось бы, при открытии этой книги ни о каких макросах речи быть неможет, ан нет. При открытии выскакивает сообщение о налии макросов и т.д. Может кто подскажет в чем моя ошибка или это глюк? И по возможности способ решения.

Как исправить эту ошибку??? на которую ты сам догадался !
...
Рейтинг: 0 / 0
03.01.2007, 11:45:08
    #34235470
Stanislaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление кода средствами VBA
Stanislaus kdimetriusПо поводу ошибки сам догадался, отбой.
По ходу возникла другая проблемка. Лист, на котором висел код перенес в новую книгу, удалил текст кода, сохранил книгу под другим именем и казалось бы, при открытии этой книги ни о каких макросах речи быть неможет, ан нет. При открытии выскакивает сообщение о налии макросов и т.д. Может кто подскажет в чем моя ошибка или это глюк? И по возможности способ решения.

Как исправить эту ошибку??? на которую ты сам догадался !


Смотри ка и я догадался))) просто хелп нажал и все!!))
...
Рейтинг: 0 / 0
03.01.2007, 12:31:33
    #34235552
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление кода средствами VBA
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Sub RemoveVBACodeProcedure(SourceWb As Workbook, ComponentName As String, ProcName As String)
'удаляет из заданного модуля заданной книги заданную процедуру
'SourceWb       - объект - книга, из которой нужно удалить процедуру
'ComponentName  - строка, название модуля, из которого нужно удалить процедуру
'ProcName       - строка, имя процедуры, которую нужно удалить
Dim iVBComponent As VBComponent
Dim StartProcLine As Long
Dim CountProcLine As Long

    Set iVBComponent = SourceWb.VBProject.VBComponents(ComponentName)

    StartProcLine = iVBComponent.CodeModule.ProcBodyLine(ProcName, vbext_pk_Proc)
    CountProcLine = iVBComponent.CodeModule.ProcCountLines(ProcName, vbext_pk_Proc)

    If StartProcLine + CountProcLine >= iVBComponent.CodeModule.CountOfLines Then
        CountProcLine = CountProcLine -  1 
    End If

    iVBComponent.CodeModule.DeleteLines StartProcLine, CountProcLine

    Set iVBComponent = Nothing

End Sub
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Удаление кода средствами VBA / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]