Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2021, 00:11   #1
DENGA-RU
Пользователь
 
Регистрация: 02.04.2009
Сообщений: 33
По умолчанию Генерация PDF из Exсel и шаблона Word

Добрый день!

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

добавленные строки кода:
Const РасширениеСоздаваемыхФайловПДФ = ".pdf" 'добавлено
FilenamePDF = НоваяПапка & Имяфайла & РасширениеСоздаваемыхФайловПДФ 'добавлено
WD.ExportAsFixedFormat , OutputFileName:=FilenamePDF, ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False ' ошибка

P.S. на форме пытался найти ответ, но похожей ситуации не нашел
Вложения
Тип файла: zip пример.zip (37.2 Кб, 7 просмотров)
DENGA-RU вне форума Ответить с цитированием
Старый 13.01.2021, 03:33   #2
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

Обновите версию microsoft office до 2007 или более поздней версии, и получите возможность сохранять файлы в формате pdf.
I am not a wizard, I am just learning.
Desc вне форума Ответить с цитированием
Старый 13.01.2021, 09:33   #3
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
filenamePDF = НоваяПапка & Имяфайла & РасширениеСоздаваемыхФайловПДФ 'добавлено
Имяфайла где формируется?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 13.01.2021, 21:46   #4
DENGA-RU
Пользователь
 
Регистрация: 02.04.2009
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Desc Посмотреть сообщение
Обновите версию microsoft office до 2007 или более поздней версии, и получите возможность сохранять файлы в формате pdf.
у меня microsoft office 2007 стоит на компе, в принципе я так и делаю, вопрос в другом, что у меня десятки файлов надо сохранить в PDF, поэтому вот решил как то автоматизировать процесс
DENGA-RU вне форума Ответить с цитированием
Старый 13.01.2021, 21:49   #5
DENGA-RU
Пользователь
 
Регистрация: 02.04.2009
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Код:
filenamePDF = НоваяПапка & Имяфайла & РасширениеСоздаваемыхФайловПДФ 'добавлено
Имяфайла где формируется?
Код:
Const ИмяФайлаШаблона = "шаблон.dot"
Const КоличествоОбрабатываемыхСтолбцов = 8
Const РасширениеСоздаваемыхФайлов = ".doc"
Const РасширениеСоздаваемыхФайловПДФ = ".pdf" 'добавлено

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

    Dim WA As Object, WD As Object ': Set WA = New Word.Application    ' c подключением библиотеки Word
    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 = НоваяПапка & ФИО & РасширениеСоздаваемыхФайлов
            FilenamePDF = НоваяПапка & Имяфайла & РасширениеСоздаваемыхФайловПДФ 'добавлено

            Set WD = WA.Documents.Add(ПутьШаблона): DoEvents

            For i = 1 To КоличествоОбрабатываемыхСтолбцов
                FindText = Cells(1, i): ReplaceText = Trim$(.Cells(i))
                FindText = Replace(FindText, " ", "")
                FindText = Replace(FindText, "{", "")
                FindText = Replace(FindText, "}", "")
                UpdateBookmarks WD, FindText, ReplaceText
    
                DoEvents
            Next i
            WD.Fields.Update 'Обновляем поля в документе
            'возникает ошибка
            WD.ExportAsFixedFormat , OutputFileName:=FilenamePDF, ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False ' ошибка
            
            WD.SaveAs Filename, AddToRecentFiles:=False: WD.Close False: DoEvents
           
        End With
    Next row

    WA.Quit False

End Sub

'Процедура обновления закладок в документе
Sub UpdateBookmarks(ByVal Doc As Object, ByVal NameOfBookmark As String, ByVal ContentOfBookmark As Variant)
    On Error Resume Next
    Dim rng As Object
    Dim bm As Object
    Set bm = Doc.Bookmarks
    Set rng = bm(NameOfBookmark).Range
    rng.Text = ContentOfBookmark
    bm.Add NameOfBookmark, rng
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
по сути это программа СуперМодератора EducatedFool, я просто пытаюсь впихнуть в неё возможность создания pdf

Последний раз редактировалось DENGA-RU; 13.01.2021 в 21:56.
DENGA-RU вне форума Ответить с цитированием
Старый 14.01.2021, 08:18   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Замените имяфайла на фио.


Не спрашивалось где взяли код, это не важно. Вопрос в том разобрались ли что каждая команда делает
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 14.01.2021, 23:41   #7
DENGA-RU
Пользователь
 
Регистрация: 02.04.2009
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Замените имяфайла на фио.


Не спрашивалось где взяли код, это не важно. Вопрос в том разобрались ли что каждая команда делает
Все сделал, но код ошибки остался неизменным:

"Run-time error '448'
Named argument not found"
DENGA-RU вне форума Ответить с цитированием
Старый 15.01.2021, 02:43   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а какую роль здесь
WD.ExportAsFixedFormat , OutputFileName:=FilenamePDF, ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False ' ошибка
выполняет первая запятая (зачем она там?)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 15.01.2021, 22:15   #9
DENGA-RU
Пользователь
 
Регистрация: 02.04.2009
Сообщений: 33
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
а какую роль здесь
WD.ExportAsFixedFormat , OutputFileName:=FilenamePDF, ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False ' ошибка
выполняет первая запятая (зачем она там?)
"," оказалась маленькой ошибкой, после того как её убрал код ошибки изменился и стал:
"Run-time error '5'
Invalid procedure call or argument"

P.S. Все таки наверно основная ошибка это "WD.ExportAsFixedFormat"
DENGA-RU вне форума Ответить с цитированием
Старый 15.01.2021, 23:10   #10
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
P.S. Все таки наверно основная ошибка это "WD.ExportAsFixedFormat"
и все таки основная ошибка - нежелание гуглить

Надеюсь ваш код такой вид имеет?
Код:
FilenamePDF = НоваяПапка & ФИО & РасширениеСоздаваемыхФайловПДФ 'добавлено
WD.ExportAsFixedFormat OutputFileName:=FilenamePDF, ExportFormat:=17
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.

Последний раз редактировалось Aleksandr H.; 15.01.2021 в 23:43.
Aleksandr H. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
генерация pdf документов на сайте Антон LSP Общие вопросы Web 6 13.10.2019 09:15
генерация PDF 417 BARNEY Общие вопросы Delphi 14 31.05.2016 13:47
генерация PDF 417 BARNEY Фриланс 1 26.05.2016 10:35
генерация pdf на php zvezda_t PHP 4 05.08.2010 18:37
Генерация PDF на основе шаблонов zvezda_t PHP 6 03.02.2010 12:35