Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - RunTime Error 424 exel 2 word

Ответить
Настройки темы
VBA - RunTime Error 424 exel 2 word
axd axd вне форума

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить 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
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата axd:
скрипт достаточно известный »
Я, например, это чудо впервые вижу.

Если Вы пользуете раннее связывание — Вам нужна ссылка в проекте на библиотеку типов. Если пользуете позднее связывание — не нужна. В первой строке у Вас раннее связывание, во второй — позднее. По поводу «почему-то замена не производится» — имейте в виду, что, если Вы не подключаете библиотеку типов (например, Вы используете только позднее связывание), то Вам надо самостоятельно, «ручками», описывать все используемые константы из библиотеки (wdFindContinue, wdReplaceAll и т.п.). И если бы, как положено, в коде был бы использован оператор Option Explicit, требующий обязательного объявления переменных, Вы бы просто получили ошибку прекомпиляции и сразу поняли бы, в чём проблема. Но, поскольку такового оператора нет, все необъявленные переменные (в том числе и вышеприведённые как бы «константы», а по факту — переменные) при использовании молча инициализируются нулями.

Разбираться более глубоко в данном коде особого интереса не имею, особливо учитывая отсутствие рабочего образца и неизвестного компонента ProgressIndicator.

Отправлено: 21:25, 27-08-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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

axd axd вне форума Автор темы

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: png Снимок.PNG
(49.3 Kb, 2 просмотров)

Прилагаю файлы:
скрин при раскоментировании
Код: Выделить весь код
' Dim WA As Word.Application, WD As Word.Document: Set WA = New Word.Application '    
'Set WA = CreateObject("Word.Application") ' без подключения библиотеки Word - почему-то замена не производится
и Архив: Дебет.xlsm, 123.dot

установлен office 2010.
макрос работает на 13м офисе, но это не выход т.к. есть свои трудности.

Последний раз редактировалось axd, 28-08-2019 в 13:53.


Отправлено: 11:58, 28-08-2019 | #3

axd axd вне форума Автор темы

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Тема. Закрыта.

всем спасибо!

Отправлено: 13:53, 28-08-2019 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - RunTime Error 424 exel 2 word

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Ошибка - [решено] 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




 
Переход