powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Возникновение ошибки "через раз"
20 сообщений из 20, страница 1 из 1
Возникновение ошибки "через раз"
    #39177267
Koriolan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Возникла проблема следующего плана. При щелчке на кнопке в форме открывается копия документа Word, в котором находим соответсвующую метку и вводим текст, взятый из поля этой самой формы. Технически это реализуется при помощи слудющей процедуры:
автор'Процедура перехода к необходимой метке и вставка соответсвуюещго текста
Public Sub TextInMetka(metka, content)
Selection.GoTo What:=wdGoToBookmark, Name:=metka
With ActiveDocument.bookmarks
.DefaultSorting = wdSortByName
.ShowHidden = False
End With

TypeText (content)

metka = ""
content = ""

End Sub

Проблема в том, что код срабатывает через раз. При закрытии файла Word и повторном запуске данной процедуры возникает ошибка в строке

авторSelection.GoTo What:=wdGoToBookmark, Name:=metka

т.е., как я понимаю, не удается найти указанную метку. Хотя оная в документе присутствует.

Подскажите, что я упускаю?
...
Рейтинг: 0 / 0
Возникновение ошибки "через раз"
    #39177272
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где описана процедура TextInMetka?
...
Рейтинг: 0 / 0
Возникновение ошибки "через раз"
    #39177275
Koriolan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Predeclared, в модуле базы данных.

Вызов процедуры при щелчке:


Private Sub Кнопка126_Click()
'Готовим шаблон приказа
OpenBlank

'Рабочие переменные

Dim DataPrint As Date

Dim NumberPrint As Integer

Dim ThemePrint As String

Dim Preambula As String


'Присваиваем переменным необходимые данные

DataPrint = Forms!Книга_Наказів!ДатаНаказуДрук

NumberPrint = Forms!Книга_Наказів!НомерНаказу



Call TextInMetka("ДатаНаказу", DataTextInNakaz(DataPrint))

Call TextInMetka("НомерНаказу", NumberPrint)




End Sub
...
Рейтинг: 0 / 0
Возникновение ошибки "через раз"
    #39177280
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
    Selection
    ActiveDocument


Эти методы нужно привязать к их объектам.
...
Рейтинг: 0 / 0
Возникновение ошибки "через раз"
    #39177286
Koriolan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Predeclared, В смысле?
...
Рейтинг: 0 / 0
Возникновение ошибки "через раз"
    #39177288
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты пользуешь свойства объекта Application, которые есть в объектной модели WORD,
и которые в VBA проекте Word-а могут быть описаны без указания самого объекта (Application).

В объектной модели Access у объекта Application нет таких свойств,
потому надлежит описывать полностью Объект.Свойство

Неполное описание "проскакивает" в первый раз, и подвешивает экземпляр Word-а.
При следующем попытке возникают ошибки.

зы: а лучше вообще отказаться от пользования этих свойств.
...
Рейтинг: 0 / 0
Возникновение ошибки "через раз"
    #39177295
Koriolan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В начале я писал следующее:

Option Compare Text
Option Explicit

Dim obWord As Object 'сам Word - Application
Dim obWindow As Object 'окно документа

этого, выходит не достаточно??
...
Рейтинг: 0 / 0
Возникновение ошибки "через раз"
    #39177299
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто описать объектные переменные недостаточно ни для каких целей.

Во-первых, им нужно присвоить значения - ссылки на объекты.
Set obWord = ...

Во вторых, пользуя методы и свойства этого объекта,
надлежит указывать и сам объект:
obWord.Selection
obWord.ActiveDocument

Засада кроется еще и в том, что на момент исполнения кода
имеется вероятность того, что и Selection и ActiveDocument
вернут ссылки не на то, что планировалось.

Вместо ActiveDocument, например, я бы рекомендовал указывать конкретный экземпляр коллекции Documents.
...
Рейтинг: 0 / 0
Возникновение ошибки "через раз"
    #39177304
Koriolan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может я немного направильно понял Тебя, но когда речь идет о "ссылке на объект" ,что именно подразумевается? Если речь идет об адресе Word'овского файла, то в моем случае, физически он нигде не находится. Я работаю с копией документа, взятого из поля OLE, находящегося в другой таблице базы. Подготовка самого бланка происходит в процедуре openblank вызваной при щелчке. В ней следующее:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Forms!Книга_Наказів!Шаблон = DLookup("ШаблонНаказу", "Типи_наказів", "Номер=" & 1)
Forms!Книга_Наказів!Шаблон.Action = acOLEActivate



Set obWord = GetObject(, "Word.Application")
Set obWindow = obWord.ActiveDocument.ActiveWindow
obWindow.WindowState = 1
obWord.WindowState = 1
obWord.Activate
...
Рейтинг: 0 / 0
Возникновение ошибки "через раз"
    #39177305
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Koriolan
Код: vbnet
1.
... Set obWord = GetObject(, "Word.Application") 


Вот. Все правильно.

Осталось при пользовании свойств указать, чьи свойства интересуют:
Код: vbnet
1.
obWord.Selection
...
Рейтинг: 0 / 0
Возникновение ошибки "через раз"
    #39177307
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще заметил:

к TypeText тоже надо объект указать.
...
Рейтинг: 0 / 0
Возникновение ошибки "через раз"
    #39177311
Koriolan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С привязкой разобрался. Спасибо. Теперь по ремарке к TypeText (content), поясни, пожалуйста.
...
Рейтинг: 0 / 0
Возникновение ошибки "через раз"
    #39177312
Koriolan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется ввиду это?

Код: vbnet
1.
2.
3.
Public Sub TypeText(V)
obWindow.Selection.TypeText Text:="" & V
End Sub
...
Рейтинг: 0 / 0
Возникновение ошибки "через раз"
    #39177314
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это метод объекта Selection библиотеки Word.
Его тоже нужно описывать полностью:
Код: vbnet
1.
obWord.Selection.TypeText 
...
Рейтинг: 0 / 0
Возникновение ошибки "через раз"
    #39177316
Koriolan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОК. Спасибо за помощь. :))
...
Рейтинг: 0 / 0
Возникновение ошибки "через раз"
    #39177318
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему бы с закладками не работать "по- прямее"?

.Documents(1).Bookmarks(1).Range.Text="123"
...
Рейтинг: 0 / 0
Возникновение ошибки "через раз"
    #39177319
Koriolan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В смысле обращения к метке не по имени, а по ее порядковому номеру?

Логично. Но это пока в режиме концепта :-) Мне почему-то показалось более надежным обращаться именно по имени. Тем более, что дальше по документу пойдет более сложная структура. Еще предстоит генерирование в Word таблицы с данными, взятыми из таблицы Access (и я пока смутно представляю себе этот процесс). Так что возможно, я к этому приду.
...
Рейтинг: 0 / 0
Возникновение ошибки "через раз"
    #39177321
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разница имелась в виду не в обращении по индексу или по имени к члену коллекции,
а в отсутствии необходимости поиска (Selection.GoTo).

По имени оно, конечно, в данном контексте, правильнее.
...
Рейтинг: 0 / 0
Возникновение ошибки "через раз"
    #39177323
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Koriolan... Еще предстоит генерирование в Word таблицы ...
Например по закладке:
Код: vbnet
1.
2.
3.
4.
    With .Documents(1)
        With .Tables.Add(.Bookmarks("qq").Range, 2, 5)
        End With
    End With


где 2-количество строк
5 -количество столбцов
...
Рейтинг: 0 / 0
Возникновение ошибки "через раз"
    #39177326
Koriolan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
генерировать еще пол беды. Проблема с выборкой. Необходимо собрать данные из двух разных таблиц, и вероятно перебирать циклом. В принципе, все решаемо, только через VBA пока непривычно. (Поставил себе задачу научиться делать еще и так). но за советы спасибо. Учту.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Возникновение ошибки "через раз"
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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