run-time error 462
, Ошибка выполнения '462': Удаленный сервер не существует или недоступен
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.91] |
|
|
Правила раздела Visual Basic: Общие вопросы
FAQ Сайта
FAQ Раздела
Кладовка
Наши Исходники
API-Guide
Поиск по Разделу
MSDN Library Online
Google
run-time error 462
, Ошибка выполнения '462': Удаленный сервер не существует или недоступен
|
Сообщ.
#1
,
|
|
|
|
Процедура вызыватся несколько раз из формы.
Первый раз создается таблица и word закрываем. При вторичном вызове процедуры появляется ошибка №462. Текст процедуры привожу ниже ![]() ![]() Public Sub WordDoc() Dim appWord As Word.Application, _ docWord As Word.Document, _ rngCurrent As Word.Range, _ objTable As Word.Table Set appWord = New Word.Application Set docWord = appWord.Documents.Add() docWord.PageSetup.LeftMargin = 60 appWord.Visible = True Set rngCurrent = docWord.Range With rngCurrent .InsertParagraphAfter .Collapse Direction:=wdCollapseEnd .Text = "Первая таблица : названиe" .Font.Name = "Times New Roman" .Font.Size = 14 .Font.Italic = True .ParagraphFormat.Alignment = wdAlignParagraphLeft End With Set rngCurrent = docWord.Range With rngCurrent .InsertParagraphAfter .Collapse Direction:=wdCollapseEnd End With Set objTable = docWord.Tables.Add(Range:=rngCurrent, NumRows:=4, NumColumns:=15) With objTable .Borders.Enable = True .Rows.Height = 10 .Columns(1).Width = CentimetersToPoints(1.04) .Columns(2).Width = CentimetersToPoints(2.33) .Columns(3).Width = CentimetersToPoints(1.06) .Columns(4).Width = CentimetersToPoints(1.16) .Columns(5).Width = CentimetersToPoints(1.16) .Columns(6).Width = CentimetersToPoints(1.06) .Columns(7).Width = CentimetersToPoints(1.06) .Columns(8).Width = CentimetersToPoints(1.47) .Columns(9).Width = CentimetersToPoints(1.69) .Columns(10).Width = CentimetersToPoints(1.07) .Columns(11).Width = CentimetersToPoints(1.07) .Columns(12).Width = CentimetersToPoints(1.07) .Columns(13).Width = CentimetersToPoints(1.07) .Columns(14).Width = CentimetersToPoints(1.2) .Columns(15).Width = CentimetersToPoints(1.2) End With Set objTable = Nothing Set appWord = Nothing End Sub M Где ошибка? Помогите |
|
Сообщ.
#2
,
|
|
|
|
А где appWord.Quit?
И не забывайте использовать тег "Code". Исправьте постинг. |
|
Сообщ.
#3
,
|
|
|
|
Пользоватль должен в открытом окне Word
поработать и САМ записать документ. А потом снова вызвать процедуру |
|
Сообщ.
#4
,
|
|
|
|
И что? не нравится - используй РАННЕЕ связывание.
|
|
Сообщ.
#5
,
|
|
|
|
У меня работает без ошибок
![]() прочел внимательней.. сделал так-же.. ошибка) Прошу прощения, за внесенное недоразумение) |
|
Сообщ.
#6
,
|
|
|
|
Цитата Akina @ И что? не нравится - используй РАННЕЕ связывание А это как? |
|
Сообщ.
#7
,
|
|
|
|
1) пишем
![]() ![]() Dim appWord As New Word.Application 2) убираем строку ![]() ![]() Set appWord = New Word.Application А ещё лучше - сначала читаем теорию, потом пишем код. |
|
Сообщ.
#8
,
|
|
|
|
Не работает. Ошибка 462
|
|
Сообщ.
#9
,
|
|
|
|
Error 462
Цитата Visual Basic has established a reference to Word due to a line of code that calls a Word object, method, or property without qualifying it with a Word object variable. Visual Basic does not release this reference until you end the program. This errant reference interferes with automation code when the code is run more than once. Иными словами, appWord следует определить As New не на уровне процедуры, а на уровне модуля либо приложения. |
|
Сообщ.
#10
,
|
|
|
|
Не работает. Ошибка 462
|
|
Сообщ.
#11
,
|
|
|
|
Тогда подробнее о последовательности действий - и юзера, и программных.
|
|
Сообщ.
#12
,
|
|
|
|
Цитата Akina @ Тогда подробнее о последовательности действий - и юзера, и программных. На форме командная кнопка. Пользователь щелкает по ней, загружается WORD, создается таблица, прога забивает в нее результаты (это из кода убрано); пользователь просматривает таблицу, записывает документ и программа возвращается обратно на форму. Пользователь снова щелкает по ней, снова загружается WORD в новую таблицу забиваются другие результаты и конец. На первом этапе все создается, результаты в таблице, а по ВТОРОМУ щелчку загружается WORD, создается таблица и на этапе изменения ширины столбцов возникает ошибка №462 |
|
Сообщ.
#13
,
|
|
|
|
![]() ![]() Option Explicit Dim appWord As Word.Application Dim docWord As Word.Document Dim i As Integer Private Sub cmdStep1_Click() If appWord.Documents.Count = 0 Then Set docWord = appWord.Documents.Add End If Call InsertTable End Sub Private Sub cmdStep2_Click() If appWord.Documents.Count = 0 Then MsgBox "Run step 1, then step2." Else Call InsertTable End If End Sub Private Sub cmdQuit_Click() Unload Me End Sub Private Sub Form_Load() Set appWord = New Word.Application appWord.Visible = False i = 1 End Sub Sub InsertTable() Dim rngCurrent As Word.Range Dim objTable As Word.Table docWord.PageSetup.LeftMargin = 60 Set rngCurrent = docWord.Range With rngCurrent .InsertParagraphAfter .Collapse Direction:=wdCollapseEnd .Text = "Table No. " & CStr(i) & ": TableName" i = i + 1 .Font.Name = "Times New Roman" .Font.Size = 14 .Font.Italic = True .ParagraphFormat.Alignment = wdAlignParagraphLeft End With Set rngCurrent = docWord.Range With rngCurrent .InsertParagraphAfter .Collapse Direction:=wdCollapseEnd End With Set objTable = docWord.Tables.Add(Range:=rngCurrent, NumRows:=4, NumColumns:=15) With objTable .Borders.Enable = True .Rows.Height = 10 .Columns(1).Width = CentimetersToPoints(1.04) .Columns(2).Width = CentimetersToPoints(2.33) .Columns(3).Width = CentimetersToPoints(1.06) .Columns(4).Width = CentimetersToPoints(1.16) .Columns(5).Width = CentimetersToPoints(1.16) .Columns(6).Width = CentimetersToPoints(1.06) .Columns(7).Width = CentimetersToPoints(1.06) .Columns(8).Width = CentimetersToPoints(1.47) .Columns(9).Width = CentimetersToPoints(1.69) .Columns(10).Width = CentimetersToPoints(1.07) .Columns(11).Width = CentimetersToPoints(1.07) .Columns(12).Width = CentimetersToPoints(1.07) .Columns(13).Width = CentimetersToPoints(1.07) .Columns(14).Width = CentimetersToPoints(1.2) .Columns(15).Width = CentimetersToPoints(1.2) End With appWord.Visible = True End Sub Private Sub Form_Unload(Cancel As Integer) If docWord Is Nothing Then appWord.Quit wdDoNotSaveChanges Set appWord = Nothing Exit Sub End If If docWord.Saved Then docWord.Close wdDoNotSaveChanges Set docWord = Nothing appWord.Quit wdDoNotSaveChanges Set appWord = Nothing Else MsgBox "Save changes before quit." Cancel = True End If End Sub |
|
Сообщ.
#14
,
|
|
|
|
Код работает. При щелчкам по кнопкам в документ WORDа таблицы вставляются
после записи документа WORD закрывается (его в диспетчере задач нет). Прога активна. Но при повторных щелчках ОШИБКА 462 ! |
|
Сообщ.
#15
,
|
|
|
|
Мне жаль тебя огорчать, но у Word.Application нет штатного способа отменить его выгрузку. А посему надавать юзеру по рукам и запретить выгружать документ.
|
|
Сообщ.
#16
,
|
|
|
|
В силу своих ограниченных познаний.., осмелюсь предложить такой нестандартный вариант:
после того, как прога введет данные, она автоматически выгружается и затем сразу же загружается, пока пользователь возится с таблицей. *зато 100% рабочий |
|
Сообщ.
#17
,
|
|
|
|
Цитата Akina @ Мне жаль тебя огорчать, но у Word.Application нет штатного способа отменить его выгрузку. А посему надавать юзеру по рукам и запретить выгружать документ. Но мне надо чтобы сохранялись документы ворда с таблицами заполненные результатами БЕЗ выхода из проги. |
|
Сообщ.
#18
,
|
|
|
|
Да хоть два раза, у docWord есть и .Save, и .SaveAs.
Просто нельзя давать юзеру закрывать Ворд. |
|
Сообщ.
#19
,
|
|
|
|
Поступил так: после каждого заполнения таблиц результатами
appWord.Visible = False ' спрятали WORD appWord.ActiveDocument.Close Set objTable = Nothing Set appWord = Nothing Но при I-х количеств нажатий на кнопку в диспетчере задач висит I количество процессов WORD. Как их убить?? |
|
Сообщ.
#20
,
|
|
|
|
А вот незачем было чистить appWord и затем генерить новый. См. мой код - он обходится одним appWord на всё время работы.
Цитата red_boh @ Как их убить?? Вручную |
|
Сообщ.
#21
,
|
|
|
|
Ура!!!. Как хотел так и получилось.
Создаются документы, вставляются таблицы, сохраняются доки. Word в диспетчере задач автоматом убиваются. Всем кто помогал БОЛЬШОЕ СПАСИБО!!!! |