Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не соответсвие типов какое-то / 25 сообщений из 53, страница 1 из 3
22.09.2013, 12:27
    #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
22.09.2013, 12:31
    #38403830
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не соответсвие типов какое-то
ну да вспомнил, нужно эту строку записать так:
Код: vbnet
1.
ObjectOpenWord.Selection.Fields(1).Code = "MACROBUTTON Замужем_не_замужем не замужем"


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

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

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


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

Сравни:

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



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


No problem, катастрофа, почему ты не используешь раннее связывание, подобные вопросы отпали бы сами собой, да и код писать было бы легче.
в моём случае это как?
...
Рейтинг: 0 / 0
25.09.2013, 05:22
    #38406712
i45
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
25.09.2013, 05:31
    #38406713
i45
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
25.09.2013, 05:34
    #38406714
i45
i45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не соответсвие типов какое-то
катастрофа,

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

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

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

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

My pleasure.
...
Рейтинг: 0 / 0
18.10.2013, 11:31
    #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
18.10.2013, 17:08
    #38433232
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не соответсвие типов какое-то
При раннем связывании надо сначала подключить соответствующую библиотеку в референсах.
...
Рейтинг: 0 / 0
18.10.2013, 17:22
    #38433258
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не соответсвие типов какое-то
AndreTM, спасибо!
Код: vbnet
1.
2.
'при раннем связывании надо сначала подключить соответствующую библиотеку в референсах
'Проект > Ссылки > Microsoft Office 11.0 Object Library > выбрать > ОК


не залечилось, не ту?
...
Рейтинг: 0 / 0
18.10.2013, 17:44
    #38433289
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не соответсвие типов какое-то
дык - Microsoft Word 11.0 Object Library
и тогда пошло поехало, ThisDocument - тыщу раз меня к этому приучают, ну не взлетает....???
а я упираюсь ActiveDocument и взлетаю
ну почему мне пишут то, что не работает - ThisDocument - чем Вам это прельщает??
...
Рейтинг: 0 / 0
18.10.2013, 18:28
    #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
18.10.2013, 19:05
    #38433398
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не соответсвие типов какое-то
Если Ворд не открыт - то всё равно надо использовать CreateObject()
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не соответсвие типов какое-то / 25 сообщений из 53, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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