2017-09-14 5 views
2

Würde jemand zufällig wissen, wie man mehrere RTF-Dateien (Rich Text File), die in einem Ordner gespeichert sind, innerhalb von R oder SAS konvertiert?Wie konvertiert man RTF-Dateien im Ordner in PDF

Ich kann keine Anwendung auf meinem PC installieren, so dass die Lösung nur innerhalb der beiden oben genannten Programme sein sollte.

Hier geänderte Code wird großzügig von @Reeza zur Verfügung gestellt:

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 

Die oben vbs Code funktioniert, aber ich habe 50 Dateien in Ordner, und nach etwa 10 rtfpdf docs tun umgewandelt es gerade Öffnung halten und Schließen verbleibenden Dateien im Kreis (es scheint). Irgendeine Ahnung? Vielen Dank.

+0

rtf ist nicht Microsoft Word-Datei ... seine Rich-Text-Datei ... –

+0

korrigiert dank – Maximilian

+0

Sie haben es schon schau dir 'pandoc' an? Es könnte zu und von verschiedenen Formaten (und PDF mit Latex) konvertieren. 'rmarkdown :: pandoc_convert' kann verwendet werden, um pandoc von R aufzurufen, da das Dienstprogramm in' rmarkdown' Paket enthalten ist. – cderv

Antwort

2

Ich habe das getestet und es funktioniert gut auf meinem System. Windows 7 Enterprise. Das VBS-Skript wird als VBS gespeichert, und dann kann SAS es mit einem X-Befehl oder% SYSEXEC aufrufen.

Das VBS-Skript ist:

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 

Dann in SAS:

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