2015-06-22 4 views
0

Я пишу VBScript, который будет преформировать некоторое автоматическое преобразование текстовых документов из .doc в .docx или .dotm, в зависимости от того, существует ли какой-либо сценарий VBA, встроенный в .doc, в документ.Как определить/изменить путь к документу слов до saveAS

Единственная проблема им с модифицирует в File.Path

я могу добавить в «х» на хвосте существующего пути, который staifys мой Requirment для создания DOCX, но при попытке изменить путь к изменению расширение от doc до dotm оказывается довольно трудным для решения.

Есть ли способ определить новый объект PathSystem Path?

Мои текущие мысли - использовать данные FileSystemObject. (имя файла, ect родительского папок) и создайте новый путь для перехода в метод SaveAs.

For Each oFile In oFldr.Files 
    If LCase(oFSO.GetExtensionName(oFile.Name)) = "doc" Then 

     Set oDoc = oWord.Documents.Open(oFile.path) 

      Dim parentFolder = oFSO.GetParentFolderName(oFile) 
      Dim baseFileName = oFSO.GetBaseName(oFile) 


      If oDoc.HasVBProject Then 
       oWord.ActiveDocument.SaveAs parentFolder & baseFileName & ".dotm", 15 
      Else 
       oWord.ActiveDocument.SaveAs oFile.path & "x", 12 
      End If 
     oDoc.Close 
    End If 
Next 
+1

ИМХО 'метод GetParentFolderName' возвращает строку, содержащую имя родительской папки последнего компонента в указанный путь _without задней backslash_. Используйте '.SaveAs parentFolder &" \ "& baseFileName &" .dotm "' – JosefZ

+0

Абсолютно точно. Спасибо. Если вы хотите «ответить» на вопрос, я сделаю это как ответ. – Newmanater

ответ

2

Всегда используйте BuildPath для конструирования дорожек. Кроме того, если вы фактически используете VBScript (не VBA), вы не можете определить переменную и присвоить ей значение на том же шаге. Кроме того, документы с макросами должны сохраняться как .docm (тип 13), а не как .dotm (тип 15), см. WdSaveFormat Enumeration. Последний тип предназначен для шаблонов документов с макросами.

Это должно работать:

Dim parentFolder, baseFileName, extension, format, newPath 

parentFolder = oFSO.GetParentFolderName(oFile) 
baseFileName = oFSO.GetBaseName(oFile) 

If oDoc.HasVBProject Then 
    extension = ".docm" 
    format = 13 
Else 
    extension = ".docx" 
    format = 12 
End If 

newPath = oFSO.BuildPath(parentFolder, baseFileName & extension) 

oWord.ActiveDocument.SaveAs newPath, format 
+0

Привет, спасибо за этот очень подробный ответ. Это явно то, что я искал – Newmanater