Door VBA gebruikte applicatie blijven open staan.

Status
Niet open voor verdere reacties.

ArnieN

Gebruiker
Lid geworden
2 mei 2020
Berichten
27
Goedendag,

Vanuit Outlook gebruik ik VBA om bij verstuurde emails binnen Access e.e.a. aan te passen.
Dat werkte prima, als de aanpassing gedaan was werd Access automatisch gesloten.

Nu worden bij emails die aan bepaalde voorwaarden voldoen de PDF-bijlage geprint op de niet-default printer.
De PDF-bijlage wordt eerst op schijf gezet en daarna geprint met het volgende statement in VBA:

ShellExecute 0, "printto", sFile, "Canon TS5100 series", vbNullString, 0

De definitie van ShellExecute is dan:

Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Niet alles zelf verzonnen, maar gevonden op diverse sites.

Alles werkt prima, behalve dat de Adobe open blijft staan nadat de file geprint is.
Het vervelende is nu dat ook de Access-database open blijft staan sinds ik deze regels gebruik, ook na herstarten van de PC.
In beide gevallen wordt het geprinte document of de werkelijke database wel gesloten, maar blijft een lege database open of Adobe zonder een actieve file.

Als ik vanuit Schedule routines in Access laat uitvoeren wordt Access wel correct gesloten.
Het is dus blijkbaar een probleem dat alleen in Outlook voorkomt.

Al veel gezocht op internet, maar kan niets vinden wat op dit probleem lijkt.

Kent iemand dit probleem en wat nog fijner is: heeft iemand een suggestie?

Alvast mijn hartelijke dank.
 
Ik zie alleen een printcommando. Lijkt mij een beetje weinig voor de acties die zouden moeten worden uitgevoerd. Ook is de werkwijze mij niet duidelijk: print/mail je nou vanuit Outlook of vanuit Access? En wat wordt er afgedrukt? Een Access rapport? Ontvangen bijlagen? Erg onduidelijk allemaal.

En als je schrijft dat het prima werkte, maar nu niet meer, dan is er waarschijnlijk iets veranderd. Niets gebeurt op een computer doorgaans uit zichzelf. De vraag is dan: wat?
 
Uiteraard staat niet de hele code hierboven, maar ik zal proberen duidelijker te zijn.

Oude situatie:
Vanuit Outlook worden bij het versturen van bepaalde mails bepaalde gegevens binnen Access bijgwerkt. Werkt prima en Access wordt correct gesloten
Vanuit Schedule worden op bepaalde tijdstippen rapporten geproduceerd binnen Access. Werkt prima en Access wordt correct gesloten.

Nieuwe situatie:
Het volgende nieuw gecodeerd in Outlook:
Bij inkomende mail wordt de PDF-bijlage vanuit Outlook met behulp van ShellExecute geprint. Het is een gewoon PDF-bestand, geen access-rapport oid. Het printen gaat goed, maar Adobe blijft openstaan zonder het bestand dat geprint werd.

Als neveneffect wordt bij de oude bestaande functie in Outlook (het bijwerken van gegevens) Access ook niet meer correct gesloten. De betreffende database wordt wel gesloten, maar er blijft een nieuwe database open staan.

Dit neveneffect is niet aanwezig als vanuit Schedule Access wordt aangeroepen, dan wordt Access geheel gesloten.

De printcode van het printen bij een inkomende mail:

Code:
If item.Subject Like "*VVV*" Then
        sDirectory = "C:\Users\XXXX\print_bijlage\"
        'zijn er attachments?
        Iteller = 1
        Do While Iteller <= item.Attachments.Count
            If item.Attachments.item(Iteller).FileName Like "*?rint*" Then
                sFileType = LCase$(Right$(item.Attachments.item(Iteller).FileName, 4))
                If sFileType = ".pdf" Then
                    sFile = sDirectory & item.Attachments.item(Iteller).FileName
                    item.Attachments.item(Iteller).SaveAsFile sFile
                    ShellExecute 0, "printto", sFile, "Canon TS5100 series", vbNullString, 0
                End If
            End If
            Iteller = Iteller + 1
        Loop
    End If
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan