Helpmij.nl
Helpmij.nl
Helpmij.nl

Quote

Weergeven resultaten 1 tot 3 van 3

Onderwerp: Door VBA gebruikte applicatie blijven open staan.

  1. #1
    Junior Member
    Geregistreerd
    2 mei 2020
    Vraag is opgelost

    Door VBA gebruikte applicatie blijven open staan.

    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.

  2. #2
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    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?
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  3. #3
    Junior Member
    Geregistreerd
    2 mei 2020
    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

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl

Regels
Help

Helpmij.nl en business

Partners
Sponsoren