2017-08-23 3 views
0

J'ai trois fichiers de document Word et je veux les renommer avec Now() date. Trois fichiers sont aussiEnregistrer et renommer plusieurs fichiers au format PDF sans demander l'emplacement en même temps

1. EMEA.doc --rename-> EMEA 083117.doc -convert-> EMEA 082317.PDF

2. CEEMEA.doc - rename-> CEEMEA 083117.doc -convert-> CEEMEA 082317.PDF

3. LATAM.doc --rename-> LATAM 083117.doc -convert-> LATAM 082317.PDF

J'ai besoin de ExportAsFixedFormat (PDF) ces .Doc fichiers. Le code suivant fait le travail pour ActiveDocument seulement. Je veux enregistrer des fichiers dans un endroit spécifique sans VBA demandant l'emplacement.

ActiveDocument.ExportAsFixedFormat OutputFileName:= _ 
    "C:\Documents and Settings\Administrator\Desktop\EMEA CEEMEA\LATAM.pdf", ExportFormat _ 
    :=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _ 
    wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _ 
    Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _ 
    CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _ 
    BitmapMissingFonts:=True, UseISO19005_1:=False 
+0

Je ne suis pas sûr de comprendre, pourquoi ne pas simplement les ouvrir un par un dans le code et faire la même chose pour tous? Ou utilisez une boucle? – vacip

+0

@vacip il faut du temps pour ouvrir et imprimer et je veux l'enregistrer. Comme les fichiers en question ne sont qu'un exemple, il y a beaucoup de fichiers à renommer et à convertir. –

+0

pourquoi ne faites-vous pas 'EMEA.doc -convert-> EMEA 082317.PDF'? – jsotola

Répondre

1

Créez UserForm pour trois fichiers et copiez le code (indiqué ci-dessous) dans PDF_Click.

Code

ouvrira ses portes tous les trois d'entre eux un par un et faire SAVEAS avec la date Now() et créer PDF pour les fichiers d'enregistrement à l'aide For loop marqué.

Private Sub PDF_Click() 

Dim d As String 

Finalize.hide 
Dim C As MSForms.Control 
For Each C In Me.Controls 
    If TypeName(C) = "CheckBox" Then 
    If C.Value = True Then 
    If C.Caption = "Select All" Then 
    Else 

VD = "C:\Documents and Settings\Administrator\Desktop\EMEA CEEMEA\" 

Documents.Open FileName:=VD & C.Caption & ".doc" 

d = Format(Now(), "mmddyy") 
f = VD & Ctl.Caption & " " & d 
ActiveDocument.SaveAs2 f & ".doc" 

ActiveDocument.ExportAsFixedFormat OutputFileName:= _ 
     f & ".pdf", ExportFormat _ 
     :=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _ 
     wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, TO:=1, _ 
     Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _ 
     CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _ 
     BitmapMissingFonts:=True, UseISO19005_1:=False 

ActiveDocument.Close 

    End If 
    End If 
    End If 

Next 
End Sub 

Cette réponse est réservée aux critiques, Pour s'améliorer.

3

direction générale:

  1. Vous devez indiquer au programme les fichiers que vous souhaitez manipuler (par exemple « all word files in folder x »)
  2. Vous semblez avoir déjà une règle pour renommer (nom du fichier & "" & date), il suffit de parcourir tous les fichiers en question; un batch file pourrait être une bonne solution de rechange à ABV pour renommer les fichiers
  3. Open and save each document to PDF (peut être fait en arrière-plan, pas besoin d'ouvrir réellement le document)

Remarque: Vous ne fait « convertir » un mot fichier, n'enregistrez qu'un fichier (PDF) supplémentaire. Pour que cela ressemble à une «conversion», vous devez enregistrer le PDF au même endroit et supprimer le fichier Word d'origine. Si vous avez besoin d'aide pour un problème spécifique dans votre programme, mettez à jour votre message avec les lignes de code en question avec une description de l'erreur/comportement incorrect, le comportement souhaité et ce que vous avez essayé jusqu'à présent de résoudre.