Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
18.04.2024, 16:18:10

Войти
Интересные и полезные статьи по работе с Excel и VBA можно найти в разделе ХИТРОСТИ
33 241 Сообщений в 5 457 Тем от 6 758 Пользователей
Последний пользователь: Сергей2662
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  RunTime Error 424 exel 2 word
Страниц: [1]   Вниз
Печать
Автор Тема: RunTime Error 424 exel 2 word  (Прочитано 2882 раз)
0 Пользователей и 1 Гость смотрят эту тему.
sillenos
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 3


Просмотр профиля
« : 27.08.2019, 13:24:24 »

Господа, доброе время суток.
Не могу справиться с проблемой. Код достался мне по наследству. Высчитывает дебет.
скрипт достаточно известный и очень много информации, но грамотно поправить код не хватает опыта.

ниже привожу код.

Жду помощи

Код: (vb)

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 - поставил оповещение, отвечаю оперативно.
Записан
boa
Старожил
****

Репутация: +22/-0
Офлайн Офлайн

Сообщений: 252


Доброта спасет мир...


Просмотр профиля WWW
« Ответ #1 : 28.08.2019, 09:41:47 »

Здравствуйте,
кто закоментил эти строки?
Код: (vb)
' Dim WA As Word.Application, WD As Word.Document: Set WA = New Word.Application '  
'Set WA = CreateObject("Word.Application") ' без подключения библиотеки Word - почему-то замена не производится 

попробуйте раскоментировать

А вообще-то, по правилам форума надо прилагать файл...
Записан

Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

sillenos
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 3


Просмотр профиля
« Ответ #2 : 28.08.2019, 11:48:06 »

Комментарий глобального модератора цитата - не бездумная копия. Цитируйте при необходимости

Добрый день.

При раскоментировании и запуске (F5) дает ошибку (скрин прилагаю)
Указывает почему то на Sub СформироватьДоговоры()
В 2013 офисе работает. а в 2010 нет. это большая проблема =(
Прилагаю архив: Дебет.xlsm, 123.dot

« Последнее редактирование: 28.08.2019, 12:22:45 от vikttur » Записан
boa
Старожил
****

Репутация: +22/-0
Офлайн Офлайн

Сообщений: 252


Доброта спасет мир...


Просмотр профиля WWW
« Ответ #3 : 28.08.2019, 12:17:59 »

заменил указанные строки на
Код: (vb)
    Dim WA As Object, WD As Object
    Set WA = CreateObject("Word.Application")

и поотключал не нужные библиотеки в Референсах, в том числе со статусом MISSING
теперь работает, но в данных, которые подставляются, не должно быть эроров
Записан

Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 830



Просмотр профиля WWW
« Ответ #4 : 28.08.2019, 12:24:51 »

Не могу справиться с проблемой
Правильно не только писать, что проблема - но и какая, при каких действиях и на какой строке. Одного текста ошибки в данном случае мало.
Из приложенных файлов у меня сразу дало ошибку на первой же строке. И потому что в ячейке GR3 ошибка #ИМЯ!(там используется функция СУММАПРОПИСЬЮ, которой у меня в таком виде нет). Если её убрать - то макрос работает без проблем.
Плюс я бы на Вашем месте убрал все барахло ниже первой ячейки с данными(все эти непонятные таблицы с месяцами) - они мешают, код определяет последнюю строку неверно и начинает формировать файлы без имен и с некорректными данными. Перенесите все лишнее на другой лист, а на листе для формирования оставьте только данные для формирования. Все формироваться будет.

P.S. в скачанном файле очень много ссылок на совершенно ненужные здесь библиотеки(Tools -References), в том числе попадаются и MISSING. Уж с них точно надо убрать галочки.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 830



Просмотр профиля WWW
« Ответ #5 : 28.08.2019, 13:23:48 »

Приложил исправленный файл, который пропускает ошибки и в котором все Ваши лишние таблицы перенесены на другой лист. Библиотеки тоже поотключал.
Так же привел в порядок код в плане объявления переменных и использования объектных констант Word.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
sillenos
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 3


Просмотр профиля
« Ответ #6 : 28.08.2019, 13:52:37 »

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

всем спасибо!
Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru