18. juni 2018 - 14:50Der 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
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.
@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
@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?
Synes godt om
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
@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.
Synes godt om
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
@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.
Synes godt om
Ny brugerNybegynder
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.