powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / удалить кнопки, добавить свою с кодом
17 сообщений из 17, страница 1 из 1
удалить кнопки, добавить свою с кодом
    #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
удалить кнопки, добавить свою с кодом
    #37182989
basicv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор"Количество" уменьшается верно но сами кнопки не удаляются из ячейки таблицы Ворда ????

В VB индексы коллекций начинаются с 0, так что первый индекс кнопки на удаление будет ...Count - 1
...
Рейтинг: 0 / 0
удалить кнопки, добавить свою с кодом
    #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
удалить кнопки, добавить свою с кодом
    #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
удалить кнопки, добавить свою с кодом
    #37184315
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basicv
В VB индексы коллекций начинаются с 0, так что первый индекс кнопки на удаление будет ...Count - 1
Ну скажите тогда как в строке
ActiveDocument.Tables(1).Rows(1).Cells(3).Range.InlineShapes.Item(Количество).Delete
если например кнопок "Количество =" было две на первом проходе не вылазит ошибка, ведь как пропускает, если есть толькокнопки 0 и 1, или я что не понял??
...
Рейтинг: 0 / 0
удалить кнопки, добавить свою с кодом
    #37184655
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basicvВ VB индексы коллекций начинаются с 0ЛПП. Никогда такого не было.
...
Рейтинг: 0 / 0
удалить кнопки, добавить свою с кодом
    #37184747
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy, ЛПП. Никогда такого не было.
Что такоеЛПП, я знаю только ЛТП
И как выйти с положения?
...
Рейтинг: 0 / 0
удалить кнопки, добавить свою с кодом
    #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
удалить кнопки, добавить свою с кодом
    #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
удалить кнопки, добавить свою с кодом
    #37187557
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist, спасибо за ответ, попробую, тут узнал, что оказывается:
перед удалением надо переместить фокус на объект, типа X.Select бред, но помогает
...
Рейтинг: 0 / 0
удалить кнопки, добавить свою с кодом
    #37187656
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist, Вы сказали заменить на соответствующую числовую константу - 1
Заменил, всё равно выделяет vbc As VBComponent - сообщение функция не определена
пытаюсь
подключить необходимую библиотеку к проекту - Microsoft Visual Basic for Application Extensibiliti 5.3
получаю сообщение
error accessing the system registry - Ошибка доступа к системе реестра
что не так??
...
Рейтинг: 0 / 0
удалить кнопки, добавить свою с кодом
    #37187666
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович ЭндрюThe_Prist, Вы сказали заменить на соответствующую числовую константу - 1
Заменил, всё равно выделяет vbc As VBComponent - сообщение функция не определенаВы читаете все или только то, что сами посчитаете нужным? Перечитайте теперь внимательно мое сообщение. Начиная с самой первой строки.
...
Рейтинг: 0 / 0
удалить кнопки, добавить свою с кодом
    #37187697
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist, на всякий случай скажу, что это Ворд и ВБА, я понимаю, что здесь
vbc.NAME = "MyModule"
ещё надо буде изменить, но до этого ещё не дошёл
Перечитал внимательно Ваше сообщение
единственное смущает:
vbext_ct_StdModule заменить на соответствующую числовую константу
то есть я пишу "1", так??
Или что другое??
...
Рейтинг: 0 / 0
удалить кнопки, добавить свою с кодом
    #37187759
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович ЭндрюПеречитал внимательно Ваше сообщение
единственное смущает:
vbext_ct_StdModule заменить на соответствующую числовую константу
то есть я пишу "1", так??Т.е. до первой строки сообщения Вы так и не дошли? Вы видите первую строку моего сообщения или только я её вижу? Вот эта вот:

Dim vbc As Object
...
Рейтинг: 0 / 0
удалить кнопки, добавить свою с кодом
    #37187764
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И код я Вам привел даже - именно с этой строкой. Но Вы не утруждаете себя прочтением сообщений внимательно и вдумчиво.
...
Рейтинг: 0 / 0
удалить кнопки, добавить свою с кодом
    #37187865
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist, Object разницу увидел, буду пробовать
...
Рейтинг: 0 / 0
удалить кнопки, добавить свою с кодом
    #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
17 сообщений из 17, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / удалить кнопки, добавить свою с кодом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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