Avatar billede TrinoJ. Seniormester
18. juni 2018 - 14:50 Der er 7 kommentarer og
1 løsning

Sende pdf-fil vis VBA virker ikke efter opdatering af Microsoftpakken

Hej Excel-nørder,

Efter min Microsoft-pakke er blevet opdateret til Office 365, vil mine rapporter i Excel ikke længere sende pdf-filer via VBA. - Se nedenstående kode.

Vi er flere der har kigget på det, og det er ikke lykkedes os, at finde ud af hvorfor.

Er der en / flere der kan hjælpe?



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 If the Microsoft 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
            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 we test if the PDF
        'already exist in the folder and Exit the function if that is True
        If OverwriteIfFileExist = False Then
            If Dir(Fname) <> "" Then Exit Function
        End If

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

        'If Publish is Ok the function will return the file name
        If Dir(Fname) <> "" Then RDB_Create_PDF = Fname
    End If
End Function
Avatar billede acore Ekspert
18. juni 2018 - 16:29 #1
Hvad sker der?
Hvilken fejl får du?
Hvilke parametre kalder du den viste funktion med?
osv
Avatar billede jkrons Professor
18. juni 2018 - 23:15 #2
Der ver problemer med visse VBA funktioner i desktop versionen af Office 365, men præcis hvilke funktioner, der driller, ved jeg ikke. I browswrversionen er VBA slet ikke understøttet, og det diskuteres på flere MS fora, om VBA vil overleve meget længere.
Avatar billede TrinoJ. Seniormester
19. juni 2018 - 08:22 #3
@Acore - Jeg er ikke selv den store VBA-ekspert, og det er heller ikke mig der har lavet makroen. Derfor får jeg nok ikke forklaret mig godt nok, det beklager jeg.

Der opstår umiddelbart ikke nogen fejl, eller tegn på at den ikke vil køre funktionen.

Selve Excel-arket henter data fra et andet Excel-ark, hvorefter filen gemmes ned som pdf-fil i en mappe, og sendes via e-mail. Alt dette sker i samme makro.

Måske kan nedenstående hjælpe en smule mere? Jeg ved næsten ikke hvordan jeg skal forklare det bedre, da jeg ikke selv har lavet det. I må endelig spørge, så skal jeg prøve mit bedste for at svare.


Sub Email()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim cell As Range
    Dim FileNameSamlet As String
   
    Application.ScreenUpdating = False
   
    ' Gå tilbage til Performance arket
    ' Sheets("Email adresser").Activate
   
    Set OutApp = CreateObject("Outlook.Application")
         
    FileNameSamlet = RDB_Create_PDF(Sheets("Måned").Range("A1:Z33"), "M:\Finance\Rapportering\LAB\PDF\Sales and Orderintake Report NO.pdf", True, False)
       
    ' Tjekbox for sikker afsendelse
    warning = MsgBox("Er du sikker på du vil sende emailen?", vbOKCancel, "Warning")
    If warning = vbCancel Then Exit Sub
       
    Sheets("Email adresser").Activate
       
    On Error GoTo cleanup
    For Each cell In Sheets("Email adresser").Columns("B").Cells.SpecialCells(xlCellTypeConstants)
   
        ' Sender den samlede oversigt
        If cell.Value Like "?*@?*.?*" And _
          LCase(Cells(cell.Row, "C").Value) = "samlet" Then

            Set OutMail = OutApp.CreateItem(0)
            On Error Resume Next
            With OutMail
                .To = cell.Value
                .Subject = "Sales and Orderintake Report for Montana"
                .Body = "Se vedlagte opdaterede Sales and Orderintake rapport. Sig til hvis der er spørgsmål hertil."
                .Attachments.Add FileNameSamlet
                .Send  'Or use Display
            End With
            On Error GoTo 0
            Set OutMail = Nothing
        End If
       
    Next cell

    Sheets("Måned").Activate

cleanup:
    Set OutApp = Nothing
    Application.ScreenUpdating = True
End Sub
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 If the Microsoft 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
            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 we test if the PDF
        'already exist in the folder and Exit the function if that is True
        If OverwriteIfFileExist = False Then
            If Dir(Fname) <> "" Then Exit Function
        End If

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

        'If Publish is Ok the function will return the file name
        If Dir(Fname) <> "" Then RDB_Create_PDF = Fname
    End If
End Function
Avatar billede TrinoJ. Seniormester
19. juni 2018 - 08:25 #4
@jkrons - Det sjove er, at min kollega som også har Office 365, ikke har problemer med at køre den, så man skulle næsten tro, at det er en installation eller noget der mangler.

Men hvornår regner de med, at VBA udgår, og ved du om der findes et alternativ allerede nu, som kan det samme?
Avatar billede Slettet bruger
19. juni 2018 - 08:35 #5
det du kan gøre er, at lave en stop-punkt rimeligt i toppen af din vba-kode. Når du så eksekverer koden, stopper koden der hvor du sat punktet - så kan du skridt for skridt se, hvad din vba kode laver/ikke laver.
Får du nogen form af fil gemt/sendt eller sker der bare ingenting?

Hvis du kigger på erstatning, satser Microsoft pt. på Powerapps og/eller forms
Avatar billede TrinoJ. Seniormester
19. juni 2018 - 08:40 #6
@Thomas S - filen bliver sendt ud som den plejer, bare uden nogen pdf-fil vedhæftet. Hvordan laver jeg det stop-punkt?

På forhånd tak for hjælpen.
Avatar billede Slettet bruger
19. juni 2018 - 10:34 #7
mit gæt er i søgen, om en given addin er installeret:
  If Dir(Environ("commonprogramfiles") & "\Microsoft Shared\OFFICE" _
        & Format(Val(Application.Version), "00") & "\EXP_PDF.DLL")

som svarer (sådan ca til:)
C:\Program Files (x86)\Microsoft Office\Office16

men i Office 365 ser stien ca. sådan ud:
C:\Program Files (x86)\Microsoft Office\root\Office16

så det bør du måske kigge på;

en stoppunkt laver du ved at gå ind til koden, højre klik på en linje og vælge:
Toggle - Breakpoint
Eller du VENSTRE-klikker i venstre side af linjen (du skal klikke ind i det grå område)
linjen bliver rød - så kan du se med det samme at det lykkedes
Avatar billede TrinoJ. Seniormester
19. juni 2018 - 11:02 #8
@Thomas S - Linjen bliver rød, så der er ikke noget der tyder på, at der opstår en fejl, hvilket er mærkeligt.

Jeg har netop kigget på det tilføjelsesprogram der er installeret, og jeg kan se at det gælder Excel 2007-2016, så du har nok helt ret i, at det en given addin der mangler.

Jeg må lede efter et tilføjelsesprogram der kan håndterer Excel 365.

Tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Unik System Design A/S

Experienced agile QA Engineer

IT & Co ApS

IT-tekniker

Cognizant Technology Solutions Denmark ApS

Test Manager

Formpipe Software A/S

Market Manager