Automatisch opslaan als pdf bij afsluiten-opslaan als

Status
Niet open voor verdere reacties.

Tonex

Gebruiker
Lid geworden
6 jul 2012
Berichten
43
Beste VBA wizards...

Het Word2007 document dient wanneer het wordt opgeslagen oók automatisch opgeslagen te worden als pdf-bestand.
Onderstaande in modules geplaatst, wanneer ik via officeknop kies voor 'opslaan', wordt het document opgeslagen én wordt het als pdf-bestand opgeslagen (evt. overschreven).
Maar:
  • wanneer ik het document afsluit (via menu of kruisje) en bij de vraag: wilt u de wijzigingen in "naam" opslaan? kies voor JA, wil ik óók dat het document automatisch wordt opgeslagen als pdf-bestand.
  • het document via officeknop 'opslaan als' kan nu niet meer...

<zie test document>

Module 1
Code:
Public Sub FileSave()

ActiveDocument.Save
SaveActiveDocumentAsPdf

End Sub

Module 2
Code:
Public Sub FileSaveAs()

ActiveDocument.SaveAs
SaveActiveDocumentAsPdf

End Sub

Module 3
Code:
Sub SaveActiveDocumentAsPdf()

    On Error GoTo Errhandler
    If InStrRev(ActiveDocument.FullName, ".") <> 0 Then
        Dim strPath As String
        strPath = Left(ActiveDocument.FullName, InStrRev(ActiveDocument.FullName, ".") - 1) & ".pdf"

        ActiveDocument.SaveAs FileName:=strPath, FileFormat:=wdFormatPDF
    End If
    On Error GoTo 0
    Exit Sub
Errhandler:
    MsgBox "Niet als .PDF opgeslagen. " & _
    "Geopend .PDF-bestand eerst afsluiten. "

End Sub

Graag hulp voor een niet VBA kenner...
 
Laatst bewerkt:
Hallo,

Dat zou als volgt moeten werken:

1. Voeg een class-module toe aan het VBProject met daarin de code:

Code:
Private WithEvents App As Application

Private Sub Class_Initialize()
    Set App = Application
End Sub

Private Sub App_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
ThisDocument.Save
ThisDocument.SaveAs FileName:=ThisDocument.Name & ".pdf", FileFormat:=wdFormatPDF
End Sub

2. Voeg de volgende code toe in de module "Thisdocument":

Code:
Private myApp As CWordEvents


Private Sub Document_Open()
    Set myApp = New CWordEvents
End Sub


Omdat ik werk met Office 2007 kan ik dat niet testen als PDF. De code werkt wel als ik het test met opslaan als tekst-bestand bijvoorbeeld.

Grtz,
MDN111.
 

Bijlagen

  • EventModule.png
    EventModule.png
    49,2 KB · Weergaven: 58
  • ThisdocumentModule.png
    ThisdocumentModule.png
    33,8 KB · Weergaven: 49
Hallo Tonex,

Sorry hoor, maar ik had je vraag toch niet echt goed gelezen vrees ik.

De oplossing zou moeten werken met Word 2010 en later. Word 2007 laat niet toe om te saven als PDF, tenzij je een Addin installeert. Daar heb ik wel eens iets over gelezen, maar ik heb er geen ervaring mee.

Misschien dat deze link kan helpen: https://msdn.microsoft.com/en-us/library/bb256835(v=office.12).aspx

Grtz,
MDN111.
 
Laatst bewerkt:
MDN111,

Test documentje toegevoegd, waaruit blijkt dat het als pdf opslaan deels wel gaat maar ...
ik heb de originele vraag iets duidelijker gemaakt.

Bekijk bijlage Test.docx
 
Het bijgevoegd document Test.docx bevat geen modules.

Volgens de inhoud van dat document werkt het opslaan als pdf wel als je kiest voor "Opslaan". Kan ik daaruit besluiten dat u die fameuze Add-In geïnstalleerd heeft?

Hoe bekomt u dat de Procedures ("FileSave", "FileSaveAs" en "SaveActiveDocumentAsPdf") uit de drie modules, vermeld in #1, worden aangeroepen?

Kan u misschien het bestand met de macro's erin (docm) bijvoegen?

Grtz,
MDN111.
 
Mmmh kom er niet echt verder mee...
Bij de onderstaande heb ik nog wel voor elkaar dat het venster weer wordt weergegeven, maar voordat je annuleert is het toch (ongewenst) al opgeslagen als pdf.
Met "Public Sub FileClose()" en "Public Sub FileExit()" uit je bijlage krijg ik het ook niet werkend.


Code:
Public Sub FileSaveAs()
    ActiveDocument.SaveAs
    'Opslaan-als venster weergeven
    With Dialogs(wdDialogFileSaveAs)
        .Show
    End With
    'Macro SaveAsPDF() uitvoeren
    SaveAsPDF
End Sub
 
We geraken niet echt op dezelfde golflengte, vrees ik. Sta mij toe om te trachten het even te verduidelijken, a.u.b.

Je hebt ervoor gekozen om de gewenste scenario's te bekomen door de Word Commands te wijzigen met je eigen code. Zo staat het in je bijlage "Test.docm". Als je het bestand op de gewonde manier opslaat, dan wordt het ook als PDF omgeslagen, zoals gewenst. Dat is het effect van je macro "Public Sub FileSave()".

Je hebt eveneens het Word Command "Save As" gewijzigd door je macro "Public Sub FileSaveAs()", maar dat werkt tot hiertoe (nog) niet. Als je de code in #8 als volgt aanpast, zou het bestand in het huidige formaat én als PDF moeten opgeslagen worden:
Code:
Public Sub FileSaveAs()
If Dialogs(wdDialogFileSaveAs).Show = -1 Then
    ActiveDocument.Save
    SaveActiveDocumentAsPdf
End If
End Sub

Het andere probleem is om hetzelfde scenario te verkijgen als je het document afsluit via het kruisje en antwoordt met "Ja" op de vraag om het op te slaan. Ik vrees dat dit niet gaat lukken met jouw systeem van aanpassing van "Word Commands". Daarvoor lijkt het mij noodzakelijk om van systeem te veranderen en beroep te doen op de Application Events, zoals in de bijlage bij #7.

Grtz,
MDN111.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan