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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2011, 12:52   #1
gamaiunov_alex
Пользователь
 
Регистрация: 20.09.2010
Сообщений: 20
По умолчанию Создание .пдф из экселя

Доброго времени суток.
Несколько месяцев назад написал небольшую базу. Собственно и базой то назвать нельзя. Скорей программка, которая подхватывает часть экселевского листа, делает из него пдф (создавая на винчестере), запихивает в письмо с нужным адресом, темой и самим текстом письма.
Проблема в том, что процесс создания пдфа - всё время как-то криво работает. Недавно работал, уже почти дописал базу, а тут бац - и вроде бы ничего не менял, а уже файлики не создаются.
Собсно, вот код:
Код:
Private Sub cmdExecute_Click()
    Dim cstFullBookPath As String
    cstFullBookPath = XLSpath
    
    ' On Error GoTo HandleErr
    
    Dim xlApp As Object 'Excel.Application
    Dim xlWB As Object 'Workbook
    Dim xlWSlist, xlWSbill As Object 'Worksheet
    Dim strAtt As String
    
    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = True
    Set xlWB = xlApp.Workbooks.Open(cstFullBookPath)
    Set xlWSlist = xlWB.Worksheets("Äàííûå ó÷åíèêîâ")
    Set xlWSbill = xlWB.Worksheets("Êâèòàíöèè")

    Dim intListCount As Integer
    Dim pdfjob As PDFCreator.clsPDFCreator
    Dim strPDFName As String
    Dim strPDFPath As String
    
    intListCount = 4    

    Dim olApp As Outlook.Application
    Dim olMail As Outlook.MailItem
    Dim olNs As Outlook.NameSpace
    
    Set olApp = New Outlook.Application
    
    Dim intNotSendedCount As Integer
    
    intNotSendedCount = 0
    
    Do Until xlWSlist.Cells(intListCount, 1) = "3"
        If xlWSlist.Cells(intListCount, 21) = "" Then
            intNotSendedCount = intNotSendedCount + 1
        Else
            xlWSbill.Cells(2, 30) = xlWSlist.Cells(intListCount, 1)
            strPDFName = xlWSlist.Cells(intListCount, 9) & ".pdf"
            If FolderExists(CurrentProject.path & "/PDFs" & "/" & ParseWord(ParseWord(XLSpath, -1, "\"), 1, ".")) Then
                strPDFPath = CurrentProject.path & "/PDFs" & "/" & ParseWord(ParseWord(XLSpath, -1, "\"), 1, ".")
            Else
                
            End If
            
    
            Set pdfjob = New PDFCreator.clsPDFCreator
            If pdfjob.cStart("/NoProcessingAtStartup") = False Then
    '           MsgBox "Can't initialize PDFCreator.", vbCritical + _
    '           vbOKOnly, "PrtPDFCreator"
    '           Exit Sub
                pdfjob.cStart
            End If
        
            With pdfjob
                .cOption("UseAutosave") = 1
                .cOption("UseAutosaveDirectory") = 1
                .cOption("AutosaveDirectory") = "C:\Users\Administrator\Desktop"
                .cOption("AutosaveFilename") = "test.pdf"
                .cOption("AutosaveFormat") = 0 ' 0 = PDF
                .cClearCache
            End With
            xlWB.Worksheets("Êâèòàíöèè").Select
            xlWSbill.Range("A1:AC11").PrintOut Copies:=1, ActivePrinter:="PDFCreator"
    
            Set olMail = olApp.CreateItem(olMailItem)
            olMail.To = xlWSlist.Cells(intListCount, 21)
            olMail.Subject = "Êâèòàíöèÿ ÒÅÑÒ"
            olMail.Body = xlWSlist.Cells(4, 20)
            strAtt = "C:/Users/Administrator/Documents/RedButton/" & xlWSlist.Cells(intListCount, 9) & ".pdf"
            olMail.Attachments.Add strAtt
            olMail.Save
            
            Debug.Print "start"
            Pause (2)
            Debug.Print "end"
            
    '        'Wait until the print job has entered the print queue
    '        Do Until pdfjob.cCountOfPrintjobs = 1
    '            DoEvents
    '        Loop
    '        pdfjob.cPrinterStop = False
    '
    '        'Wait until PDF creator is finished then release the objects
    '        Do Until pdfjob.cCountOfPrintjobs = 0
    '            DoEvents
    '        Loop
        End If
        intListCount = intListCount + 1
    Loop
    

    Set pdfjob = Nothing
    Set olNs = Nothing
    Set olMail = Nothing
    Set olApp = Nothing
            
    If intNotSendedCount > 0 Then
        MsgBox "Ó çâ'ÿçêó ç â³äñóòí³ñòþ ïîøòîâèõ àäðåñ íå áóëî ñôîðìîâàíî " & intNotSendedCount & " êâèòàíö³é.", vbOKOnly + vbInformation, "Ïîïåðåäæåííÿ"
    End If
        
'ExitHere:
'    Exit Sub
'
'HandleErr:
'    xlApp.Visible = True
'
'    GoTo ExitHere
'
End Sub
В отмеченном "Полужирным" устанавливаются свойства программки PDFCreator, что бы она создала пдф. На куче источников именно такие коды. То есть просто PrintOut Copies:=1, ActivePrinter:="PDFCreator" и мы имеем файлик на винчестере в указанной папке. У меня же какие-то бока. Сталкивался кто-то с подобным?
Если Вам не трудно, подскажите другие пути решения. У меня уже голова пухнет.



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 28.01.2011 в 13:55.
gamaiunov_alex вне форума Ответить с цитированием
Старый 27.01.2011, 21:45   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте gamaiunov_alex.
помочь "заочно", не видя "предмет" не получится.
Пошаговое выполнение не позволило определить "проблему"?

Евгений.
P.S. для удобочитаемости выкладываемый код обязательно заключать в тэги [соde] ... [/соde],
для этого на панели инструментов существует кнопка - #
Teslenko_EA вне форума Ответить с цитированием
Старый 28.01.2011, 12:32   #3
gamaiunov_alex
Пользователь
 
Регистрация: 20.09.2010
Сообщений: 20
По умолчанию

Во избежания непоняток залил весь проект с экселевским файлом. Для правильной работы нужно установить PDFCreator.
Крайне благодарен за помощь

Если не доверяете экзешнику, то я могу дать ссылку оф источника

http://www.programmersclub.ru/создан...кумента-excel/

Последний раз редактировалось gamaiunov_alex; 28.01.2011 в 12:34.
gamaiunov_alex вне форума Ответить с цитированием
Старый 28.01.2011, 15:50   #4
gamaiunov_alex
Пользователь
 
Регистрация: 20.09.2010
Сообщений: 20
По умолчанию

Всё, разрешил проблемы средставими distiller'a.
Тему можно закрывать
gamaiunov_alex вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БД в делфи - загрузка в БД пдф файла Tvv7-7-7 БД в Delphi 5 23.08.2010 20:35
Картинки из ПДФ aleksey51286 Софт 0 13.08.2010 09:48
печатанье листа в пдф user7789 Microsoft Office Excel 0 18.05.2010 09:46
?Как сконвертировать отчет в пдф-файл в Акцессе2000? VVlad69 Microsoft Office Access 0 19.02.2009 20:17
из экселя в БД Shark2112 Microsoft Office Excel 1 16.10.2007 08:04