Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как программно поменять макрос который лежит внутри листа / 4 сообщений из 4, страница 1 из 1
31.08.2005, 10:57:14
    #33242816
Jojo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно поменять макрос который лежит внутри листа
Хочу сделать отдельный файл который поменяет программно макрос в другой рабочей книге на определенном листе.
Кто делал...подскажите ?

Думаю лучше сначала почистить макрос, потом положить новый
Макрос лежит не в модуле,а на листе !!!

Scio me nihil scire

<<Jojo®>>
...
Рейтинг: 0 / 0
31.08.2005, 12:01:43
    #33243037
Как программно поменять макрос который лежит внутри листа
Код: plaintext
\' Удаляем.\n    With ThisWorkbook.VBProject.VBComponents("Лист1").CodeModule\n        .DeleteLines  1 , .CountOfLines\n    End With

Добавляем.

Только замени

Код: plaintext
Set vbc = ThisWorkbook.VBProject.VBComponents("Лист1")
...
Рейтинг: 0 / 0
31.08.2005, 12:20:10
    #33243096
Jojo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно поменять макрос который лежит внутри листа
Workbooks.Open Filename:=FILE2
Name_book2 = Application.ActiveWorkbook.Name
Workbooks(Name_book2).Activate
Set vbc = Workbooks(Name_book2).VBComponents("Загрузка")
With vbc.CodeModule
.DeleteLines 1, .CountOfLines
End With

Ошибка метод не поддреживается ..не катит


Scio me nihil scire

<<Jojo®>>
...
Рейтинг: 0 / 0
31.08.2005, 14:22:35
    #33243543
Как программно поменять макрос который лежит внутри листа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
    Dim wb As Workbook
    Dim cm As CodeModule
    Dim strPath As String
    Dim idx As Long
    
    strPath = "D:\Temp\Книга1.xls"
    
    Set wb = Application.Workbooks.Open(strPath)
    Set cm = wb.VBProject.VBComponents("Лист1").CodeModule
    
    With cm
        .DeleteLines  1 , .CountOfLines
        idx =  1 
        .InsertLines idx, "Sub Test()"
        idx = idx +  1 
        .InsertLines idx, "Msgbox ""Test!"", vbInformation"
        idx = idx +  1 
        .InsertLines idx, "End Sub"
    End With
    
    Set cm = Nothing
    Set wb = Nothing

Подключи ссылку Microsoft Visual Basic for Application Extensibility.

И еще. VBComponents("Лист1") надо указывать название модуля листа, а не его название в книге.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как программно поменять макрос который лежит внутри листа / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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