|
Возникновение ошибки "через раз"
|
|||
---|---|---|---|
#18+
Добрый день. Возникла проблема следующего плана. При щелчке на кнопке в форме открывается копия документа 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 т.е., как я понимаю, не удается найти указанную метку. Хотя оная в документе присутствует. Подскажите, что я упускаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2016, 22:31 |
|
Возникновение ошибки "через раз"
|
|||
---|---|---|---|
#18+
Где описана процедура TextInMetka? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2016, 22:35 |
|
Возникновение ошибки "через раз"
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2016, 22:43 |
|
Возникновение ошибки "через раз"
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2.
Эти методы нужно привязать к их объектам. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2016, 22:51 |
|
Возникновение ошибки "через раз"
|
|||
---|---|---|---|
#18+
Predeclared, В смысле? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2016, 22:56 |
|
Возникновение ошибки "через раз"
|
|||
---|---|---|---|
#18+
Ты пользуешь свойства объекта Application, которые есть в объектной модели WORD, и которые в VBA проекте Word-а могут быть описаны без указания самого объекта (Application). В объектной модели Access у объекта Application нет таких свойств, потому надлежит описывать полностью Объект.Свойство Неполное описание "проскакивает" в первый раз, и подвешивает экземпляр Word-а. При следующем попытке возникают ошибки. зы: а лучше вообще отказаться от пользования этих свойств. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2016, 23:13 |
|
Возникновение ошибки "через раз"
|
|||
---|---|---|---|
#18+
В начале я писал следующее: Option Compare Text Option Explicit Dim obWord As Object 'сам Word - Application Dim obWindow As Object 'окно документа этого, выходит не достаточно?? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2016, 23:30 |
|
Возникновение ошибки "через раз"
|
|||
---|---|---|---|
#18+
Просто описать объектные переменные недостаточно ни для каких целей. Во-первых, им нужно присвоить значения - ссылки на объекты. Set obWord = ... Во вторых, пользуя методы и свойства этого объекта, надлежит указывать и сам объект: obWord.Selection obWord.ActiveDocument Засада кроется еще и в том, что на момент исполнения кода имеется вероятность того, что и Selection и ActiveDocument вернут ссылки не на то, что планировалось. Вместо ActiveDocument, например, я бы рекомендовал указывать конкретный экземпляр коллекции Documents. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2016, 23:40 |
|
Возникновение ошибки "через раз"
|
|||
---|---|---|---|
#18+
Может я немного направильно понял Тебя, но когда речь идет о "ссылке на объект" ,что именно подразумевается? Если речь идет об адресе Word'овского файла, то в моем случае, физически он нигде не находится. Я работаю с копией документа, взятого из поля OLE, находящегося в другой таблице базы. Подготовка самого бланка происходит в процедуре openblank вызваной при щелчке. В ней следующее: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2016, 23:48 |
|
Возникновение ошибки "через раз"
|
|||
---|---|---|---|
#18+
Koriolan Код: vbnet 1.
Вот. Все правильно. Осталось при пользовании свойств указать, чьи свойства интересуют: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2016, 23:53 |
|
Возникновение ошибки "через раз"
|
|||
---|---|---|---|
#18+
Еще заметил: к TypeText тоже надо объект указать. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2016, 23:56 |
|
Возникновение ошибки "через раз"
|
|||
---|---|---|---|
#18+
С привязкой разобрался. Спасибо. Теперь по ремарке к TypeText (content), поясни, пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 00:02 |
|
Возникновение ошибки "через раз"
|
|||
---|---|---|---|
#18+
Имеется ввиду это? Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 00:05 |
|
Возникновение ошибки "через раз"
|
|||
---|---|---|---|
#18+
Это метод объекта Selection библиотеки Word. Его тоже нужно описывать полностью: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 00:09 |
|
Возникновение ошибки "через раз"
|
|||
---|---|---|---|
#18+
ОК. Спасибо за помощь. :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 00:14 |
|
Возникновение ошибки "через раз"
|
|||
---|---|---|---|
#18+
А почему бы с закладками не работать "по- прямее"? .Documents(1).Bookmarks(1).Range.Text="123" ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 00:16 |
|
Возникновение ошибки "через раз"
|
|||
---|---|---|---|
#18+
В смысле обращения к метке не по имени, а по ее порядковому номеру? Логично. Но это пока в режиме концепта :-) Мне почему-то показалось более надежным обращаться именно по имени. Тем более, что дальше по документу пойдет более сложная структура. Еще предстоит генерирование в Word таблицы с данными, взятыми из таблицы Access (и я пока смутно представляю себе этот процесс). Так что возможно, я к этому приду. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 00:25 |
|
Возникновение ошибки "через раз"
|
|||
---|---|---|---|
#18+
Разница имелась в виду не в обращении по индексу или по имени к члену коллекции, а в отсутствии необходимости поиска (Selection.GoTo). По имени оно, конечно, в данном контексте, правильнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 00:30 |
|
Возникновение ошибки "через раз"
|
|||
---|---|---|---|
#18+
Koriolan... Еще предстоит генерирование в Word таблицы ... Например по закладке: Код: vbnet 1. 2. 3. 4.
где 2-количество строк 5 -количество столбцов ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 00:35 |
|
Возникновение ошибки "через раз"
|
|||
---|---|---|---|
#18+
генерировать еще пол беды. Проблема с выборкой. Необходимо собрать данные из двух разных таблиц, и вероятно перебирать циклом. В принципе, все решаемо, только через VBA пока непривычно. (Поставил себе задачу научиться делать еще и так). но за советы спасибо. Учту. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 00:45 |
|
|
start [/forum/topic.php?fid=45&msg=39177323&tid=1613881]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 144ms |
0 / 0 |