Afsluiten met opslaan .docx en .pdf

Status
Niet open voor verdere reacties.

Reckless

Gebruiker
Lid geworden
3 apr 2018
Berichten
10
Ik heb een stukje vba code voor word (sjabloon) gemaakt waarbij bij afsluiten een word en een pdf document wordt gemaakt en opgeslagen op een vaste locatie.
Echter werkt het goed maar in sommige gevallen sluit hij niet af en krijg ik een melding dat hij niet kan sluiten omdat er nog een venster open staat.
Wie kan mij helpen waar ik in de code iets vergeten ben?

Code:
Sub document_close()

Counter = Counter + 1
Ver = " v" & Counter
If Ver = " v1" Then Ver = ""
I_naam = "Testlocatie"

    sNaam = "XXX " & Year(Date) & " " & I_Naam & Ver
    Startpad = "C:\Users\" & Environ("Username") & "\Documents\"
    Pad = "Klanten\" & I_Naam & "\"
    PadPDF = "Klanten\" & I_Naam & "\PDF\"
    
    oNaam = InputBox("Voer de bestandsnaam in." & vbCr & vbCr & "Kies 'Annuleren' voor niet opslaan" & vbCr & vbCr & Startpad & vbCr & Pad, "Bestandsnaam aanpassen", sNaam)
    If Len(oNaam) = 0 Then
        ActiveDocument.Saved = True
        Application.Quit savechanges:=wdDoNotSaveChanges
    End If
 If Len(Dir(Startpad & Pad, vbDirectory)) = 0 Then MkDir (Startpad & Pad)
 If Len(Dir(Startpad & PadPDF, vbDirectory)) = 0 Then MkDir (Startpad & PadPDF)

file = Dir(Startpad & Pad & oNaam & ".docx")
 If Len(file) > 0 Then
    response = MsgBox(file & " bestaat al," & vbCr & "Overschrijven?", vbYesNo + vbCritical + vbDefaultButton2)
    If response = vbNo Then document_close
 End If
MsgBox " ***********************************************************" & vbCr & " ** WORDVERSIE IS UITSLUITEND VOOR EIGEN GEBRUIK! ** " & vbCr & " ***********************************************************" & vbCr & vbCr & "File: " & vbCr & Startpad & vbCr & Pad & oNaam & ".docx" & vbCr & vbCr & "FilePDF: " & vbCr & Startpad & vbCr & PadPDF & oNaam & ".pdf", vbInformation
ActiveDocument.SaveAs Startpad & Pad & oNaam, wdFormatDocumentDefault
ActiveDocument.SaveAs Startpad & PadPDF & oNaam, wdFormatPDF
ActiveDocument.Saved = True
Application.Quit savechanges:=wdDoNotSaveChanges
End Sub
 
Hallo Reckless,

Ik maak af en toe ook gebruik van vba, maar ben geen pro... (geen cursus of scholing gehad)

Misschien twee opties die je kunt testen:

Mogelijk moet je uit onderstaande code de "Application.Quit savechanges:=wdDoNotSaveChanges" weg halen?

Code:
    If Len(oNaam) = 0 Then
        ActiveDocument.Saved = True
        Application.Quit savechanges:=wdDoNotSaveChanges
    End If

Je maakt immers aan het einde van je code ook weer gebruik van deze code. Kan het dan zijn dat de applicatie te kort achter elkaar de actie wil uitvoeren en dat hij dan in het geheugen heeft staan dat er nog een actie moet worden uitgevoerd?
Misschien is het onzin wat ik hier verkondig, maar aangezien je zegt dat je er niet altijd last van hebt...

Optie 2:
Misschien als je voor de laatste "Application.Quit savechanges:=wdDoNotSaveChanges" een timer gebruikt die de applicatie bijv 10/15 seconden laat wachten voor het uitvoeren van de code..
 
Dat is het feitelijke commando om te sluiten en kan ik mijn inziens niet verwijderen. De eerste is om te sluiten na dat je er voor kiest om niet op te slaan en de tweede is om te sluiten na het opslaan.
Om te sluiten zonder dat hij vraagt om op te slaan geef ik ook tot twee keer toe 'ActiveDocument.Saved = true', Ik krijg het idee dat het daar ergens fout gaat.
Ik ben er nu achter gekomen dat het allemaal goed gaat als het sjabloon niet ingevuld is. Maar als er ergens gegevens zijn ingevoerd vraagt hij of ik het document wil opslaan.

Aanvulling:
Het gaat alleen maar fout als ik kies voor niet opslaan.
Dus na het volgende stukje:
Code:
    oNaam = InputBox("Voer de bestandsnaam in." & vbCr & vbCr & "Kies 'Annuleren' voor niet opslaan" & vbCr & vbCr & Startpad & vbCr & Pad, "Bestandsnaam aanpassen", sNaam)
    If Len(oNaam) = 0 Then
        ActiveDocument.Saved = True
        Application.Quit savechanges:=wdDoNotSaveChanges

De uitslag van Len(oNaam) is dat netjes 0.
Maar toch vraagt hij of ik het bestand wil opslaan met een venster. Het venster zou ik niet verwachten na 'ActiveDocument.Saved = True'
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan