|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - RunTime Error 424 exel 2 word |
|
VBA - RunTime Error 424 exel 2 word
|
Новый участник Сообщения: 3 |
Профиль | Отправить PM | Цитировать Господа, доброе время суток.
Не могу справиться с проблемой. Код достался мне по наследству. Высчитывает дебет по скрипту и вставляет в шаблон. скрипт достаточно известный и очень много информации, но грамотно поправить код не хватает опыта. ниже привожу код. Жду помощи Const ИмяФайлаШаблона = "123.dot" Const КоличествоОбрабатываемыхСтолбцов = 450 Const РасширениеСоздаваемыхФайлов = ".doc" Sub СформироватьДоговоры() ПутьШаблона = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, ИмяФайлаШаблона) НоваяПапка = NewFolderName & Application.PathSeparator Dim row As Range, pi As New ProgressIndicator r = Cells(Rows.Count, "A").End(xlUp).row: rc = r - 2 If rc < 1 Then MsgBox "Строк для обработки не найдено", vbCritical: Exit Sub pi.Show "Формирование договоров": pi.ShowPercents = True: s1 = 10: s2 = 90: p = s1: a = (s2 - s1) / rc pi.StartNewAction , s1, "Запуск приложения Microsoft Word" ' Dim WA As Word.Application, WD As Word.Document: Set WA = New Word.Application ' 'Set WA = CreateObject("Word.Application") ' без подключения библиотеки Word - почему-то замена не производится For Each row In ActiveSheet.Rows("3:" & r) With row ФИО = Trim$(.Cells(1)) & " " & Trim$(.Cells(2)) & " " & Trim$(.Cells(3)) Filename = НоваяПапка & ФИО & РасширениеСоздаваемыхФайлов pi.StartNewAction p, p + a / 3, "Создание нового файла на основании шаблона", ФИО '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Set WD = WA.Documents.Add(ПутьШаблона): DoEvents ' ошибка возникает тут. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' pi.StartNewAction p + a / 3, p + a * 2 / 3, "Замена данных ...", ФИО For I = 1 To КоличествоОбрабатываемыхСтолбцов FindText = Cells(1, I): ReplaceText = Trim$(.Cells(I)) ' так почему-то заменяет не всё (не затрагивает таблицу) 'WA.Selection.Find.Execute FindText, , , , , , , wdFindContinue, False, ReplaceText, True 'pi.line3 = "Заменяется " & FindText & " на " & ReplaceText: pi.FP.Repaint: DoEvents With WA.Selection.Find ' а так всё работает как надо .Text = FindText .Replacement.Text = ReplaceText .Forward = True .Wrap = wdFindContinue .Format = False: .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False .Execute Replace:=wdReplaceAll End With DoEvents Next I pi.StartNewAction p + a * 2 / 3, p + a, "Сохранение файла ...", ФИО, " " WD.SaveAs Filename: WD.Close False: DoEvents p = p + a End With Next row pi.StartNewAction s2, , "Завершение работы приложения Microsoft Word", " ", " " WA.Quit False: pi.Hide msg = "Сформировано " & rc & " договоров. Все они находятся в папке" & vbNewLine & НоваяПапка MsgBox msg, vbInformation, "Готово" End Sub Function NewFolderName() As String NewFolderName = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "Договоры, сформированные " & Get_Now) MkDir NewFolderName End Function Function Get_Date() As String: Get_Date = Replace(Replace(DateValue(Now), "/", "-"), ".", "-"): End Function Function Get_Time() As String: Get_Time = Replace(TimeValue(Now), ":", "-"): End Function Function Get_Now() As String: Get_Now = Get_Date & " в " & Get_Time: End Function Спасибо всем кто откликнется. ps - поставил оповещение, отвечаю оперативно. |
|
Отправлено: 13:51, 27-08-2019 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата axd:
Если Вы пользуете раннее связывание — Вам нужна ссылка в проекте на библиотеку типов. Если пользуете позднее связывание — не нужна. В первой строке у Вас раннее связывание, во второй — позднее. По поводу «почему-то замена не производится» — имейте в виду, что, если Вы не подключаете библиотеку типов (например, Вы используете только позднее связывание), то Вам надо самостоятельно, «ручками», описывать все используемые константы из библиотеки (wdFindContinue, wdReplaceAll и т.п.). И если бы, как положено, в коде был бы использован оператор Option Explicit, требующий обязательного объявления переменных, Вы бы просто получили ошибку прекомпиляции и сразу поняли бы, в чём проблема. Но, поскольку такового оператора нет, все необъявленные переменные (в том числе и вышеприведённые как бы «константы», а по факту — переменные) при использовании молча инициализируются нулями. Разбираться более глубоко в данном коде особого интереса не имею, особливо учитывая отсутствие рабочего образца и неизвестного компонента ProgressIndicator. |
|
Отправлено: 21:25, 27-08-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Прилагаю файлы:
скрин при раскоментировании ' Dim WA As Word.Application, WD As Word.Document: Set WA = New Word.Application ' 'Set WA = CreateObject("Word.Application") ' без подключения библиотеки Word - почему-то замена не производится установлен office 2010. макрос работает на 13м офисе, но это не выход т.к. есть свои трудности. |
Последний раз редактировалось axd, 28-08-2019 в 13:53. Отправлено: 11:58, 28-08-2019 | #3 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Тема. Закрыта.
всем спасибо! |
Отправлено: 13:53, 28-08-2019 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Ошибка - [решено] microsoft visual c++ runtime library runtime error r6034 | AtosPolon | Microsoft Windows 2000/XP | 10 | 05-09-2016 01:53 | |
VBA - Run-time error '424' | Alexander158 | Программирование и базы данных | 8 | 26-02-2013 01:55 | |
Интерфейс - Значки файлов Word, Exel | Sergey666 | Microsoft Windows 7 | 2 | 21-02-2011 10:30 | |
Службы - Runtime Error | papa6612 | Microsoft Windows 7 | 2 | 27-06-2010 08:00 | |
EventID - Runtime Library Runtime Error! | n4maker | Хочу все знать | 8 | 11-03-2009 14:06 |
|