2017-09-14 1 views
2

Quelqu'un pourrait-il savoir comment convertir plusieurs fichiers .rtf (Rich Text File) placés dans le dossier au format PDF dans R ou SAS?Comment faire pour convertir les fichiers rtf dans le dossier au format PDF

Je peux installer n'importe quelle application sur mon PC de sorte que la solution ne soit que dans les deux programmes que j'ai indiqués ci-dessus.

est ici le code modifié généreusement fourni par @Reeza:

bRecursive = False 
sFolder = "C:\PATH" 
Set oFSO = CreateObject("Scripting.FileSystemObject") 
Set oWord = CreateObject("Word.Application") 
oWord.Visible = True 

Set oFolder = oFSO.GetFolder(sFolder) 
ConvertFolder(oFolder) 
oWord.Quit 

Sub ConvertFolder(oFldr) 
    For Each oFile In oFldr.Files 
    If LCase(oFSO.GetExtensionName(oFile.Name)) = "rtf" Then 
     Set oDoc = oWord.Documents.Open(oFile.path) 
     Str = left(oFile,instr(1,oFile,".")-1) 
     oWord.ActiveDocument.SaveAs Str, 17 
     oDoc.Close 
    End If 
Next 

If bRecursive Then 
    For Each oSubfolder In oFldr.Subfolders 
     ConvertFolder oSubfolder 
    Next 
End If 
End Sub 

Les travaux ci-dessus du code .vbs mais j'ai 50 fichiers dans le dossier et après environ 10 convertis rtf faire pdf docs il juste garder l'ouverture et la fermeture restante fichiers en cercle (il semble). Une idée? Merci.

+0

rtf est pas fichier Microsoft Word ... son fichier Rich Text ... –

+0

corrigé, grâce – Maximilian

+0

Avez-vous déjà regarde 'pandoc'? il pourrait convertir vers et à partir de divers formats (et PDF en utilisant Latex). 'rmarkdown :: pandoc_convert' peut être utilisé pour appeler pandoc de R car l'utilitaire est inclus dans le paquet' rmarkdown' – cderv

Répondre

2

J'ai testé cela et cela fonctionne très bien sur mon système. Windows 7 Entreprise Le script VBS est enregistré en tant que .vbs et SAS peut l'appeler à l'aide d'une commande X ou de% SYSEXEC.

Le script VBS est:

bRecursive = False 
sFolder = "C:\_LOCALDATA\temp\_rtf_test\" 
Set oFSO = CreateObject("Scripting.FileSystemObject") 
Set oWord = CreateObject("Word.Application") 
oWord.Visible = True 

Set oFolder = oFSO.GetFolder(sFolder) 
ConvertFolder(oFolder) 
oWord.Quit 

Sub ConvertFolder(oFldr) 
    For Each oFile In oFldr.Files 
    If LCase(oFSO.GetExtensionName(oFile.Name)) = "rtf" Then 
     Set oDoc = oWord.Documents.Open(oFile.path) 
     Str = left(oFile,instr(1,oFile,".")-1) 
     oWord.ActiveDocument.SaveAs Str & ".pdf", 17 
     oDoc.Close 
    End If 
Next 

If bRecursive Then 
    For Each oSubfolder In oFldr.Subfolders 
     ConvertFolder oSubfolder 
    Next 
End If 
End Sub 

Puis SAS:

%sysexec "C:\_LOCALdata\SAMPLE.VBS";