Elke instantie/document van Word afsluiten

Status
Niet open voor verdere reacties.

rudyV

Gebruiker
Lid geworden
25 feb 2019
Berichten
34
Geacht forum,

Onderstaande code probeert elk document te sluiten, maar sluit er maat één.
Code:
Dim sDesktop As String
Dim windowsScriptShell As Object
Set windowsScriptShell = CreateObject("WScript.Shell")
sDesktop = windowsScriptShell.SpecialFolders("Desktop")

Dim sApp As Object
Dim doc As Object
Set sApp = GetObject(, "Word.Application")
    If sApp Is Nothing Then
    Else
        sApp.Visible = True
        sApp.Activate
        For Each doc In sApp.Documents
          
            doc.SaveAs (sDesktop & "\" & Format(Date, "yyyymmdd")  & doc.Name)
            doc.Close
            
            Set sApp = Nothing
            On Error Resume Next
            Set sApp = GetObject(, "Word.Application")
            On Error GoTo 0
        Next doc
        Set doc = Nothing
        sApp.Quit
    End If

Graag uw hulp.

Met vriendelijke groet,

Ruud.
 
Je hoeft sApp maar één keer te in te stellen, maar jij sluit hem elke keer af en start vervolgens opnieuw op. Gooi dat deel er eerst eens uit.
 
Dit werkt namelijk :).
Code:
    sDesktop = CreateObject("WScript.Shell").SpecialFolders("Desktop")
    Set sApp = GetObject(, "Word.Application")
    If Not sApp Is Nothing Then
        sApp.Visible = True
        sApp.Activate
        For Each doc In sApp.Documents
            doc.SaveAs (sDesktop & "\" & Format(Date, "yyyymmdd") & doc.Name)
            doc.Close
        Next doc
        Set doc = Nothing
    End If
    sApp.Quit
 
Hartelijk dank voor je antwoord.
Het opnieuw instellen van sApp (dacht ik) is om te proberen daarmee separate instanties van Word te kunnen sluiten.
Juist omdat de code maar een enkel Worddoc sluit en niet allemaal.

Dank voor de aangepaste code. Ik ben er blij mee en leer ervan.
Echter, ook met deze code sluit er maar één doc.

Vriendelijke groet, Ruud
 
Herstel, AccessGuru,

Heb je code nog wat verder geprobeerd met bestaande docs, i.p.v. enkele documenten die ik aan heb gemaakt met vba en niet heb gesaved.
Met de bestaande docs sluiten ze allemaal.
Works like a charm.

Thnx, Ruud.
 
Je kunt een document pas opslaan onder de eigen als die er is. Een niet-opgeslagen document heeft geen naam. Dat kun je uiteraard wel inbouwen, al hoef je dan deze procedure daar niet voor te gebruiken, omdat je bij het opslaan van het nieuwe document natuurlijk gelijk sluit. En dan is hij al weg :).
 
Ik dacht dat in Word daarvoor dit volstond:

Code:
Sub M_snb()
  application.documents.close
End Sub
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan