На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> run-time error 462 , Ошибка выполнения '462': Удаленный сервер не существует или недоступен
    Процедура вызыватся несколько раз из формы.
    Первый раз создается таблица и word закрываем.
    При вторичном вызове процедуры появляется ошибка №462.
    Текст процедуры привожу ниже

    ExpandedWrap disabled
      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
    >:(

    Где ошибка?
    Помогите
      А где appWord.Quit?
      И не забывайте использовать тег "Code". Исправьте постинг.
        Пользоватль должен в открытом окне Word
        поработать и САМ записать документ. А потом
        снова вызвать процедуру
          И что? не нравится - используй РАННЕЕ связывание.
            У меня работает без ошибок :)




            прочел внимательней.. сделал так-же.. ошибка)
            Прошу прощения, за внесенное недоразумение)
            Сообщение отредактировано: IMMORTAL_S -
              Цитата Akina @
              И что? не нравится - используй РАННЕЕ связывание



              А это как?
                1) пишем
                ExpandedWrap disabled
                  Dim appWord As New Word.Application

                2) убираем строку
                ExpandedWrap disabled
                  Set appWord = New Word.Application

                А ещё лучше - сначала читаем теорию, потом пишем код.
                  Не работает. Ошибка 462
                    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 не на уровне процедуры, а на уровне модуля либо приложения.
                      Не работает. Ошибка 462
                        Тогда подробнее о последовательности действий - и юзера, и программных.
                          Цитата Akina @
                          Тогда подробнее о последовательности действий - и юзера, и программных.

                          На форме командная кнопка. Пользователь щелкает по ней, загружается WORD,
                          создается таблица, прога забивает в нее результаты (это из кода убрано);
                          пользователь просматривает таблицу, записывает документ и программа возвращается
                          обратно на форму. Пользователь снова щелкает по ней, снова загружается WORD
                          в новую таблицу забиваются другие результаты и конец.
                          На первом этапе все создается, результаты в таблице, а по ВТОРОМУ щелчку
                          загружается WORD, создается таблица и на этапе изменения ширины столбцов
                          возникает ошибка №462
                            ExpandedWrap disabled
                              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
                            Единственная возможная ошибка - если юзер закроет Ворд руками. При этом программа вылетит по той же 462. Однако проверить, что юзер закрыл Ворд, простыми методами не получится.
                              Код работает. При щелчкам по кнопкам в документ WORDа таблицы вставляются
                              после записи документа WORD закрывается (его в диспетчере задач нет).
                              Прога активна. Но при повторных щелчках ОШИБКА 462 !
                                Мне жаль тебя огорчать, но у Word.Application нет штатного способа отменить его выгрузку. А посему надавать юзеру по рукам и запретить выгружать документ.
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.0991 ]   [ 15 queries used ]   [ Generated: 25.07.26, 15:05 GMT ]