Runtime error 4198 ошибка команды vba

  • Remove From My Forums
  • Question

  • I’m encountering error from VBA which runs fine before and don’t know where was revised and triggered error 4198.

    The debug function indicated error from the bottom sixth row: appWD.ActiveDocument.SaveAs2 (TWD_SLoc & «» & ThisWorkbook.Sheets(«TWD»).Range(«D» & i + 1) & «.docx»).

    This macro is meant to merge excel data into word template to create individual word report. All word files were successfully created under this macro, however stuck just before ended. The true problem seems to be that vba kept on running after all data
    were run through. 

    Hoping for some great opinions! I’m desperate…

    Sub Report_TWD()
    
    Dim TWD_MLoc As String, TWD_DLoc As String, TWD_SLoc As String
    
    TWD_MLoc = ThisWorkbook.Sheets("°õ¦æ").Range("B5").Value
    TWD_DLoc = ThisWorkbook.Sheets("°õ¦æ").Range("C5").Value
    TWD_SLoc = ThisWorkbook.Sheets("°õ¦æ").Range("D5").Value
    
    Dim appWD As Word.Application
    Set appWD = CreateObject("Word.Application")
    appWD.Visible = True
    Dim TWDWD As Word.Document
    Set TWDWD = appWD.Documents.Open(TWD_MLoc)
    TWDWD.Activate
    TWDWD.MailMerge.OpenDataSource Name:=TWD_DLoc, SQLStatement:="SELECT *  FROM `TWD$`"
    
    Dim x As Long
    Dim i As Long
    Dim v As Long, w As Long
    Dim stMsg As String
    
    TWDWD.Activate
    With TWDWD.MailMerge
    .Destination = wdSendToNewDocument
    .SuppressBlankLines = True
    With .DataSource
    .ActiveRecord = wdLastRecord
    x = .ActiveRecord
    .ActiveRecord = wdFirstRecord
    End With
    
    For i = 1 To x
    .DataSource.FirstRecord = i
    .DataSource.LastRecord = i
    .Execute
    appWD.ActiveDocument.SaveAs2 (TWD_SLoc & "" & ThisWorkbook.Sheets("TWD").Range("D" & i + 1) & ".docx")
    appWD.ActiveDocument.Close wdDoNotSaveChanges
    Next i
    End With
    TWDWD.Close wdDoNotSaveChanges
    End Sub
    • Edited by

      Friday, November 10, 2017 7:08 AM

I have been trying to write a word VBA script that uses a screenshot (already copied to the clipboard) and pastes it into a word document to be formatted and saved. The program works great on my computer at work, but when I distributed it to others, it failed to work on about 25% of the computers. The error that I received was «4198 Runtime Error». I have searched for similar problems that other people have had, but I am still at a loss. All of the computers in the office run the same version of work, 2010 standard version.

The issue is with the very last line of code, selection.paste.
I did make sure that they had a screenshot on their clipboard before running the script.

Thank you so much for any and all input.

Sub MapMaker()

'set up new document with narrow margins and landscape orientation
With Selection.PageSetup
    .LineNumbering.Active = False
    .Orientation = wdOrientPortrait
    .TopMargin = InchesToPoints(0.5)
    .BottomMargin = InchesToPoints(0.5)
    .LeftMargin = InchesToPoints(0.5)
    .RightMargin = InchesToPoints(0.5)
    .Gutter = InchesToPoints(0)
    .HeaderDistance = InchesToPoints(0.5)
    .FooterDistance = InchesToPoints(0.5)
    .PageWidth = InchesToPoints(8.5)
    .PageHeight = InchesToPoints(11)
    .FirstPageTray = wdPrinterDefaultBin
    .OtherPagesTray = wdPrinterDefaultBin
    .SectionStart = wdSectionNewPage
    .OddAndEvenPagesHeaderFooter = False
    .DifferentFirstPageHeaderFooter = False
    .VerticalAlignment = wdAlignVerticalTop
    .SuppressEndnotes = False
    .MirrorMargins = False
    .TwoPagesOnOne = False
    .BookFoldPrinting = False
    .BookFoldRevPrinting = False
    .BookFoldPrintingSheets = 1
    .GutterPos = wdGutterPosLeft
End With
If Selection.PageSetup.Orientation = wdOrientPortrait Then
    Selection.PageSetup.Orientation = wdOrientLandscape
Else
    Selection.PageSetup.Orientation = wdOrientPortrait
End If
' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

'paste and resize screenshot to full page width
Selection.Paste

  • Remove From My Forums
  • Question

  • I’m encountering error from VBA which runs fine before and don’t know where was revised and triggered error 4198.

    The debug function indicated error from the bottom sixth row: appWD.ActiveDocument.SaveAs2 (TWD_SLoc & «» & ThisWorkbook.Sheets(«TWD»).Range(«D» & i + 1) & «.docx»).

    This macro is meant to merge excel data into word template to create individual word report. All word files were successfully created under this macro, however stuck just before ended. The true problem seems to be that vba kept on running after all data
    were run through. 

    Hoping for some great opinions! I’m desperate…

    Sub Report_TWD()
    
    Dim TWD_MLoc As String, TWD_DLoc As String, TWD_SLoc As String
    
    TWD_MLoc = ThisWorkbook.Sheets("°õ¦æ").Range("B5").Value
    TWD_DLoc = ThisWorkbook.Sheets("°õ¦æ").Range("C5").Value
    TWD_SLoc = ThisWorkbook.Sheets("°õ¦æ").Range("D5").Value
    
    Dim appWD As Word.Application
    Set appWD = CreateObject("Word.Application")
    appWD.Visible = True
    Dim TWDWD As Word.Document
    Set TWDWD = appWD.Documents.Open(TWD_MLoc)
    TWDWD.Activate
    TWDWD.MailMerge.OpenDataSource Name:=TWD_DLoc, SQLStatement:="SELECT *  FROM `TWD$`"
    
    Dim x As Long
    Dim i As Long
    Dim v As Long, w As Long
    Dim stMsg As String
    
    TWDWD.Activate
    With TWDWD.MailMerge
    .Destination = wdSendToNewDocument
    .SuppressBlankLines = True
    With .DataSource
    .ActiveRecord = wdLastRecord
    x = .ActiveRecord
    .ActiveRecord = wdFirstRecord
    End With
    
    For i = 1 To x
    .DataSource.FirstRecord = i
    .DataSource.LastRecord = i
    .Execute
    appWD.ActiveDocument.SaveAs2 (TWD_SLoc & "" & ThisWorkbook.Sheets("TWD").Range("D" & i + 1) & ".docx")
    appWD.ActiveDocument.Close wdDoNotSaveChanges
    Next i
    End With
    TWDWD.Close wdDoNotSaveChanges
    End Sub
    • Edited by

      Friday, November 10, 2017 7:08 AM

I have been trying to write a word VBA script that uses a screenshot (already copied to the clipboard) and pastes it into a word document to be formatted and saved. The program works great on my computer at work, but when I distributed it to others, it failed to work on about 25% of the computers. The error that I received was «4198 Runtime Error». I have searched for similar problems that other people have had, but I am still at a loss. All of the computers in the office run the same version of work, 2010 standard version.

The issue is with the very last line of code, selection.paste.
I did make sure that they had a screenshot on their clipboard before running the script.

Thank you so much for any and all input.

Sub MapMaker()

'set up new document with narrow margins and landscape orientation
With Selection.PageSetup
    .LineNumbering.Active = False
    .Orientation = wdOrientPortrait
    .TopMargin = InchesToPoints(0.5)
    .BottomMargin = InchesToPoints(0.5)
    .LeftMargin = InchesToPoints(0.5)
    .RightMargin = InchesToPoints(0.5)
    .Gutter = InchesToPoints(0)
    .HeaderDistance = InchesToPoints(0.5)
    .FooterDistance = InchesToPoints(0.5)
    .PageWidth = InchesToPoints(8.5)
    .PageHeight = InchesToPoints(11)
    .FirstPageTray = wdPrinterDefaultBin
    .OtherPagesTray = wdPrinterDefaultBin
    .SectionStart = wdSectionNewPage
    .OddAndEvenPagesHeaderFooter = False
    .DifferentFirstPageHeaderFooter = False
    .VerticalAlignment = wdAlignVerticalTop
    .SuppressEndnotes = False
    .MirrorMargins = False
    .TwoPagesOnOne = False
    .BookFoldPrinting = False
    .BookFoldRevPrinting = False
    .BookFoldPrintingSheets = 1
    .GutterPos = wdGutterPosLeft
End With
If Selection.PageSetup.Orientation = wdOrientPortrait Then
    Selection.PageSetup.Orientation = wdOrientLandscape
Else
    Selection.PageSetup.Orientation = wdOrientPortrait
End If
' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

'paste and resize screenshot to full page width
Selection.Paste

Как исправить время выполнения Ошибка 4198 Ошибка Microsoft Word 4198

В этой статье представлена ошибка с номером Ошибка 4198, известная как Ошибка Microsoft Word 4198, описанная как Ошибка 4198: Возникла ошибка в приложении Microsoft Word. Приложение будет закрыто. Приносим свои извинения за неудобства.

О программе Runtime Ошибка 4198

Время выполнения Ошибка 4198 происходит, когда Microsoft Word дает сбой или падает во время запуска, отсюда и название. Это не обязательно означает, что код был каким-то образом поврежден, просто он не сработал во время выполнения. Такая ошибка появляется на экране в виде раздражающего уведомления, если ее не устранить. Вот симптомы, причины и способы устранения проблемы.

Определения (Бета)

Здесь мы приводим некоторые определения слов, содержащихся в вашей ошибке, в попытке помочь вам понять вашу проблему. Эта работа продолжается, поэтому иногда мы можем неправильно определить слово, так что не стесняйтесь пропустить этот раздел!

  • Microsoft word — по вопросам программирования, связанным с редактором Microsoft Word.
Симптомы Ошибка 4198 — Ошибка Microsoft Word 4198

Ошибки времени выполнения происходят без предупреждения. Сообщение об ошибке может появиться на экране при любом запуске %программы%. Фактически, сообщение об ошибке или другое диалоговое окно может появляться снова и снова, если не принять меры на ранней стадии.

Возможны случаи удаления файлов или появления новых файлов. Хотя этот симптом в основном связан с заражением вирусом, его можно отнести к симптомам ошибки времени выполнения, поскольку заражение вирусом является одной из причин ошибки времени выполнения. Пользователь также может столкнуться с внезапным падением скорости интернет-соединения, но, опять же, это не всегда так.

Fix Ошибка Microsoft Word 4198 (Error Ошибка 4198)
(Только для примера)

Причины Ошибка Microsoft Word 4198 — Ошибка 4198

При разработке программного обеспечения программисты составляют код, предвидя возникновение ошибок. Однако идеальных проектов не бывает, поскольку ошибки можно ожидать даже при самом лучшем дизайне программы. Глюки могут произойти во время выполнения программы, если определенная ошибка не была обнаружена и устранена во время проектирования и тестирования.

Ошибки во время выполнения обычно вызваны несовместимостью программ, запущенных в одно и то же время. Они также могут возникать из-за проблем с памятью, плохого графического драйвера или заражения вирусом. Каким бы ни был случай, проблему необходимо решить немедленно, чтобы избежать дальнейших проблем. Ниже приведены способы устранения ошибки.

Методы исправления

Ошибки времени выполнения могут быть раздражающими и постоянными, но это не совсем безнадежно, существует возможность ремонта. Вот способы сделать это.

Если метод ремонта вам подошел, пожалуйста, нажмите кнопку upvote слева от ответа, это позволит другим пользователям узнать, какой метод ремонта на данный момент работает лучше всего.

Обратите внимание: ни ErrorVault.com, ни его авторы не несут ответственности за результаты действий, предпринятых при использовании любого из методов ремонта, перечисленных на этой странице — вы выполняете эти шаги на свой страх и риск.

Метод 1 — Закройте конфликтующие программы

Когда вы получаете ошибку во время выполнения, имейте в виду, что это происходит из-за программ, которые конфликтуют друг с другом. Первое, что вы можете сделать, чтобы решить проблему, — это остановить эти конфликтующие программы.

  • Откройте диспетчер задач, одновременно нажав Ctrl-Alt-Del. Это позволит вам увидеть список запущенных в данный момент программ.
  • Перейдите на вкладку «Процессы» и остановите программы одну за другой, выделив каждую программу и нажав кнопку «Завершить процесс».
  • Вам нужно будет следить за тем, будет ли сообщение об ошибке появляться каждый раз при остановке процесса.
  • Как только вы определите, какая программа вызывает ошибку, вы можете перейти к следующему этапу устранения неполадок, переустановив приложение.

Метод 2 — Обновите / переустановите конфликтующие программы

Использование панели управления

  • В Windows 7 нажмите кнопку «Пуск», затем нажмите «Панель управления», затем «Удалить программу».
  • В Windows 8 нажмите кнопку «Пуск», затем прокрутите вниз и нажмите «Дополнительные настройки», затем нажмите «Панель управления»> «Удалить программу».
  • Для Windows 10 просто введите «Панель управления» в поле поиска и щелкните результат, затем нажмите «Удалить программу».
  • В разделе «Программы и компоненты» щелкните проблемную программу и нажмите «Обновить» или «Удалить».
  • Если вы выбрали обновление, вам просто нужно будет следовать подсказке, чтобы завершить процесс, однако, если вы выбрали «Удалить», вы будете следовать подсказке, чтобы удалить, а затем повторно загрузить или использовать установочный диск приложения для переустановки. программа.

Использование других методов

  • В Windows 7 список всех установленных программ можно найти, нажав кнопку «Пуск» и наведя указатель мыши на список, отображаемый на вкладке. Вы можете увидеть в этом списке утилиту для удаления программы. Вы можете продолжить и удалить с помощью утилит, доступных на этой вкладке.
  • В Windows 10 вы можете нажать «Пуск», затем «Настройка», а затем — «Приложения».
  • Прокрутите вниз, чтобы увидеть список приложений и функций, установленных на вашем компьютере.
  • Щелкните программу, которая вызывает ошибку времени выполнения, затем вы можете удалить ее или щелкнуть Дополнительные параметры, чтобы сбросить приложение.

Метод 3 — Обновите программу защиты от вирусов или загрузите и установите последнюю версию Центра обновления Windows.

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

Метод 4 — Переустановите библиотеки времени выполнения

Вы можете получить сообщение об ошибке из-за обновления, такого как пакет MS Visual C ++, который может быть установлен неправильно или полностью. Что вы можете сделать, так это удалить текущий пакет и установить новую копию.

  • Удалите пакет, выбрав «Программы и компоненты», найдите и выделите распространяемый пакет Microsoft Visual C ++.
  • Нажмите «Удалить» в верхней части списка и, когда это будет сделано, перезагрузите компьютер.
  • Загрузите последний распространяемый пакет от Microsoft и установите его.

Метод 5 — Запустить очистку диска

Вы также можете столкнуться с ошибкой выполнения из-за очень нехватки свободного места на вашем компьютере.

  • Вам следует подумать о резервном копировании файлов и освобождении места на жестком диске.
  • Вы также можете очистить кеш и перезагрузить компьютер.
  • Вы также можете запустить очистку диска, открыть окно проводника и щелкнуть правой кнопкой мыши по основному каталогу (обычно это C :)
  • Щелкните «Свойства», а затем — «Очистка диска».

Метод 6 — Переустановите графический драйвер

Если ошибка связана с плохим графическим драйвером, вы можете сделать следующее:

  • Откройте диспетчер устройств и найдите драйвер видеокарты.
  • Щелкните правой кнопкой мыши драйвер видеокарты, затем нажмите «Удалить», затем перезагрузите компьютер.

Метод 7 — Ошибка выполнения, связанная с IE

Если полученная ошибка связана с Internet Explorer, вы можете сделать следующее:

  1. Сбросьте настройки браузера.
    • В Windows 7 вы можете нажать «Пуск», перейти в «Панель управления» и нажать «Свойства обозревателя» слева. Затем вы можете перейти на вкладку «Дополнительно» и нажать кнопку «Сброс».
    • Для Windows 8 и 10 вы можете нажать «Поиск» и ввести «Свойства обозревателя», затем перейти на вкладку «Дополнительно» и нажать «Сброс».
  2. Отключить отладку скриптов и уведомления об ошибках.
    • В том же окне «Свойства обозревателя» можно перейти на вкладку «Дополнительно» и найти пункт «Отключить отладку сценария».
    • Установите флажок в переключателе.
    • Одновременно снимите флажок «Отображать уведомление о каждой ошибке сценария», затем нажмите «Применить» и «ОК», затем перезагрузите компьютер.

Если эти быстрые исправления не работают, вы всегда можете сделать резервную копию файлов и запустить восстановление на вашем компьютере. Однако вы можете сделать это позже, когда перечисленные здесь решения не сработают.

Другие языки:

How to fix Error 4198 (Microsoft Word Error 4198) — Error 4198: Microsoft Word has encountered a problem and needs to close. We are sorry for the inconvenience.
Wie beheben Fehler 4198 (Microsoft Word-Fehler 4198) — Fehler 4198: Microsoft Word hat ein Problem festgestellt und muss geschlossen werden. Wir entschuldigen uns für die Unannehmlichkeiten.
Come fissare Errore 4198 (Errore di Microsoft Word 4198) — Errore 4198: Microsoft Word ha riscontrato un problema e deve essere chiuso. Ci scusiamo per l’inconveniente.
Hoe maak je Fout 4198 (Microsoft Word-fout 4198) — Fout 4198: Microsoft Word heeft een probleem ondervonden en moet worden afgesloten. Excuses voor het ongemak.
Comment réparer Erreur 4198 (Erreur Microsoft Word 4198) — Erreur 4198 : Microsoft Word a rencontré un problème et doit se fermer. Nous sommes désolés du dérangement.
어떻게 고치는 지 오류 4198 (마이크로소프트 워드 오류 4198) — 오류 4198: Microsoft Word에 문제가 발생해 닫아야 합니다. 불편을 끼쳐드려 죄송합니다.
Como corrigir o Erro 4198 (Erro 4198 do Microsoft Word) — Erro 4198: O Microsoft Word encontrou um problema e precisa fechar. Lamentamos o inconveniente.
Hur man åtgärdar Fel 4198 (Microsoft Word-fel 4198) — Fel 4198: Microsoft Word har stött på ett problem och måste avslutas. Vi är ledsna för besväret.
Jak naprawić Błąd 4198 (Błąd Microsoft Word 4198) — Błąd 4198: Microsoft Word napotkał problem i musi zostać zamknięty. Przepraszamy za niedogodności.
Cómo arreglar Error de 4198 (Error 4198 de Microsoft Word) — Error 4198: Microsoft Word ha detectado un problema y debe cerrarse. Lamentamos las molestias.

The Author Об авторе: Фил Харт является участником сообщества Microsoft с 2010 года. С текущим количеством баллов более 100 000 он внес более 3000 ответов на форумах Microsoft Support и создал почти 200 новых справочных статей в Technet Wiki.

Следуйте за нами: Facebook Youtube Twitter

Последнее обновление:

06/11/22 01:16 : Пользователь Android проголосовал за то, что метод восстановления 1 работает для него.

Рекомендуемый инструмент для ремонта:

Этот инструмент восстановления может устранить такие распространенные проблемы компьютера, как синие экраны, сбои и замораживание, отсутствующие DLL-файлы, а также устранить повреждения от вредоносных программ/вирусов и многое другое путем замены поврежденных и отсутствующих системных файлов.

ШАГ 1:

Нажмите здесь, чтобы скачать и установите средство восстановления Windows.

ШАГ 2:

Нажмите на Start Scan и позвольте ему проанализировать ваше устройство.

ШАГ 3:

Нажмите на Repair All, чтобы устранить все обнаруженные проблемы.

СКАЧАТЬ СЕЙЧАС

Совместимость

Требования

1 Ghz CPU, 512 MB RAM, 40 GB HDD
Эта загрузка предлагает неограниченное бесплатное сканирование ПК с Windows. Полное восстановление системы начинается от $19,95.

ID статьи: ACX08338RU

Применяется к: Windows 10, Windows 8.1, Windows 7, Windows Vista, Windows XP, Windows 2000

  • Remove From My Forums
  • Question

  • I am getting 4198 error run time error with on the ActiveDocument.Save line below

        If optSave.Value Then                                   ‘  
    If save & close option selected…
            ‘Change the status of the Normal template to unchanged. If changes were
            ‘   made to the Normal template, the changes are not saved when you exit Word.
            NormalTemplate.Saved = True
            ‘ Prevent ActiveDocument from reporting that it has changed
            ActiveDocument.AttachedTemplate.Saved = True
            If frmAssemble.optCtlA_F9 Then
                ‘ Prevent Document too big to spell check error by setting current spell check to true.
                ActiveDocument.SpellingChecked = True
                ActiveDocument.ShowSpellingErrors = False
                ‘ Perform Ctrl A followed by F9 equivalent to update all the document fields
                Selection.WholeStory        ‘ Ctrl-A = Select the entire document
                Selection.Fields.Update     ‘ F9
                Selection.EscapeKey         ‘ Undo Select all
                Selection.Collapse Direction:=wdCollapseStart
            End If
            If ActiveDocument.Revisions.Count >= 1 Then
                ‘This should not happen
                MsgBox Prompt:=»Accepting » & ActiveDocument.Revisions.Count & » in » & ActiveDocument.Name & «.», _
                    Buttons:=vbInformation, Title:=»Saving Finished Assembly»
                ActiveDocument.AcceptAllRevisions
            End If
            ‘ Prevent ActiveDocument from reporting that it has changed
            ActiveDocument.AttachedTemplate.Saved = True
            ‘ Trap final save errors
            On Error GoTo FinalSaveError
            ‘ Save the new document
            ActiveDocument.Save
            ‘ Turn off Trapping
            On Error GoTo 0
            DeltaStopTime = Timer
            DisplayStatus «Save Time:  » & Elapsed(DeltaStartTime, DeltaStopTime)
            ‘Reset Delta Start Timer
            DeltaStartTime = DeltaStopTime
        End If

    The document contains embedded word documents and excel documents and works fine until enough other sections are added so that the created file is about 5 Meg.  The final document should be 10 meg.   If I remove the embedded documents it works. 
    If I trap  the 4198 code and use resume next the first save turns to a save as.   On exiting word the program will request to save multiple times.    My guess is one for every object embedded (11).   What is wrong?

  • Remove From My Forums
  • Question

  • I am getting 4198 error run time error with on the ActiveDocument.Save line below

        If optSave.Value Then                                   ‘  
    If save & close option selected…
            ‘Change the status of the Normal template to unchanged. If changes were
            ‘   made to the Normal template, the changes are not saved when you exit Word.
            NormalTemplate.Saved = True
            ‘ Prevent ActiveDocument from reporting that it has changed
            ActiveDocument.AttachedTemplate.Saved = True
            If frmAssemble.optCtlA_F9 Then
                ‘ Prevent Document too big to spell check error by setting current spell check to true.
                ActiveDocument.SpellingChecked = True
                ActiveDocument.ShowSpellingErrors = False
                ‘ Perform Ctrl A followed by F9 equivalent to update all the document fields
                Selection.WholeStory        ‘ Ctrl-A = Select the entire document
                Selection.Fields.Update     ‘ F9
                Selection.EscapeKey         ‘ Undo Select all
                Selection.Collapse Direction:=wdCollapseStart
            End If
            If ActiveDocument.Revisions.Count >= 1 Then
                ‘This should not happen
                MsgBox Prompt:=»Accepting » & ActiveDocument.Revisions.Count & » in » & ActiveDocument.Name & «.», _
                    Buttons:=vbInformation, Title:=»Saving Finished Assembly»
                ActiveDocument.AcceptAllRevisions
            End If
            ‘ Prevent ActiveDocument from reporting that it has changed
            ActiveDocument.AttachedTemplate.Saved = True
            ‘ Trap final save errors
            On Error GoTo FinalSaveError
            ‘ Save the new document
            ActiveDocument.Save
            ‘ Turn off Trapping
            On Error GoTo 0
            DeltaStopTime = Timer
            DisplayStatus «Save Time:  » & Elapsed(DeltaStartTime, DeltaStopTime)
            ‘Reset Delta Start Timer
            DeltaStartTime = DeltaStopTime
        End If

    The document contains embedded word documents and excel documents and works fine until enough other sections are added so that the created file is about 5 Meg.  The final document should be 10 meg.   If I remove the embedded documents it works. 
    If I trap  the 4198 code and use resume next the first save turns to a save as.   On exiting word the program will request to save multiple times.    My guess is one for every object embedded (11).   What is wrong?

  • #2

Welcome to the Forum,

Do you have Option Explict in the Module at the top if so delete it. That maybe the cause as you aren’t declaring wordapp.

  • #3

Hi, thanks Trevor for the response (like the BCFC pic). I don’t have option explicit — though did have it set in a private sub. Tried declaring it Dim wordapp As Object and tried it as a sub(), but encountered the same 4198 error.
Can’t understand why this no longer works as it was opening the doc correctly. If I move the wordapp.visible line above the .open line it will initialise and display word (2010), but then won’t open the document. I have also tried saving the file as a docx and amending the path.

  • #4

I have just tested the following and it opens OK, I have used a different path of course though.

<font face=Courier New><SPAN style=»color:#00007F»>Sub</SPAN> launchhelpfile()<br><SPAN style=»color:#00007F»>Dim</SPAN> wrdApp <SPAN style=»color:#00007F»>As</SPAN> <SPAN style=»color:#00007F»>Object</SPAN><br><SPAN style=»color:#00007F»>Set</SPAN> wrdApp = CreateObject(«word.Application»)<br><br>       wrdApp.documents.Open «PorterAMGRTREATAsset ManagementAsset Management Plans2011Editing Master Asset Plans to refer to site specific.doc»<br>        wrdApp.Visible = <SPAN style=»color:#00007F»>True</SPAN><br>        <SPAN style=»color:#00007F»>Set</SPAN> wrdApp = <SPAN style=»color:#00007F»>Nothing</SPAN><br><SPAN style=»color:#00007F»>End</SPAN> <SPAN style=»color:#00007F»>Sub</SPAN><br></FONT>

  • #5

Have tested again, stepping through the code with F8 and it runs, yet when I try to run from the command button it errors.
When stepping through and having opened the word file, I close it down, it informs me that the Normal.dotm template has been modified, would I like to save changes? I’m presuming that my word file must still be open in the background somewhere and when I am trying to execute the code it is showing that the file is read-locked?
This error is commonly encountered when a read lock is set on the file that you are attempting to open. Possible reasons for this:
<DIR>Another user has the file open, either on the same computer that you are using, or on another computer.
Word crashed at some point in the past and left a read lock on the file.
Another application has an exclusive lock on the file, preventing Word from opening the file.
A custom application is running and has opened this file (possibly on another user’s computer). It may have opened the file using an incorrect method.
</DIR>

  • #6

It appears that when testing my code I had made some error and had 5 or 6 versions of word open in the background which were not visible and had locked the file. I have just shut them down and tested with the original file path and it works. Thank you for the help.

  • Home
  • Forum
  • VBA Code & Other Help
  • Excel Help
  • [SOLVED] Excel Add In runtime error 4198

  1. 10-17-2015, 04:57 PM

    #1

    Excel Add In runtime error 4198

    First off…Sorry for my ignorance of the computer programming world. I am an end user, and have zero programming background. But I am good at understanding things and taking directions, therefore I believe with a little guidance, I may be able to resolve my issue.For several years, I have been using an excel add-in, entitled ExcelToWord!, written by an author named dlmille. The add-in allows me to create MS Word templates with specified bookmarks, and merge excel spreadsheets into these templates to create MS Word documents.I have successfully been using it on multiple machines running windows 7, along with MS Office 2007. I finally upgraded some of my equipment, and find that this add-in does not function properly on my new computers. They are running windows 8.1, with the same clean install of MS Office 2007.The issue occurs when ExcelToWord! attempts to create the dotx document. I keep receiving the run-time error 4198. And my only options are to end or to debug. When I click debug, the follow code is highlighted, and I’m assuming that mean this is where the problem is…

    'Note - FileFormat:= not needed - save in same format
            oWD.SaveAs Filename:=fPath & fBMName, _
            LockComments:=False, Password:="", AddToRecentFiles:=True, _
            WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
    
            SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False

    I don’t know if I have provided enough information, or if I have posted this in the correct forum, but any guidance would be greatly appreciated.Peter Giavoni

    Last edited by CallMeMaybe; 10-17-2015 at 07:52 PM.


  2. 10-17-2015, 06:26 PM

    #2

    I don’t know if it’s an error in copy/pasting but that top green (comment) line, is too long. It should be two lines:

     'Note - FileFormat:= not needed - save in same format    
    oWD.SaveAs Filename:=fPath & fBMName, _
    LockComments:=False, Password:="", AddToRecentFiles:=True, _ 
    WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _ 
     
    SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False

    and in case the line continuation characters don’t copy over correctly here it is in a copiable format without such characters:

    'Note - FileFormat:= not needed - save in same format
    oWD.SaveAs Filename:=fPath & fBMName, LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False

    p45cal
    Everyone: If I’ve helped and you can’t be bothered to acknowledge it, I can’t be bothered to look at further posts from you.


  3. 10-17-2015, 07:50 PM

    #3

    Yes, just an error in copy/pasting. The green line actually only reads…‘Note — FileFormat:= not needed — save in same format. I made the corrections in the original post.Do you see anything in there that looks out of place? I’m confused as to why it works seamlessly on windows 7 machines but fails on windows 8.1.


  4. 10-18-2015, 03:16 AM

    #4

    No, I don’t see anything out of place — suggest googling for the likes of:
    Word .Saveas 4198
    There was somehting here which might be related: http://answers.microsoft.com/en-us/o…81c18ba?auth=1

    p45cal
    Everyone: If I’ve helped and you can’t be bothered to acknowledge it, I can’t be bothered to look at further posts from you.


  5. 10-18-2015, 03:40 PM

    #5

    Thanks p45cal for pointing me in the right direction. It turns out that when you install Word on an ACER machine it insists on installing the ACER Word Cloud Add-in. Once this is removed via add/remove programs (listed as abDocs) the save as works perfectly.

    Thanks for the quick response p45cal.



Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
  • BB code is On
  • Smilies are On
  • [IMG] code is On
  • [VIDEO] code is On
  • HTML code is Off

Forum Rules

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    Популярные разделы FAQ:    user posted image Общие вопросы    user posted image Особенности VBA-кода    user posted image Оптимизация VBA-кода    user posted image Полезные ссылки


    1. Старайтесь при создании темы указывать в заголовке или теле сообщения название офисного приложения и (желательно при работе с Office 95/97/2000) его версию. Это значительно сократит количество промежуточных вопросов.
    2. Формулируйте вопросы как можно конкретнее, вспоминая (хотя бы иногда) о правилах ВЕЛИКОГО И МОГУЧЕГО РУССКОГО ЯЗЫКА, и не забывая, что краткость — сестра таланта.
    3. Не забывайте использовать теги [сode=vba] …текст программы… [/code] для выделения текста программы подсветкой!
    4. Темы с просьбой выполнить какую-либо работу полностью за автора здесь не обсуждаются и переносятся в раздел ПОМОЩЬ СТУДЕНТАМ.

    >
    Копирование макросов из Normal.dot

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    17.05.06, 16:58

      Собственно сабж.
      Мне нужно скопировать макросы из Normal.dot в документ.
      Т.е. я хочу чтобы при создании документов у меня на машине в них автоматом добавлялись некоторые макросы, находящиеся в Normal.dot на случай если я эти доки на другой машине смотреть буду.
      Так вот пишу:

      ExpandedWrap disabled

        Application.OrganizerCopy NormalTemplate.FullName, ActiveDocument.FullName, «MyMacro», wdOrganizerObjectProjectItems

      А в ответ получаю «Run-time error ‘4198’ Ошибка команды»
      Интересно что из документа в шаблон так копируется нормально.
      Собственно вопрос как всё-таки скопировать?
      Что здесь не верно, или может есть другой способ.
      Подскажите кто сталкивался.
      Заранее спасибо.
      PS: Word2000

      Profi

      Old Bat



      Сообщ.
      #2

      ,
      18.05.06, 08:03

        Moderator

        *****

        Рейтинг (т): 128

        есть такая проблема, используй обходные пути — Import/Export или вставку строк в модуль
        Работа с модулем в VBE


        cppasm



        Сообщ.
        #3

        ,
        18.05.06, 10:09

          Спасибо, просто я думал что-то неправильно делаю с OrganizerCopy…
          Сделал через Export/Import в Envir(«TEMP»)+»temp.tmp»
          Плюс Kill Envir(«TEMP»)+»temp.tmp»
          Всё работает.
          Спасибо.

          Profi

          Old Bat



          Сообщ.
          #4

          ,
          18.05.06, 11:00

            Moderator

            *****

            Рейтинг (т): 128

            Цитата cppasm @ 18.05.06, 10:09

            я думал что-то неправильно делаю с OrganizerCopy…

            да нет, все верно, а сей фокус, вероятно, связан с политикой ms по отношению к вирусописателям

            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

            0 пользователей:

            • Предыдущая тема
            • VB for Application
            • Следующая тема

            Рейтинг@Mail.ru

            [ Script execution time: 0,0289 ]   [ 16 queries used ]   [ Generated: 29.01.23, 01:30 GMT ]  

            XoFfiCEr

            исследователь

            325 / 104 / 3

            Регистрация: 18.03.2010

            Сообщений: 1,079

            Записей в блоге: 2

            1

            Найти ошибку в процедуре

            29.11.2010, 15:57. Показов 5673. Ответов 29

            Метки нет (Все метки)


            Студворк — интернет-сервис помощи студентам

            Ниже процедура, она выполняет удаление активных гиперссылок, в файлах найденных другой процедурой в заданной папке. (все это в форме) Она работает нормально до .Hyperlinks.Item(1).Delete и выбивает ошибку.
            «Run-time error ‘4198’» Ошибка команды.
            Что не правильно?, я бьюсь уже давно не могу понять.

            Visual Basic
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            17
            18
            19
            20
            21
            
            Sub KillHyperLinks()
            For i = 1 To qfiles
            docname = files(i)
            Documents.Open FileName:=docname, ReadOnly:=False
            With ActiveDocument
            .Activate
            qlinks = .Hyperlinks.Count
            If qlinks = 0 Then
                GoTo nx
            End If
            While .Hyperlinks.Count > 0
            'MsgBox .Hyperlinks.Count
            .Hyperlinks.Item(1).Delete
            dellinks = dellinks + 1
            Wend
            ActiveWindow.ActivePane.View.Type = wdPrintView
            .Save
            End With
            nx: ActiveDocument.Close
             Next i
            End Sub



            0



            Programming

            Эксперт

            94731 / 64177 / 26122

            Регистрация: 12.04.2006

            Сообщений: 116,782

            29.11.2010, 15:57

            Ответы с готовыми решениями:

            Исправить ошибку в процедуре
            Исправить ошибку в процедуре: Инструкция Select Case в следующей процедуре должна выводить окно…

            найти ошибку в процедуре
            Была программа
            unit Unit1;

            interface

            uses
            Windows, Messages, SysUtils, Variants, Classes,…

            Найти ошибку в процедуре
            Задание следующее:
            Создать процедуру с использованием курсора для вывода списка занятий…

            Найти ошибку в процедуре
            Даны два одномерных массива длиной n. Поменять местами 1-й и последний элементы в каждом массиве….

            29

            128 / 23 / 3

            Регистрация: 23.09.2010

            Сообщений: 62

            29.11.2010, 16:43

            2

            Цитата
            Сообщение от <Профессор>
            Посмотреть сообщение

            активных гиперссылок

            а ещё какие есть гиперссылки?

            То есть надо из другой программы удалить все гиперссылки из документа Word?



            0



            Helen_fire

            204 / 43 / 6

            Регистрация: 15.10.2010

            Сообщений: 125

            29.11.2010, 17:00

            3

            Лучший ответ Сообщение было отмечено как решение

            Решение

            Ошибка в логике программы. нужно еще ввести переменную qlinks внутрь цикла и с каждым удалением ссылки уменьшать ее на 1 и сравнивать с нулем, т.к. цикл While у Вас бесконечен, а ссылок с каждым шагом становится на 1 меньше, вот он и приходит к тому, что надо удалять, а удалять нечего. Поэтому и сравнение qlinks с нулем и закрытие документа надо перенести внутрь цикла.

            Или сделать так:

            Visual Basic
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            17
            18
            19
            20
            21
            22
            
            Sub KillHyperLinks()
            For i = 1 To qfiles
            docname = files(i)
            Documents.Open FileName:=docname, ReadOnly:=False
            With ActiveDocument
            .Activate
            qlinks = .Hyperlinks.Count
            If qlinks = 0 Then
                GoTo nx
            End If
            While qlinks > 0
            'MsgBox .Hyperlinks.Count
            .Hyperlinks.Item(1).Delete
            qlinks= qlinks-1
            dellinks = dellinks + 1
            Wend
            ActiveWindow.ActivePane.View.Type = wdPrintView
            .Save
            End With
            nx: ActiveDocument.Close
             Next i
            End Sub



            2



            исследователь

            325 / 104 / 3

            Регистрация: 18.03.2010

            Сообщений: 1,079

            Записей в блоге: 2

            29.11.2010, 17:33

             [ТС]

            4

            Цитата
            Сообщение от Terminators
            Посмотреть сообщение

            а ещё какие есть гиперссылки?

            То есть надо из другой программы удалить все гиперссылки из документа Word?

            Как это какие? Это когда просто Url в тексте написан, как обычно в колонтитулах пишут.



            0



            Busine2009

            Заблокирован

            29.11.2010, 19:42

            5

            Цитата
            Сообщение от <Профессор>
            Посмотреть сообщение

            Это когда просто Url в тексте написан

            это не является гиперссылкой.



            0



            218 / 50 / 2

            Регистрация: 18.02.2010

            Сообщений: 82

            29.11.2010, 20:56

            6

            Попроще бы надо:

            Код

            Sub KillHyperLinks()
            Dim i&, k&, S$
                For i = 1 To QFiles
                    S = Files(i)
                    With Documents.Open(FileName:=S, Visible:=False)
                        For k = .Hyperlinks.Count To 1 Step -1
                            .Hyperlinks(k).Delete
                        Next k
                        .Close wdSaveChanges
                    End With
                Next i   
            End Sub

            Устранено два прилично тормозящих фактора:
            — видимость документа (добавлено Visible)
            — пересохранение документа при отсутствии изменений (удалено Save)



            1



            исследователь

            325 / 104 / 3

            Регистрация: 18.03.2010

            Сообщений: 1,079

            Записей в блоге: 2

            02.12.2010, 01:21

             [ТС]

            7

            Цитата
            Сообщение от Busine2009
            Посмотреть сообщение

            это не является гиперссылкой.

            ну может и не является
            но заказчик просил удалить только активные ссылки
            а по опыту работы на госслужбе могу сказать что написанный url могут все же считать гиперссылкой, несмотря на все каноны VBA.



            0



            Busine2009

            Заблокирован

            02.12.2010, 01:26

            8

            Цитата
            Сообщение от <Профессор>
            Посмотреть сообщение

            что написанный url могут все же считать гиперссылкой, несмотря на все каноны VBA.

            Полный бред.

            Добавлено через 1 минуту

            Цитата
            Сообщение от <Профессор>
            Посмотреть сообщение

            .Hyperlinks.Item(1).Delete

            и это не удаление текста — это превращение гиперссылки просто в текст.



            0



            XoFfiCEr

            исследователь

            325 / 104 / 3

            Регистрация: 18.03.2010

            Сообщений: 1,079

            Записей в блоге: 2

            02.12.2010, 01:27

             [ТС]

            9

            Цитата
            Сообщение от Helen_fire
            Посмотреть сообщение

            Ошибка в логике программы. нужно еще ввести переменную qlinks внутрь цикла и с каждым удалением ссылки уменьшать ее на 1 и сравнивать с нулем, т.к. цикл While у Вас бесконечен, а ссылок с каждым шагом становится на 1 меньше, вот он и приходит к тому, что надо удалять, а удалять нечего. Поэтому и сравнение qlinks с нулем и закрытие документа надо перенести внутрь цикла.

            Или сделать так:

            Visual Basic
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            17
            18
            19
            20
            21
            22
            
            Sub KillHyperLinks()
            For i = 1 To qfiles
            docname = files(i)
            Documents.Open FileName:=docname, ReadOnly:=False
            With ActiveDocument
            .Activate
            qlinks = .Hyperlinks.Count
            If qlinks = 0 Then
                GoTo nx
            End If
            While qlinks > 0
            'MsgBox .Hyperlinks.Count
            .Hyperlinks.Item(1).Delete
            qlinks= qlinks-1
            dellinks = dellinks + 1
            Wend
            ActiveWindow.ActivePane.View.Type = wdPrintView
            .Save
            End With
            nx: ActiveDocument.Close
             Next i
            End Sub

            А все равно не работает, все та же ошибка!

            Добавлено через 1 минуту

            Цитата
            Сообщение от Busine2009
            Посмотреть сообщение

            Полный бред.

            Добавлено через 1 минуту

            и это не удаление текста — это превращение гиперссылки просто в текст.

            Нет он удаляет полностью текст гиперссылки я проверял



            0



            Busine2009

            Заблокирован

            02.12.2010, 01:28

            10

            Цитата
            Сообщение от <Профессор>
            Посмотреть сообщение

            Нет он удаляет полностью текст гиперссылки я проверял

            Код

            .Hyperlinks.Item(1).Delete

            не удаляет текст.



            0



            исследователь

            325 / 104 / 3

            Регистрация: 18.03.2010

            Сообщений: 1,079

            Записей в блоге: 2

            02.12.2010, 01:31

             [ТС]

            11

            Цитата
            Сообщение от Busine2009
            Посмотреть сообщение

            Код

            .Hyperlinks.Item(1).Delete

            не удаляет текст.

            Реально вообще ничего не удаляет. Выводит сообщение об ошибке. Останавливается выполнение именно на этой строке.



            0



            Busine2009

            Заблокирован

            02.12.2010, 01:32

            12

            <Профессор>,
            тебе ответили в чём причина. Завтра гляну. Ты не бухаешь сейчас?



            0



            исследователь

            325 / 104 / 3

            Регистрация: 18.03.2010

            Сообщений: 1,079

            Записей в блоге: 2

            02.12.2010, 01:46

             [ТС]

            13

            Цитата
            Сообщение от Busine2009
            Посмотреть сообщение

            <Профессор>,
            тебе ответили в чём причина. Завтра гляну. Ты не бухаешь сейчас?

            Фигасе почему сразу бухаешь? Нет не бухаю. Да вот не помогли ваши ответы. Мой код правильно работает со всеми документами кроме трех, что с ними такое блин?!

            Добавлено через 12 минут

            Цитата
            Сообщение от Вождь
            Посмотреть сообщение

            Попроще бы надо:

            Код

            Sub KillHyperLinks()
            Dim i&, k&, S$
                For i = 1 To QFiles
                    S = Files(i)
                    With Documents.Open(FileName:=S, Visible:=False)
                        For k = .Hyperlinks.Count To 1 Step -1
                            .Hyperlinks(k).Delete
                        Next k
                        .Close wdSaveChanges
                    End With
                Next i   
            End Sub

            Устранено два прилично тормозящих фактора:
            — видимость документа (добавлено Visible)
            — пересохранение документа при отсутствии изменений (удалено Save)

            И этот вариант тоже не работает Все та же ошибка.



            0



            Busine2009

            Заблокирован

            02.12.2010, 06:56

            14

            <Профессор>,
            а какой ты в итоге код использовать хочешь?



            0



            218 / 50 / 2

            Регистрация: 18.02.2010

            Сообщений: 82

            02.12.2010, 07:11

            15

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

            Ошибка ошибкой, а гиперссылки то удаляются? Попробуйте добавить On Error Resume Next.

            Об ошибке: «Run-time error ‘4198’»
            Application-defined or object-defined error

            This message is displayed when an error generated with the Raise method or Error statement doesn’t correspond to an error defined by Visual Basic for Applications.

            Это сообщение появляется, если ошибка вызвана методом Raise или случившаяся ошибка не соответствует ни одной ошибке из оговоренных в VBA.



            1



            исследователь

            325 / 104 / 3

            Регистрация: 18.03.2010

            Сообщений: 1,079

            Записей в блоге: 2

            02.12.2010, 07:27

             [ТС]

            16

            Цитата
            Сообщение от Busine2009
            Посмотреть сообщение

            <Профессор>,
            а какой ты в итоге код использовать хочешь?

            Свой конечно, он протестирован причем в присутствии заказчика на многих документах



            0



            Busine2009

            Заблокирован

            02.12.2010, 07:52

            17

            <Профессор>,
            выясни, на какой гиперссылке происходит эта ошибка.

            Вот так можно обработать ошибку, если решение не будет найдено:

            Visual Basic
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            
            Sub m_2()
                On Error Resume Next
                Do While ActiveDocument.Hyperlinks.Count > 0
                    ActiveDocument.Hyperlinks(1).Delete
                    If Err.Number <> 0 And Err.Number <> 4198 Then
                        GoTo metka
                    End If
                    On Error GoTo 0
                Loop
                If ActiveDocument.Hyperlinks.Count > 0 Then
                    MsgBox "Часть гиперссылок не удалось удалить из документа." & vbCr & "Удалите их вручную."
                End If
                Exit Sub
            metka:
                MsgBox "Возникла новая ошибка"
            End Sub



            0



            XoFfiCEr

            исследователь

            325 / 104 / 3

            Регистрация: 18.03.2010

            Сообщений: 1,079

            Записей в блоге: 2

            02.12.2010, 20:07

             [ТС]

            18

            Цитата
            Сообщение от Busine2009
            Посмотреть сообщение

            <Профессор>,
            выясни, на какой гиперссылке происходит эта ошибка.

            Вот так можно обработать ошибку, если решение не будет найдено:

            Visual Basic
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            
            Sub m_2()
                On Error Resume Next
                Do While ActiveDocument.Hyperlinks.Count > 0
                    ActiveDocument.Hyperlinks(1).Delete
                    If Err.Number <> 0 And Err.Number <> 4198 Then
                        GoTo metka
                    End If
                    On Error GoTo 0
                Loop
                If ActiveDocument.Hyperlinks.Count > 0 Then
                    MsgBox "Часть гиперссылок не удалось удалить из документа." & vbCr & "Удалите их вручную."
                End If
                Exit Sub
            metka:
                MsgBox "Возникла новая ошибка"
            End Sub

            Слушай зачем все это? Мне не нужен этот код, мне нужна чтоб эта процедура удаляла активные гиперссылки, а не выводила сообщения о том сто их не удалось удалить.

            Не по теме:

            оскорблен



            0



            Busine2009

            Заблокирован

            02.12.2010, 20:21

            19

            Цитата
            Сообщение от <Профессор>
            Посмотреть сообщение

            .Hyperlinks.Item(1).Delete

            ты целенаправленно используешь

            Visual Basic
            1
            
            Item

            ?
            С какой целью ты используешь этот метод (Item)?
            Попробуй без Item.
            Я ещё ни разу его не использовал в своей практике. Сейчас пытаюсь понять, зачем он нужен.



            0



            XoFfiCEr

            исследователь

            325 / 104 / 3

            Регистрация: 18.03.2010

            Сообщений: 1,079

            Записей в блоге: 2

            02.12.2010, 20:31

             [ТС]

            20

            Цитата
            Сообщение от Busine2009
            Посмотреть сообщение

            ты целенаправленно используешь

            Visual Basic
            1
            
            Item

            ?
            С какой целью ты используешь этот метод (Item)?
            Попробуй без Item.
            Я ещё ни разу его не использовал в своей практике. Сейчас пытаюсь понять, зачем он нужен.

            Пробовал и без Item просто .Hyperlinks(1).Delete тот же результат.



            0



            I have problem with code below. On my PC itruns OK and generate PDF file from Word templates. I tried .rtf or .docx format of template doc. On PC at work I got

            runtime error 4198 command failed.

            On another PC (notebook) same error. On all PC’s I have installed Word and Excel.

            Sub PdfEleDomVtNt()
                Dim wdDoc As Document
                Dim wdApp As Word.Application
                Set wdApp = New Word.Application
                Dim objField1 As Object
                Dim objField2 As Object
                Dim objField3 As Object
                Dim objField4 As Object
                Dim objField5 As Object
                Dim objField6 As Object
                Dim objField7 As Object
                Dim objField8 As Object
                Dim objField9 As Object
                Dim objField10 As Object
                Dim objField11 As Object
                Dim objField12 As Object
                Dim objField13 As Object
                Dim objField14 As Object
                Dim objField15 As Object
                Dim objField16 As Object
                Dim objField17 As Object
                Dim objField18 As Object
                Dim objField19 As Object
                Dim objField20 As Object
                Dim objField21 As Object
                Dim objField22 As Object
                Dim objField23 As Object
                Dim objField24 As Object
                Dim objField25 As Object
                Dim objField26 As Object
                Dim objField27 As Object
                Dim objField28 As Object
                Dim objField29 As Object
                Dim objField30 As Object
                Dim objField31 As Object
                Dim objField32 As Object
                Dim objField33 As Object
                
                ThisWorkbook.Sheets("vlozene_hodnoty").Range("B21").Dirty
                
                Dim pdfFileName As Variant
                
                If ThisWorkbook.Sheets("vlozene_hodnoty").Range("A20").Value = "" Then
                pdfFileName = ThisWorkbook.Path & "" + Sheets("vlozene_hodnoty").Range("B23").Value + ".pdf"
                Else
                
                pdfFileName = ThisWorkbook.Sheets("vlozene_hodnoty").Range("A20").Value + "" + ThisWorkbook.Sheets("vlozene_hodnoty").Range("B23").Value + ".pdf"
                End If
                
                wdApp.Visible = False 'Nastav hodtnotu Tru pro viditelnost aplikace Word
                On Error GoTo ErrHandler
                
                Set wdDoc = wdApp.Documents.Open(ThisWorkbook.Path & "TemplatesYELLO_Kalkulace_MOO_2T_ELE.rtf") 
                On Error GoTo 0
                
                Set objField1 = wdDoc.FormFields("Text1")
                Set objField2 = wdDoc.FormFields("Text2")
                Set objField3 = wdDoc.FormFields("Text3")
                Set objField4 = wdDoc.FormFields("Text4")
                Set objField5 = wdDoc.FormFields("Text5")
                Set objField6 = wdDoc.FormFields("Text6")
                Set objField7 = wdDoc.FormFields("Text7")
                Set objField8 = wdDoc.FormFields("Text8")
                Set objField9 = wdDoc.FormFields("Text9")
                Set objField10 = wdDoc.FormFields("Text10")
                Set objField11 = wdDoc.FormFields("Text11")
                Set objField12 = wdDoc.FormFields("Text12")
                Set objField13 = wdDoc.FormFields("Text13")
                Set objField14 = wdDoc.FormFields("Text14")
                Set objField15 = wdDoc.FormFields("Text15")
                Set objField16 = wdDoc.FormFields("Text16")
                Set objField17 = wdDoc.FormFields("Text17")
                Set objField18 = wdDoc.FormFields("Text18")
                Set objField19 = wdDoc.FormFields("Text19")
                Set objField20 = wdDoc.FormFields("Text20")
                Set objField21 = wdDoc.FormFields("Text21")
                Set objField22 = wdDoc.FormFields("Text22")
                Set objField23 = wdDoc.FormFields("Text23")
                Set objField24 = wdDoc.FormFields("Text24")
                Set objField25 = wdDoc.FormFields("Text25")
                Set objField26 = wdDoc.FormFields("Text26")
                Set objField27 = wdDoc.FormFields("Text27")
                Set objField28 = wdDoc.FormFields("Text28")
                Set objField29 = wdDoc.FormFields("Text29")
                Set objField30 = wdDoc.FormFields("Text30")
                Set objField31 = wdDoc.FormFields("Text31")
                Set objField32 = wdDoc.FormFields("Text32")
                Set objField33 = wdDoc.FormFields("Text33")
                
                objField1.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N3"), "# ###")
                objField2.Result = ThisWorkbook.Sheets("vlozene_hodnoty").Range("N4")
                objField3.Result = ThisWorkbook.Sheets("vlozene_hodnoty").Range("N5")
                objField4.Result = ThisWorkbook.Sheets("vlozene_hodnoty").Range("N6")
                objField5.Result = ThisWorkbook.Sheets("vlozene_hodnoty").Range("N7")
                objField6.Result = ThisWorkbook.Sheets("vlozene_hodnoty").Range("N8")
                objField7.Result = ThisWorkbook.Sheets("vlozene_hodnoty").Range("N9")
                objField8.Result = ThisWorkbook.Sheets("vlozene_hodnoty").Range("N10")
                objField9.Result = ThisWorkbook.Sheets("vlozene_hodnoty").Range("N11")
                objField10.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N12"), "### ###")
                objField11.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N13"), "### ###")
                objField12.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N14"), "# ###,##0.00") 
                objField13.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N15"), "# ###,##0.00") 
                objField14.Result = ThisWorkbook.Sheets("vlozene_hodnoty").Range("N16") 'frekvence
                objField15.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N17"), "### ###") 
                objField16.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N18"), "#,###0.000") 
                objField17.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N19"), "#,###0.000") 
                objField18.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N20"), "#,###0.000") 
                objField19.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N21"), "#,###0.000") 
                objField20.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N22"), "# ###,##0.00") 
                objField21.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N23"), "# ###,##0.00") 
                objField22.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N24"), "#,###0.000")
                objField23.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N25"), "#,###0.000")
                objField24.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N26"), "#,###0.000")
                objField25.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N27"), "#,###0.000")
                objField26.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N28"), "# ###,##0.00")
                objField27.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N29"), "# ###,##0.00")
                objField28.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N30"), "#,###0.000")
                objField29.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N31"), "#,###0.000")
                objField30.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N32"), "#,###0.000")
                objField31.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N33"), "#,###0.000")
                objField32.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N34"), "# ###,##0.00")
                objField33.Result = Format(ThisWorkbook.Sheets("vlozene_hodnoty").Range("N35"), "# ###,##0.00")
                
                wdDoc.SaveAs pdfFileName, wdFormatPDF
                
                objField1.Result = ("")
                objField2.Result = ("")
                objField3.Result = ("")
                objField4.Result = ("")
                objField5.Result = ("")
                objField6.Result = ("")
                objField7.Result = ("")
                objField8.Result = ("")
                objField9.Result = ("")
                objField10.Result = ("")
                objField11.Result = ("")
                objField12.Result = ("")
                objField13.Result = ("")
                objField14.Result = ("")
                objField15.Result = ("")
                objField16.Result = ("")
                objField17.Result = ("")
                objField18.Result = ("")
                objField19.Result = ("")
                objField20.Result = ("")
                objField21.Result = ("")
                objField22.Result = ("")
                objField23.Result = ("")
                objField24.Result = ("")
                objField25.Result = ("")
                objField26.Result = ("")
                objField27.Result = ("")
                objField28.Result = ("")
                objField29.Result = ("")
                objField30.Result = ("")
                objField31.Result = ("")
                objField32.Result = ("")
                objField33.Result = ("")
                
                wdDoc.Close
                wdApp.Quit
                
                Shell "rundll32.exe url.dll,FileProtocolHandler " & pdfFileName, vbNormalFocus
                Exit Sub
            
            ErrHandler:
                MsgBox "Soubor se šablonou se nepodařilo otevřít. Zkontrolujte cestu a název souboru.", vbCritical
            End Sub
            

            I checked references in VBA, changing doc type of template but I am at the end. I also try google runtime error 4198 but nothing what help me. Error shows up on line with code «wdDoc.SaveAs pdfFileName, wdFormatPDF» but as I said only on work PC or notebook.

          • Runtime error 3146 odbc ошибка вызова
          • Runtime error 216 at 0040505e ошибка
          • Runtime broker что это windows 10 ошибка
          • Runtime broker ошибка приложения память не может быть read
          • Runtime broker exe системная ошибка