Ошибка выполнения 4198, ошибка команды vba
Обновлено: 21.11.2024
Я новичок в этом и пытаюсь создать шаблон документа с
полями для заполнения людьми, а затем кнопку для выполнения макроса, который сохраняет
файл ( в формате doc) в определенное место в зависимости от значения текстового
поля в документе.
Большинство вещей я проработал, хотя и довольно грубо, но когда макрос
действительно доходит до точки сохранения документа, я получаю следующую ошибку.
Ошибка выполнения 4198
Я использовал отладку и добавил точки наблюдения и вижу, что значения моих
переменных такие, какими они должны быть.
Код на кнопке:
Fname = "c:\temp\"
Fname = Fname + ActiveDocument.FormFields("FormTextNAME").Result + ".doc"
ActiveDocument.SaveAs FileName:=Fname, FileFormat:= _
wdFormatDocument, LockComments:=False, Password:="",
AddToRecentFiles:= _
True, WritePassword:=" ", ReadOnlyRecommended:=False,
EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
У кого-нибудь есть идеи?
Вам нужно использовать амперсанд & вместо плюса + знак
Fname = Fname & ActiveDocument.FormFields("FormTextNAME").Result & ".doc"
Пожалуйста, опубликуйте любой ответ в группах новостей для других, кто может
также следить за обсуждением.
Надеюсь, это поможет,
Дуг Роббинс - MVP Word
> Я новичок в этом и пытаюсь создать шаблон документа с полями
> для заполнения людьми, а затем кнопкой для выполнения макроса, который
сохраняет
> файл (в формате doc) в определенное место в зависимости от значения
текстового
> поля в документе.
> Я проработал большинство вещей - хотя и довольно грубо, но когда макрос
> действительно доходит до точки сохранения документа, я получаю следующую
ошибку.
> Ошибка выполнения 4198
> Я использовал отладку и добавил точки наблюдения и вижу, что значения моих переменных
> такие, какими они должны быть.
В этой статье содержится код ошибки 4198, широко известная как ошибка Microsoft Word 4198, описанная как ошибка 4198: Microsoft Word столкнулся с проблемой и должен быть закрыт. Приносим извинения за неудобства.
Информация об ошибке
Этот инструмент восстановления может исправлять распространенные компьютерные ошибки, такие как BSOD, зависания и сбои системы. Он может заменять отсутствующие файлы операционной системы и библиотеки DLL, удалять вредоносное ПО и устранять вызванный им ущерб, а также оптимизировать работу ПК для достижения максимальной производительности.
О коде выполнения 4198
Код среды выполнения 4198 возникает при сбое или сбое Microsoft Word во время его работы, отсюда и его название. Это не обязательно означает, что код был каким-то образом поврежден, а просто означает, что он не работал во время выполнения. Такая ошибка будет отображаться как раздражающее уведомление на вашем экране, если ее не обработать и не исправить. Вот симптомы, причины и способы устранения проблемы.
Определения (бета)
Здесь мы перечисляем некоторые определения слов, содержащихся в вашей ошибке, чтобы помочь вам понять вашу проблему. Эта работа еще не завершена, поэтому иногда мы можем дать неверное определение слову, так что не стесняйтесь пропустить этот раздел!
- Microsoft word — для вопросов по программированию, связанных с редактором Microsoft Word.
Симптомы кода 4198 — ошибка Microsoft Word 4198
Ошибки во время выполнения происходят без предупреждения. Сообщение об ошибке может появиться на экране в любое время при запуске Microsoft Word. Фактически, сообщение об ошибке или какое-либо другое диалоговое окно может появляться снова и снова, если не принять меры на раннем этапе.
Могут быть случаи удаления файлов или появления новых файлов. Хотя этот симптом в значительной степени связан с заражением вирусом, его можно отнести к симптому ошибки времени выполнения, поскольку заражение вирусом является одной из причин ошибки времени выполнения. Пользователь также может столкнуться с внезапным падением скорости интернет-соединения, но опять же, это не всегда так.
(Только в иллюстративных целях)
Причины ошибки Microsoft Word 4198 — код 4198
Во время разработки программного обеспечения программисты пишут код, предвидя возникновение ошибок. Однако идеальных дизайнов не бывает, так как даже при самом лучшем дизайне программы можно ожидать ошибок. Сбои могут возникать во время выполнения, если определенная ошибка не обнаружена и не устранена во время проектирования и тестирования.
Ошибки выполнения обычно возникают из-за одновременного запуска несовместимых программ. Это также может произойти из-за проблем с памятью, плохого графического драйвера или заражения вирусом.В любом случае, проблема должна быть решена немедленно, чтобы избежать дальнейших проблем. Вот способы исправить ошибку.
Методы ремонта
Ошибки во время выполнения могут быть раздражающими и постоянными, но это не совсем безнадежно, ремонт доступен. Вот как это сделать.
Если метод восстановления работает для вас, нажмите кнопку "Проголосовать" слева от ответа, это позволит другим пользователям узнать, какой метод восстановления в настоящее время работает лучше всего.
Спасибо. Мы получили ваш запрос и незамедлительно ответим.
Присоединяйтесь к нам!
- Общаться с другими участниками
- Уведомления об ответах
на ваши сообщения - Поиск по ключевым словам
- Доступ в один клик к вашим
любимым форумам - Автоматические подписи
на ваших сообщениях - Лучше всего то, что это бесплатно!
*Функции Tek-Tips зависят от того, получают ли участники электронную почту. Присоединяясь, вы соглашаетесь на получение электронной почты.
Правила публикации
Реклама, продажа, рекрутинг, размещение курсовых и дипломных работ запрещено.
Ошибка 4198 — команда не выполнена
Ошибка 4198 — команда не выполнена
Кто-нибудь может пролить свет на это? Я получаю следующую ошибку:
Ошибка выполнения '4198'
Ошибка команды
Это отображается в нижней части макроса, который открывает документ Word, позволяет вносить изменения, распечатывает и удаляет этот документ, а затем открывает документ поля формы, который затем печатается и закрывается (теоретически). Проблема в том, что я продолжаю получать вышеуказанную ошибку после всего, кроме закрытия, оставляя меня с открытым документом поля формы, содержащим конфиденциальные данные.
То, что у нас есть, должно быть простым; Я использовал эту же строку во многих других макросах, и она работала безупречно. Я в недоумении понять, почему это терпит неудачу здесь. Полный код в этом разделе (проблемная строка выделена):
Sub ender3()
Для каждого поля в ActiveDocument.FormFields
Count = Count + 1
Следующее поле
Для j = 1 для подсчета
ActiveDocument.FormFields (j).Выбрать
С выделением. Найти
.Text = "0"
.ClearFormatting
.Replacement.Text = "Ø"
.Replacement.ClearFormatting < br />.Execute Replace:=wdReplaceAll, Forward:=True
Завершить
следующим j
ActiveDocument.FormFields(1).Select
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True, Password:=("xxxx")
Count = 0
Call GetOut2
End Sub
Sub GetOut2()
'Распечатывает форму, повторно активирует орфографию и грамматику
'Проверяет, затем закрывает форму без сохранения
ActiveDocument.PrintOut
ActiveDocument.ShowSpellingErrors = True
>ActiveDocument.ShowGrammaticalErrors = True
ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
End Sub
--------------------------------- ----------------------------------
"Какой был психиатрический диагноз у человека, который прыгнул в реку в Париже?»
"Он был в Сене!"
Нет, с добавлением False или без него, он все равно завершается с той же ошибкой в последней строке. Спасибо за попытку.
Есть другие идеи? Я ужасно расстраиваюсь из-за этого и из-за ощущения, что ответ будет невероятно простым.
--------------------------------- ----------------------------------
"Какой был психиатрический диагноз у человека, который прыгнул в реку в Париже?»
"Он был в Сене!"
Тот же результат, с запятой или без нее. Единственная разница со вставленным False заключалась в появлении сообщения, информирующего меня о том, что документ печатается. Он по-прежнему не работает с той же ошибкой, когда дело доходит до строки «Закрыть».
У кого-нибудь есть другие мысли или предложения?
--------------------------------- ----------------------------------
"Какой был психиатрический диагноз у человека, который прыгнул в реку в Париже?»
"Он был в Сене!"
ActiveDocument.PrintOut False
' ActiveDocument.ShowSpellingErrors = True
' ActiveDocument.ShowGrammaticalErrors = True
ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
Это тоже не сработало. Одна и та же ошибка "4198" каждый раз в строке "Закрыть".
Как отмечалось в моем первом посте, больше всего расстраивает то, что этот же код отлично работает в других документах; это даже работает в другом месте ранее в этом документе! Должна быть какая-то простая мелочь, которую я не вижу. Я выполнил весь код, и все работает, пока не дойдет до последней строки.
Я продолжу копаться в этом - может быть, я смогу найти проблему, прежде чем совсем сойду с ума.
--------------------------------- ----------------------------------
"Сколько нужно сюрреалистов, чтобы вкрутить лампочка?"
"Два - один, чтобы держать жирафа, другой, чтобы положить часы в ванну."
За последние 18 месяцев со мной происходит подобное уже в третий раз.Возможно, это паранойя, но похоже, что Билл Гейтс и компания на самом деле пытаются нас запутать, встраивая случайные сбои в VBA, сбои, которые мы часами пытаемся найти, только для того, чтобы они исчезли так же внезапно, как и появились.
В любом случае, спасибо за попытку помочь мне разобраться. Мне очень жаль, что нам обоим пришлось потратить много времени и пота на то, чтобы гоняться за этим призраком.
--------------------------------- ----------------------------------
"Сколько нужно сюрреалистов, чтобы вкрутить лампочка?"
"Два - один, чтобы держать жирафа, другой, чтобы положить часы в ванну."
Хотя вы не показываете никакого кода, я предполагаю, что где-то у вас они установлены как FALSE.
Они находятся в GetOut2, который вызывается после того, как вы защитили документ для форм.
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True, Password:=("xxxx")
Count = 0
Call GetOut2
Сами инструкции (установка для ShowSpellingErrors, ShowGrammaticalErrors значения True) не завершатся ошибкой, но результат True означает, что Word попытается повторно отобразить содержимое. Для отображения любых орфографических ошибок. Однако он НЕ МОЖЕТ повторно отображаться в защищенных разделах, так как это меняет содержимое.
Могу ли я спросить, почему вы используете:
Спасибо за отзыв! Если моя проблема была связана с проверками орфографии и грамматики, она больше не появится; они были перемещены туда, где должны были быть изначально.
Это код, который я написал несколько лет назад, когда впервые изучал VBA, поэтому он определенно не такой гладкий, как мог бы быть. Однако все эти годы он работал без проблем, и я до сих пор недоумеваю, почему он не работает сейчас.
Относительно того, зачем нужен отдельный цикл Count, в то время я не знал другого способа получить количество, необходимое для последующего цикла замены. Сейчас на моей голове намного меньше волос, чем когда это было написано, и, надеюсь, немного больше внутри; если бы это было написано сегодня, это было бы плотнее и компактнее. Я не возился с ним раньше по самой лучшей причине - он не был сломан. Пока это работало и радовало всех, не было смысла возиться с этим. Теперь, когда у меня возникла проблема, если позволит время, я вернусь и перепишу все это. Тем временем люди, которые полагаются на это, чтобы сделать утомительную работу более сносной, снова счастливы.
Вот тебе фиолетово-острая штуковина!
--------------------------------- ----------------------------------
"Сколько нужно сюрреалистов, чтобы вкрутить лампочка?"
"Два - один, чтобы держать жирафа, другой, чтобы положить часы в ванну."
Отправлено предупреждение
Спасибо, что помогаете защищать форумы Tek-Tips от неприемлемых сообщений.
Персонал Tek-Tips проверит это и примет соответствующие меры.
Ответить в этой теме
Размещение сообщений на форумах Tek-Tips доступно только для участников.
Нажмите здесь, чтобы присоединиться к Tek-Tips и пообщаться с другими участниками! Уже участник? Войти
Я искал ответ на этот вопрос, но не нашел.
Я получаю сообщение об ошибке выполнения "4198": Ошибка команды при попытке запустить этот код.
wrd.ActiveDocument.MailMerge.OpenDataSource Name:= _
"O:\Xerox\Conversions\Heacock\ReminderLetters 122909.xls" _
, ConfirmConversions:=False, ReadOnly:=False, LinkToSource :=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _ < br />Формат: = wdOpenFormatAuto, Соединение: = _
"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User Source=O:\Xerox\Conversions\Heacock\ReminderLetters 122909.xls ;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Regi" _
, SQLStatement:="SELECT * FROM `Sheet2$`", SQLStatement1:="", _
SubType:=wdMergeSubTypeAccess
В основном я пытаюсь выполнить слияние почты через vba. Аналогичный код работает в другой электронной таблице, которую я создал. Следующий код предшествует коду выше:
Тусклый текст как объект
Задайте wrd = CreateObject("Word.Application")
wrd.Visible = True
wrd.Documents.Open Filename:="O:\Xerox\Conversions\Heacock\Heacock 15-дневное напоминание о предложениях ОБНОВЛЕНО 101209.doc"
Я был бы очень признателен за любую помощь в этом!
(Распродажа 40% скоро заканчивается)
Курс Excel VBA — от новичка до эксперта
200+ видеоуроков 50+ часов обучения 200+ руководств Excel
С помощью этого онлайн-курса станьте мастером VBA и макросов в Excel и узнайте, как автоматизировать все свои задачи в Excel. (Опыт работы с VBA не требуется.)
(Скидка 40% скоро закончится!)
Похожие темы
Использование Vba для автоматизации ввода имени пользователя, пароля и отправки — Excel
Я пытаюсь использовать VBA для перехода на веб-сайт, для которого требуется имя пользователя, пароль и кнопка "Отправить".
Пока что я могу заставить работать все, кроме части отправки. Код работает без ошибок, но фактически не «нажимает» кнопку отправки на веб-странице.
Для публикации я удалил свое фактическое имя пользователя и пароль и использовал общие "Имя пользователя" и "Пароль", выделенные синим цветом.
Вот код, который я использую:
Dim appIE As Object ' InternetExplorer.Application
Dim URL As String
Set appIE = CreateObject("InternetExplorer.Application")
URL = " https://efolio.morgankeegan.com/escripts/defaultLogon.asp?errCode=2 "
С appIE
.navigate URL
.Visible = True
Выполнять, пока .busy: DoEvents: цикл
Выполнять, пока .ReadyState 4: DoEvents: цикл
.document.getelementbyid("fUserName").Value = "UserName"
.document.getelementbyid("fPassword").Value = "Password"
При ошибке Возобновить следующий
x = 0
Для каждого mitem In IE.document.all
mitem.Value = "x"
x = x + 1
Далее
x = 0
Для каждого mitem в IE.document.all
Если x = "Отправить", то
mitem.Click
Выход для
End If< /p>
Командная кнопка Activeex не нажимается — Excel
У меня возникла проблема с рабочей книгой с несколькими командными кнопками ActiveX. Я использовал кнопки управления формой для запуска макросов, но босс хотел, чтобы каждая кнопка имела свой собственный цвет. Поэтому я удалил кнопки управления формой и создал новые командные кнопки ActiveX. Я зашел в свойства кнопки и установил цвета фона. Я добавил код _Click для запуска макросов, когда пользователь нажимал кнопки.
Все кнопки работали нормально. Затем я сохранил и закрыл книгу и пошел на обед. Теперь, когда я открываю книгу, кнопки не работают! Когда я нажимаю на них, ничего не происходит. Они кажутся замороженными. Кажется, они даже не щелкают. Нет сообщения об ошибке. Ничего.
Если я щелкну кнопку правой кнопкой мыши в режиме разработки и выберу "Свойства", я получу свойства листа, а не свойства кнопки. Я больше не могу найти свойства командной кнопки. Я все еще вижу имя кнопки "cmdButtonGetInfo" и "= EMBED("Forms.CommandButton.1","") в поле имени и строке формул. Странно то, что если я создаю новую кнопку, она работает нормально, пока я не сохраню и закрыть файл. Когда я снова открываю файл, ни одна из кнопок не работает.
Как будто кнопки отключаются, когда я закрываю или открываю файл. Есть предложения?
Отправить по электронной почте выбранные ячейки в теле Vba — Excel
Я пытаюсь вставить диапазон ячеек в теле письма Outlook в том же формате. Код, который я сейчас использую, приведен ниже, и он ничего не вставляет в тело письма.
Макрос для открытия URL-адреса с помощью Ie — Excel
Я получил приведенный ниже макрос, который использует IE и открывает URL-адреса. Я хочу создать пользовательскую форму со списком с переключателем и командной кнопкой, которая поможет мне подключиться к каждому URL-адресу, когда я выберу то же самое в списке и нажму кнопку команды.
Код:
Vba Lock and Protect Cells or Range Of Cells — Excel
У меня есть рабочий лист, который сейчас заблокирован и защищен, за исключением ячеек в определенном столбце. Я назвал ячейки в этом столбце "MS96A".
Если пользователь вводит дату в ячейку или диапазон ячеек в любом месте столбца, измененные ячейки также должны быть заблокированы и защищены. ! *Пожал плечами*).
Я ищу это. Если пользователь снова выберет эту ячейку, он получит обычное всплывающее сообщение: «Ячейка или диаграмма, которые вы пытаетесь изменить, защищены».
Думаю, я близок к этому, но получаю сообщение об ошибке "Конец, если без блока, если" в предложении "Если".
Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim MRange As Range
Set MRange = Range("MS96A")
' If Not Intersect(Target, MRange ) Ничего не значит для каждой ячейки в листах MRange Sheets("Sheet1").Unprotect Password:="temp"
cell.Interior.ColorIndex = 3
cell.Font.Color = vbBlack
Selection .Locked = True
Selection.FormulaHidden = False
Следующая ячейка
ActiveSheet.Protect Password:="temp", _
DrawingObjects:=False, _
Содержание: =True, _
Сценарии:=False
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub
Можно ли зафиксировать объект на месте, чтобы он оставался при прокрутке пользователем? - Excel
Я искал и прочитал все файлы справки. Я нахожу свойства
объекта, вижу, как я могу "заблокировать", "размерить и перемещать по ячейкам" или "не
перемещать по ячейкам". Независимо от того, что я выбираю, объект перемещается с
экрана, когда пользователь прокручивает таблицу вправо.
Есть ли способ зафиксировать положение, скажем, в правом верхнем
углу и оставить его там?
Это было бы очень полезно для кнопки EXIT, которую я создал,
которая закроет программу без сохранения (это файл только для чтения).
Спасибо всем замечательным людям, которые были так полезны и
отдали нам свои ценные идеи и время.
Макрос для печати в PDF с автоматическим именем файла - Excel
Я пытаюсь написать макрос, который печатает в PDF и сохраняет имя файла как содержимое ячейки. Я просматривал все сообщения на этом форуме, чтобы что-то работало. Я использую следующий код -
Sub PrintPDF()
Имя файла = "C:\Documents and Settings\samb\My Documents\" & ActiveSheet.Range("Z1").Value
SendKeys Имя файла & "", False < br />ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"Adobe PDF:", Collate:=True
End Sub
Макрос печатает в PDF, но затем останавливается на этапе «Сохранить как», где мне приходится вручную вводить имя файла и нажимать «Сохранить». Я хочу, чтобы макрос автоматически назвал файл с содержимым ячейки Z1. Затем я хочу, чтобы он автоматически нажимал ввод. Есть идеи, где я ошибаюсь? Будем признательны за любую помощь!
Макрос работает на одном компьютере, но не работает на другом - Excel
Я долго просматривал ваши страницы, чтобы узнать, был ли ответ на этот вопрос раньше, но, просмотрев около 50 страниц тем, я ничего не увидел, но если я повторяю предыдущую информацию, я прошу прощения.
Я написал относительно простой макрос. Он просто берет некоторую информацию в одном формате, перестраивает ее, добавляет форматирование и выполняет некоторые вычисления. Ничего сверхъестественного, но на моем компьютере работает отлично.
Теперь мне нужно поделиться этим макросом с другими людьми, поэтому я просто отправил этот файл Excel тем, кому он нужен. Должно быть хорошо, и в большинстве случаев это так, однако есть один пользователь, который, хотя и может открыть файл, не может заставить макрос работать должным образом.
Похоже, что макрос прошел небольшой путь, но затем остановился без каких-либо сообщений об ошибках или каких-либо признаков того, что он не был выполнен должным образом.
Я проверил уровень безопасности макросов, и он такой же, как у меня, Инструменты - Надстройки такие же, В Visual Basic Инструменты - Ссылки такие же, как у меня. Это та же операционная система и та же версия Excel.
Я даже зашел на компьютер этого человека под своим именем (это сеть большой компании) и попытался запустить макрос, и он работает нормально, так что с оборудованием все в порядке.
Я гуглил, искал и пробовал все, что мог придумать, но я не приблизился к решению этой проблемы, поэтому, если кто-то прочитал эту стену текста и может найти возможное решение, это было бы очень спасибо, что спас меня от вырывания на себе ВСЕХ волос!
Большое спасибо за ваше время.
Выбрать отфильтрованные данные с помощью кода Vba — Excel
Я ищу код для выбора видимых данных после применения фильтра данных. На самом деле я знаю, как выбрать данные после применения фильтра данных, но проблема в том, что я не могу исключить строку заголовка и указать целевой диапазон только как используемые (непустые) строки!!
Я использую приведенный ниже код для выбора видимых строк в целевом диапазоне:
Проблемы в этом коде
1) после применения фильтра при выборе данных выбираются все строки в заданном диапазоне до последней строки в рабочей книге. Мне нужно это, чтобы выбрать данные только до последней использованной строки в заданном диапазоне.
2) Невозможно указать адрес первой строки после применения фильтра, поскольку адрес первой строки может измениться в зависимости от значений в таблице.
Например. В первый раз, когда я запускаю макрос, первая строка в видимых отфильтрованных данных начинается с адреса ячейки A4, а в следующий раз, когда я запускаю макрос, это может быть A6
3) Код также выбирает 1-ю строку, которая является строкой заголовка. Как мы можем исключить его из выбора.
Читайте также:
- Контрольная сумма Winetricks sha256sum не соответствует переименованному файлу
- Можно ли разместить жесткий диск вертикально
- Описание на понятном для компьютера формальном языке последовательности необходимых действий
- Как записать массив в java-файл
- Возможно, ваш компьютер перегружен, срочно освободите память