Макрос Excel припинив роботу після оновлення Windows kb4103729


0

З моменту оновлення Windows версії 1803 kb4103729 мій Макрос для створення PDF-файлу та надсилання рахунку-фактури перестав працювати. Це макрос з декількома командами в ньому та посиланнями на робочий аркуш і на папку призначення (див. Нижче).

Я перевірив усі посилання та застосував усі рішення, які я міг знайти тут: видалення всіх .exd-файлів та зміна мовних налаштувань для запуску коду VBA (оновлення впливає на мовні пакети, і я запускаю голландську версію excel). Сподіваюся, хтось може мені допомогти на цьому.

Проблема, схоже, є специфічною для цього макросу (всі версії, які я маю, одна для кредитних купюр і дві для рахунків-фактур іншими мовами, це стосується, але не інші Макроси). Він надає мені друге поле помилок ("Неможливо створити PDF, можливі причини: ...").

Ось макрос:

Sub Create_PDFmail () Dim FileName As String

If ActiveWindow.SelectedSheets.Count > 1 Then
    MsgBox "There is more then one sheet selected," & vbNewLine & _
           "ungroup the sheets and try the macro again"
Else

    FileName = RDB_Create_PDF(Source:=Range("A1:F39"), _
                              FixedFilePathName:="C:\Users\woute\SharePoint\CareerCoach - Admin\Boekhouding\Verkoopfacturen\CC Factuur " & ThisWorkbook.Sheets("Template").Range("Template!E11").Value & ".pdf", _
                              OverwriteIfFileExist:=True, _
                              OpenPDFAfterPublish:=False)

    'For the selection use Selection in the Source argument
    'FileName = RDB_Create_PDF(Source:=Selection)

    'For a fixed file name use this in the FixedFilePathName argument
    'FixedFilePathName:="C:\Users\Ron\Test\YourPdfFile.pdf"

    If FileName <> "" Then
        RDB_Mail_PDF_Outlook FileNamePDF:=FileName, _
                             StrTo:=ThisWorkbook.Sheets("Template").Range("Template!H2").Value, _
                             StrCC:="", _
                             StrBCC:="", _
                             StrSubject:="factuur " & ThisWorkbook.Sheets("Template").Range("Template!E11").Value, _
                             Signature:=True, _
                             Send:=False, _
                             StrBody:="<body>Beste " & Range("Template!H3").Value & ",<br><br>" & _
                                        "In bijlage vindt u de meest recente factuur voor de dienstverlening <b><i>" & Range("Template!B12").Value & ".</i></b>" & _
                                        "<br>" & "...Bunch of body text" & _
                                       </body>"

    Else
        MsgBox "Not possible to create the PDF, possible reasons:" & vbNewLine & _
               "Microsoft Add-in is not installed" & vbNewLine & _
               "You Canceled the GetSaveAsFilename dialog" & vbNewLine & _
               "The path to Save the file in arg 2 is not correct" & vbNewLine & _
               "You didn't want to overwrite the existing PDF if it exist"
    End If
End If

Кінець Під


KB4103729це оновлення Adobe Flash Player, що означає, що це не причина такої поведінки.
— Рамхаунд

1
Вам слід видалити та перевстановити надбудову RDBMail. Я здогадуюсь, Office було оновлено, не знаючи вас.
— Рамхаунд

@Ramhound Дякую за швидку відповідь. Спробував це і дійсно надбудову було видалено, але все-таки проблему не виправили.
— WouterVB

Вам доведеться надати нам більше інформації, оскільки я можу вам гарантувати, що KB4103729 не є причиною того, що ваш макрос не працює. Я б переяснив все, що ви робили раніше, коли надбудова не була встановлена
— Ramhound

Відповіді:


1

У мене була та сама проблема, і я її вирішив, зробивши наступне:

Windows + R та виконати% COMMONPROGRAMFILES%

Потім перейдіть до "Microsoft Shared", тепер знайдіть EXP_PDF.DLL у будь-якій папці OFFICEXX і скопіюйте її в папку OFFICE16.

Спробуйте ваш макрос.

Якщо він не працює, ви все ще можете прокоментувати рядки, що перевіряють установку надбудови (Перший блок блоку та останній блок EndIf) у функції RDB_create_PDF:

    Function RDB_Create_PDF(Myvar As Object, FixedFilePathName As String, _
             OverwriteIfFileExist As Boolean, OpenPDFAfterPublish As Boolean) As String
Dim FileFormatstr As String
Dim Fname As Variant

'Test to see if the Microsoft Create/Send add-in is installed.
If Dir(Environ("commonprogramfiles") & "\Microsoft Shared\OFFICE" _
     & Format(Val(Application.Version), "00") & "\EXP_PDF.DLL") <> "" Then

    If FixedFilePathName = "" Then
        'Open the GetSaveAsFilename dialog to enter a file name for the PDF file.
        FileFormatstr = "PDF Files (*.pdf), *.pdf"
        Fname = Application.GetSaveAsFilename("", filefilter:=FileFormatstr, _
              Title:="Create PDF")

        'If you cancel this dialog, exit the function.
        If Fname = False Then Exit Function
    Else
        Fname = FixedFilePathName
    End If

    'If OverwriteIfFileExist = False then test to see if the PDF
    'already exists in the folder and exit the function if it does.
    If OverwriteIfFileExist = False Then
        If Dir(Fname) <> "" Then Exit Function
    End If

    'Now export the PDF file.
    On Error Resume Next
    Myvar.ExportAsFixedFormat _
            Type:=xlTypePDF, _
            Filename:=Fname, _
            Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, _
            OpenAfterPublish:=OpenPDFAfterPublish
    On Error GoTo 0

    'If the export is successful, return the file name.
    If Dir(Fname) <> "" Then RDB_Create_PDF = Fname
End If
End Function

Сподіваюся, це допоможе, якщо все-таки потрібно.


Дякую, це остаточно вирішило цю проблему (насправді я вже відмовився від неї деякий час тому назад. Мабуть, у мене є і програмні файли, і папка Program Files X86, хоча це 64-бітна машина, тому я вставив її у Programfiles / commonfiles / Microsoftshared / Office15, Programfiles (x86) / Commonfiles / Microsoftshared / Office16 і папка Windows / SysWow64. Це зробило трюк. Ви зробили мої вихідні :-)
— WouterVB
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.