Ошибка во время выполнения re "удаленного сервера" при втором запуске - PullRequest
1 голос
/ 21 января 2020

Я уже просмотрел пару похожих постов здесь , здесь , здесь (включая ссылку) и здесь в тщательном подробно и не нашел ничего, что помогло.

Мой сценарий запускается в оценке конструкции Excel и выводит черновик предложения в Word. Общая структура программы состоит из трех частей:

  1. Она извлекает данные из активной рабочей таблицы (строки 1-226), затем
  2. Она запрашивает у пользователя какую-то окончательную информацию бит информации через пользовательскую форму (строки 227-265), затем
  3. Он открывает шаблон бланка в Word и выгружает в него все (строки 266-763).

Первый Когда я запускаю скрипт из оценки Excel, он выполняется безупречно, вплоть до сохранения документа Word. Но если я закрою , который сгенерировал документ Word, и снова нажму кнопку "Черновик предложения" снова , он попадет в очень конкретную строку c, не далеко от части программы Word. и выдает ошибку каждый раз. Эта ошибка:

«Ошибка времени выполнения 462: удаленный сервер не существует или недоступен».

Вот сценарий, начинающийся с начало части слова. Он разрывается на линии, где мы указываем нашу цену в $ TBD, выровненную по правому краю, в конце конечных точек.

Я использовал макрос для генерации этого небольшого блока кода. Я попытался исправить эту ошибку, упростив код здесь. Раньше у меня были ненужные строки wDoc.DefaultTabStop = InchesToPoints(0.5) и sel.ParagraphFormat.TabStops.ClearAll, и они обычно ломались на этих строках, но я удалил их обе, и программа все еще ломается прямо в том же месте.

'open the Word document with the appropriate template, bind worksheet & doc together,
'activate the window (bring to front), and move cursor to the end of the document
Dim wApp As Word.Application
Dim wDoc As Word.Document
Set wApp = CreateObject("Word.Application")
Set wDoc = wApp.Documents.Add(Template:="C:\Users\" & MyUserName & "\"
'The rest of the filepath is included here, but I'm omitting it for security purposes, ending in "Letterhead.dotm")
wApp.Visible = True
wApp.Activate

Dim sel As Word.Selection
Set sel = wDoc.Application.Selection

sel.EndKey (wdStory)

'create date and address block

sel.InsertDateTime DateTimeFormat:="MMMM dd, yyyy", InsertAsField:=False
sel.TypeParagraph
sel.TypeParagraph
sel.TypeText Text:=ContactName
sel.TypeText Text:=Chr(11)
sel.Font.Bold = wdToggle
sel.TypeText Text:=GCName
sel.TypeParagraph
sel.TypeParagraph
sel.TypeText "Reference: " & vbTab
sel.TypeText Text:=JobName
sel.Font.Bold = wdToggle
sel.TypeParagraph
sel.TypeParagraph

'create the introductory matter to the proposal
sel.TypeText "We are pleased to offer our proposal for the electrical portion of work " & _
    "at " & JobAddress & ". Work is based upon " & ArchitectName & " " & PlanType & _
    " drawings, dated " & PlansDated & "."
sel.TypeParagraph
sel.TypeParagraph

'make the line of dots before TBD, copy-pasting from a macro
sel.ParagraphFormat.TabStops.Add Position:=InchesToPoints(6.67), Alignment:=wdAlignTabRight, _
    Leader:=wdTabLeaderDots 'This is the two-line statement where it breaks.

Как ни странно, если я удаляю ошибочное выражение, оно продвигается немного дальше, но затем разбивается на другую случайную строку немного дальше, определение свойства .NumberPosition в блоке myNLT With:

'write the price line, and then erase the single-use tab stop we just set up
sel.Font.Bold = wdToggle
sel.TypeText "We will perform this work for" & vbTab & "$TBD"
sel.Font.Bold = wdToggle
sel.TypeParagraph
sel.TypeParagraph
sel.ParagraphFormat.TabStops.ClearAll

'introduce the itemized SOW
sel.Font.Bold = wdToggle
sel.Font.Underline = wdUnderlineSingle
sel.TypeText "Scope of work to include the following:"
sel.TypeParagraph
sel.Font.Underline = wdUnderlineNone
sel.Font.Bold = wdToggle

'set up itemized list, copy-pasting from a macro, list starts at 1
'establish myNLT as the numbered list template
Dim myNLT As ListTemplate
Set myNLT = wApp.ListGalleries(wdNumberGallery).ListTemplates(1)
With myNLT.ListLevels(1)
    .NumberFormat = "%1."
    .TrailingCharacter = wdTrailingTab
    .NumberStyle = wdListNumberStyleArabic
    .NumberPosition = InchesToPoints(0.25) 'If I delete the line indicated
'in the previous block of code, then this is the next place it breaks.
    .Alignment = wdListLevelAlignLeft
    .TextPosition = InchesToPoints(0.5)
    .ResetOnHigher = 0
    .StartAt = 1
    .LinkedStyle = ""
End With

Я пробовал On Error Resume Next и даже пытался добавить, как "Далее", Application.Wait в течение двух секунд с последующим повторением TabStops.Add, но это только испортило мое форматирование.

Я также попытался изменить sel.ParagraphFormat.Tabstops.Add на Word.Selection.ParagraphFormat.TabStops.Add - тоже не сработало.

После предложения в комментариях тоже не сработало: если я удаляю все после .Add, получаю

Ошибка компиляции: аргумент не является обязательным.

Если я затем добавлю обратно в первый аргумент, Position:=InchesToPoints(6.67) и оставлю без Alignment и Leader, тогда ошибка возвращается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...