powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не соответсвие типов какое-то
25 сообщений из 53, страница 1 из 3
Не соответсвие типов какое-то
    #38403829
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть в Ворде выделенное поле MACROBUTTON Замужем_не_замужем замужем
то есть в документе оно отображается "замужем"
Текст макроса
Sub Замужем_не_замужем()

Shell "D:\0.exe, vbNormalFocus"

End Sub

текст исходника файла 0.exe
Код: vbnet
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.
Option Explicit


'код выделенного поля
Public SelectionFieldsCode As String

'Public - для видимости во всём проекте
Public ObjectWord As Object
Public ObjectOpenWord As Object
'

Sub Main()

    Set ObjectWord = GetObject(, "Word.Application")
    Set ObjectOpenWord = ObjectWord.ActiveDocument

    'отключаем дёргание экрана при выполнении кода
    ObjectWord.ScreenUpdating = False
        
    'код выделенного поля
        SelectionFieldsCode = Trim$(ObjectWord.Selection.Fields(1).Code)
        'код выделенного поля
        'MsgBox$ SelectionFieldsCode
        
        If SelectionFieldsCode = "MACROBUTTON Замужем_не_замужем замужем" Then
        ObjectWord.Selection.Fields(1).Code = "MACROBUTTON Замужем_не_замужем не замужем"
        Beep
        End If

    'отменяем отключенное ранее дёргание экрана при выполнении кода
    ObjectWord.ScreenUpdating = True

    'установка объекта в значение Nothing требуется для освобождения памяти, которая была выделена для создания этого объекта
    Set ObjectWord = Nothing
    Set ObjectOpenWord = Nothing

End Sub



Но на строке ObjectWord.Selection.Fields(1).Code = "MACROBUTTON Замужем_не_замужем не замужем"
получаю ошибку Несответсие типов, как эту ересь понять, преодолеть? Спасибо
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38403830
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну да вспомнил, нужно эту строку записать так:
Код: vbnet
1.
ObjectOpenWord.Selection.Fields(1).Code = "MACROBUTTON Замужем_не_замужем не замужем"


но тогда
ошибка Объект не поддерживает это свойство или метод
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38404306
Фотография i45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофа,

Код: vbnet
1.
ObjectWord.Selection.Fields(1).Code.Text = ....
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38404321
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i45, спасибо, то что нужно!!
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38404935
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i45, всё же я спрошу, ну не доходит почему обращаемся
к GetObject(, "Word.Application") - то есть ко всему Ворду
а не ObjectWord.ActiveDocument - когда можно к конкретному документу?
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38404983
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что у документа Selection нет.
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38405057
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПотому что у документа Selection нет.
в том то и дело, что есть у активного документа
Selection.Fields(1) - выделенное первое поле
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38405266
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C чего ты взял, что просто Selection — у активного документа? Оно у Application, а Application это глобальный объект, чьи члены доступны из любого участка кода, поэтому слово Application писать не обязательно.

Напиши ActiveDocument.Selection и убедись в наличии ошибки.
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38405275
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy, спасибо, уму не поддаётся, просто придётся поверить
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38405460
Фотография i45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофаi45, спасибо, то что нужно!!


No problem, катастрофа, почему ты не используешь раннее связывание, подобные вопросы отпали бы сами собой, да и код писать было бы легче.
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38405473
Фотография i45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофа,

Сравни:

Код: vbnet
1.
2.
3.
?Application.ActiveWindow.Panes(1).Selection
?Application.ActiveWindow.Selection
?Application.Selection



;)
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38406058
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i45катастрофаi45, спасибо, то что нужно!!


No problem, катастрофа, почему ты не используешь раннее связывание, подобные вопросы отпали бы сами собой, да и код писать было бы легче.
в моём случае это как?
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38406712
Фотография i45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофа,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Option Explicit

Public ObjectWord As Word.Application

Sub Main()

    Set ObjectWord = ThisDocument.Application
    
    ObjectWord.ScreenUpdating = False

    With ObjectWord.Selection.Fields(1).Code
        If .Text = "MACROBUTTON marr-not-marr marr" Then
            .Text = "MACROBUTTON marr-not-marr not marr"
        Else
            .Text = "MACROBUTTON marr-not-marr marr"
        End If
    End With
    
    ObjectWord.ScreenUpdating = True

End Sub
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38406713
Фотография i45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофа, упрощенное представление:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Option Explicit

Sub Main()

    Application.ScreenUpdating = False

    With Selection.Fields(1).Code
        If .Text = "MACROBUTTON marr-not-marr marr" Then
            .Text = "MACROBUTTON marr-not-marr not marr"
        Else
            .Text = "MACROBUTTON marr-not-marr marr"
        End If
    End With
    
    Application.ScreenUpdating = True

End Sub
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38406714
Фотография i45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофа,

И слово "несоответствие" следует писать слитно...
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38406717
Фотография i45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофа,

Этот код и комментарий не нужны, поскольку при выходе из процедуры память освободится и без этого кода:

Код: vbnet
1.
2.
3.
    'установка объекта в значение Nothing требуется для освобождения памяти, которая была выделена для создания этого объекта
    Set ObjectWord = Nothing
    Set ObjectOpenWord = Nothing
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38406718
Фотография i45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофа,

Сорри, при условии что они были декларированы в этой процедуре.
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38406746
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i45, ого, какой ликбез, СПАСИБО!!!
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38406998
Фотография i45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофа,

My pleasure.
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38432498
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i45катастрофа,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Option Explicit

Public ObjectWord As Word.Application

Sub Main()

    Set ObjectWord = ThisDocument.Application
    
    ObjectWord.ScreenUpdating = False

    With ObjectWord.Selection.Fields(1).Code
        If .Text = "MACROBUTTON marr-not-marr marr" Then
            .Text = "MACROBUTTON marr-not-marr not marr"
        Else
            .Text = "MACROBUTTON marr-not-marr marr"
        End If
    End With
    
    ObjectWord.ScreenUpdating = True

End Sub


вот только руки дошли и этот код и ниже в следующем посте не взлетают
1 ObjectWord As Word.Application - определяемый пользователем тип не определён
2 Application. - переменная не определена
???
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38433232
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При раннем связывании надо сначала подключить соответствующую библиотеку в референсах.
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38433258
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM, спасибо!
Код: vbnet
1.
2.
'при раннем связывании надо сначала подключить соответствующую библиотеку в референсах
'Проект > Ссылки > Microsoft Office 11.0 Object Library > выбрать > ОК


не залечилось, не ту?
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38433289
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дык - Microsoft Word 11.0 Object Library
и тогда пошло поехало, ThisDocument - тыщу раз меня к этому приучают, ну не взлетает....???
а я упираюсь ActiveDocument и взлетаю
ну почему мне пишут то, что не работает - ThisDocument - чем Вам это прельщает??
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38433353
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну не прёт
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Option Explicit
 
'при раннем связывании надо сначала подключить соответствующую библиотеку в референсах
'Проект > Ссылки > Microsoft Word 11.0 Object Library > выбрать > ОК
'объявляем глобально для видимости во всём проекте
Dim objWord As Word.Application
Dim objDoc As Word.Document
 
Sub Main()
 
    Set objWord = Word.Application
    Set objDoc = GetObject(, " Word.Application")
    
    objDoc.ScreenUpdating = False
 
    MsgBox$ objDoc.Fields.Count
        
    objDoc.ScreenUpdating = True
 
End Sub



это ВБ6
Код: vbnet
1.
Set objDoc = GetObject(, " Word.Application")


главное на этой строке ошибка 429 компонет активХ не может создать объект
...
Рейтинг: 0 / 0
Не соответсвие типов какое-то
    #38433398
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если Ворд не открыт - то всё равно надо использовать CreateObject()
...
Рейтинг: 0 / 0
25 сообщений из 53, страница 1 из 3
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не соответсвие типов какое-то
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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