Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / удалить кнопки, добавить свою с кодом / 17 сообщений из 17, страница 1 из 1
25.03.2011, 17:02
    #37182935
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить кнопки, добавить свою с кодом
'указываем с каким объектом работаем - Tables(1).Rows(1).Cells(3)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
With ActiveDocument.Tables( 1 ).Rows( 1 ).Cells( 3 ).Range.InlineShapes
Количество = ActiveDocument.Tables( 1 ).Rows( 1 ).Cells( 3 ).Range.InlineShapes.Count
'удалим все существующие кнопки в объекте ...
DO WHILE Количество >  0  'строго от конца к началу надо идти
ActiveDocument.Tables( 1 ).Rows( 1 ).Cells( 3 ).Range.InlineShapes.Item(Количество).Delete
Количество = Количество -  1 
LOOP
 With .AddOLEControl("Forms.CommandButton.1")
            .Height =  20 
            .WIDTH =  40 
            With .OLEFormat.Object
            .Caption = "Кнопка1"
            .NAME = "MyButton"
                With .Font
                    .NAME = "Times New Roman"
                    .Size =  14 
                END With
            END With
        END With
    END With
 
 
DIM vbc AS VBComponent 'функция не определена????
Set vbc = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule)
vbc.NAME = "MyModule"
vbc.CodeModule.AddFromString "Sub MyButton()" & vbCrLf & "    Beep" & vbCrLf & "End Sub"
Set vbc = Nothing 
2 вопроса
"Количество" уменьшается верно но сами кнопки не удаляются из ячейки таблицы Ворда ????
и
Dim vbc As VBComponent 'функция не определена, библиотека?, какая? ????
...
Рейтинг: 0 / 0
25.03.2011, 17:29
    #37182989
basicv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить кнопки, добавить свою с кодом
автор"Количество" уменьшается верно но сами кнопки не удаляются из ячейки таблицы Ворда ????

В VB индексы коллекций начинаются с 0, так что первый индекс кнопки на удаление будет ...Count - 1
...
Рейтинг: 0 / 0
25.03.2011, 17:50
    #37183019
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить кнопки, добавить свою с кодом
basicv,
кстати, мне в Ворде надо, строку:
Set vbc = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule)
так вероятно надо
Set vbc = ActiveDocument.VBProject.VBComponents.Add(vbext_ct_StdModule)
но всё равно: Dim vbc As VBComponent 'функция не определена, библиотека?, какая? ????
ну было в докменте в ячейке три кнопки
код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
'указываем с каким объектом работаем - Tables(1).Rows(1).Cells(3)
With ActiveDocument.Tables( 1 ).Rows( 1 ).Cells( 3 ).Range.InlineShapes
Количество = ActiveDocument.Tables( 1 ).Rows( 1 ).Cells( 3 ).Range.InlineShapes.Count -  1 
'удалим все существующие кнопки в объекте ...
Do While Количество >  0  'строго от конца к началу надо идти
ActiveDocument.Tables( 1 ).Rows( 1 ).Cells( 3 ).Range.InlineShapes.Item(Количество).Delete
Количество = Количество -  1 
Loop
я прошёл, но реально три и осталось?????
...
Рейтинг: 0 / 0
27.03.2011, 10:46
    #37184286
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить кнопки, добавить свою с кодом
что-то, не движется у меня, обновлю топик, итак, скрипт:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
'удаляем все кнопки в ... ячейке таблицы
'указываем с каким объектом работаем, удаляем кнопки откуда - Tables(1).Rows(1).Cells(3)
With ActiveDocument.Tables( 1 ).Rows( 1 ).Cells( 3 ).Range.InlineShapes
Количество_кнопок = ActiveDocument.Tables( 1 ).Rows( 1 ).Cells( 3 ).Range.InlineShapes.Count
'удалим все существующие кнопки в объекте ...
'строго от конца к началу надо идти
Do While Количество_кнопок >  0 
ActiveDocument.Tables( 1 ).Rows( 1 ).Cells( 3 ).Range.InlineShapes.Item(Количество_кнопок).Delete
Количество_кнопок = Количество_кнопок -  1 
Loop
End With
Почему не удаляет кнопки??? Счётчик реально уменьшается
...
Рейтинг: 0 / 0
27.03.2011, 11:33
    #37184315
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить кнопки, добавить свою с кодом
basicv
В VB индексы коллекций начинаются с 0, так что первый индекс кнопки на удаление будет ...Count - 1
Ну скажите тогда как в строке
ActiveDocument.Tables(1).Rows(1).Cells(3).Range.InlineShapes.Item(Количество).Delete
если например кнопок "Количество =" было две на первом проходе не вылазит ошибка, ведь как пропускает, если есть толькокнопки 0 и 1, или я что не понял??
...
Рейтинг: 0 / 0
27.03.2011, 17:01
    #37184655
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить кнопки, добавить свою с кодом
basicvВ VB индексы коллекций начинаются с 0ЛПП. Никогда такого не было.
...
Рейтинг: 0 / 0
27.03.2011, 19:21
    #37184747
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить кнопки, добавить свою с кодом
Antonariy, ЛПП. Никогда такого не было.
Что такоеЛПП, я знаю только ЛТП
И как выйти с положения?
...
Рейтинг: 0 / 0
29.03.2011, 11:02
    #37187295
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить кнопки, добавить свою с кодом
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
'1 вариант
'указываем с каким объектом работаем - Tables(1).Rows(1).Cells(3)
With ActiveDocument.Tables( 1 ).Rows( 1 ).Cells( 3 ).Range.InlineShapes
Количество = ActiveDocument.Tables( 1 ).Rows( 1 ).Cells( 3 ).Range.InlineShapes.Count
'удалим все существующие кнопки в объекте ...
DO WHILE Количество >  0  'строго от конца к началу надо идти
ActiveDocument.Tables( 1 ).Rows( 1 ).Cells( 3 ).Range.InlineShapes.Item(Количество).Delete
Количество = Количество -  1 
LOOP
 
'2 вариант
'удаляем все кнопки в ... ячейке таблицы Ворд
Количество_кнопок = ActiveDocument.Tables( 1 ).Rows( 1 ).Cells( 3 ).Range.InlineShapes.Count
DIM X AS InlineShape
FOR Each X In ActiveDocument.Tables( 1 ).Rows( 1 ).Cells( 3 ).Range.InlineShapes
IF X.TYPE = wdInlineShapeOLEControlObject THEN X.Delete
'или для более детального определения
'If X.OLEFormat.Object...
NEXT
Количество_кнопок_1 = ActiveDocument.Tables( 1 ).Rows( 1 ).Cells( 3 ).Range.InlineShapes.Count
IF Количество_кнопок = Количество_кнопок_1 THEN BEEP 'ЗВУК КАК РАЗДРАЖАЕТ!!!!!

'3 вариант , железный
ActiveDocument.Tables( 1 ).Rows( 1 ).Cells( 3 ).Range.Text = ""
 
        With .AddOLEControl("Forms.CommandButton.1")
            .Height =  20 
            .WIDTH =  40 
            With .OLEFormat.Object
            .Caption = "Кнопка1"
            .NAME = "MyButton"
                With .Font
                    .NAME = "Times New Roman"
                    .Size =  14 
                END With
            END With
        END With
        END With
 
DIM vbc AS VBComponent 'функция не определена????
Set vbc = ActiveDocument.VBProject.VBComponents.Add(vbext_ct_StdModule)
vbc.NAME = "MyModule"
vbc.CodeModule.AddFromString "Sub MyButton()" & vbCrLf & "    Beep" & vbCrLf & "End Sub"
Set vbc = Nothing
То есть код по удалению всех кнопок из ячейки таблицы никому не известен?
Ладно выйду с положения проще, вариант номер 3, не выход но всё же, зато и плюс есть одной строкой всё решаем
Вопрос то сейчас, в строке
Dim vbc As VBComponent 'функция не определена, почему, что надо изменить????
...
Рейтинг: 0 / 0
29.03.2011, 12:10
    #37187490
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить кнопки, добавить свою с кодом
Ципихович ЭндрюВопрос то сейчас, в строке
Dim vbc As VBComponent 'функция не определена, почему, что надо изменить????
Dim vbc As Object
vbext_ct_StdModule заменить на соответствующую числовую константу - 1
Код: plaintext
1.
DIM vbc AS Object
Set vbc = ActiveDocument.VBProject.VBComponents.Add( 1 )

Или же подключить необходимую библиотеку к проекту - Microsoft Visual Basic for Application Extensibiliti 5.3
...
Рейтинг: 0 / 0
29.03.2011, 12:40
    #37187557
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить кнопки, добавить свою с кодом
The_Prist, спасибо за ответ, попробую, тут узнал, что оказывается:
перед удалением надо переместить фокус на объект, типа X.Select бред, но помогает
...
Рейтинг: 0 / 0
29.03.2011, 13:15
    #37187656
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить кнопки, добавить свою с кодом
The_Prist, Вы сказали заменить на соответствующую числовую константу - 1
Заменил, всё равно выделяет vbc As VBComponent - сообщение функция не определена
пытаюсь
подключить необходимую библиотеку к проекту - Microsoft Visual Basic for Application Extensibiliti 5.3
получаю сообщение
error accessing the system registry - Ошибка доступа к системе реестра
что не так??
...
Рейтинг: 0 / 0
29.03.2011, 13:18
    #37187666
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить кнопки, добавить свою с кодом
Ципихович ЭндрюThe_Prist, Вы сказали заменить на соответствующую числовую константу - 1
Заменил, всё равно выделяет vbc As VBComponent - сообщение функция не определенаВы читаете все или только то, что сами посчитаете нужным? Перечитайте теперь внимательно мое сообщение. Начиная с самой первой строки.
...
Рейтинг: 0 / 0
29.03.2011, 13:28
    #37187697
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить кнопки, добавить свою с кодом
The_Prist, на всякий случай скажу, что это Ворд и ВБА, я понимаю, что здесь
vbc.NAME = "MyModule"
ещё надо буде изменить, но до этого ещё не дошёл
Перечитал внимательно Ваше сообщение
единственное смущает:
vbext_ct_StdModule заменить на соответствующую числовую константу
то есть я пишу "1", так??
Или что другое??
...
Рейтинг: 0 / 0
29.03.2011, 13:50
    #37187759
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить кнопки, добавить свою с кодом
Ципихович ЭндрюПеречитал внимательно Ваше сообщение
единственное смущает:
vbext_ct_StdModule заменить на соответствующую числовую константу
то есть я пишу "1", так??Т.е. до первой строки сообщения Вы так и не дошли? Вы видите первую строку моего сообщения или только я её вижу? Вот эта вот:

Dim vbc As Object
...
Рейтинг: 0 / 0
29.03.2011, 13:51
    #37187764
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить кнопки, добавить свою с кодом
И код я Вам привел даже - именно с этой строкой. Но Вы не утруждаете себя прочтением сообщений внимательно и вдумчиво.
...
Рейтинг: 0 / 0
29.03.2011, 14:17
    #37187865
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить кнопки, добавить свою с кодом
The_Prist, Object разницу увидел, буду пробовать
...
Рейтинг: 0 / 0
29.03.2011, 15:21
    #37188067
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить кнопки, добавить свою с кодом
делаю так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
'указываем с каким объектом работаем - Tables(1).Rows(1).Cells(3)
With ActiveDocument.Tables( 1 ).Rows( 1 ).Cells( 3 ).Range.InlineShapes
        With .AddOLEControl("Forms.CommandButton.1")
            .Height =  20 
            .Width =  40 
            With .OLEFormat.Object
            .Caption = "Кнопка1"
            .Name = "MyButton"
                With .Font
                    .Name = "Times New Roman"
                    .Size =  14 
                End With
            End With
        End With
        End With

Dim vbc As Object
'добавляется модуль в активный документ
Set vbc = ActiveDocument.VBProject.VBComponents.Add( 1 )
'имя добавленному модулю
vbc.Name = "MyModule" 
vbc.CodeModule.AddFromString "Sub MyButton_Click()" & vbCrLf & "    Beep" & vbCrLf & "End Sub"
Set vbc = Nothing

Сейчас вопрос в следующем:
1.
vbc.Name = "MyModule" 'как здесь сделать проверку на наличие модуля или брабатывать ошибку????: 0шибка 32813 Application-defined or object--defined error в приложении или объекте ошибка
2.
всё делается как надо но кнопка потом биип не делает, так как Sub MyButton_Click добавляется не туда, как исправить??
и вообще как ей коротко сказать типа этого:
Application.Run "Normal.NewMacros.Кнопка_добавить"
Спасибо
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / удалить кнопки, добавить свою с кодом / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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