| Скрипт для автоматизированного конвертирования документов MS Word в html файлы для загрузки на DL в качестве условий задач. |
| | Все name.doc файлы в текущем каталоге будут превращены в name\task.htm с картинками в подпапке webfiles. |
| | Все name.doc файлы в текущем каталоге будут превращены в name\task.htm с правильными ссылками на картинки в подпапке webfiles. |
| |
| {code:title=createHtmlFromWord.vbs} |
| Option Explicit |
| |
| 'declare all variables |
| Dim objWord |
| Dim oDoc |
| Dim fso |
| Dim colFiles |
| Dim curFile |
| Dim curFileName |
| Dim folderToScan |
| Dim folderToSave |
| Dim subfolderToSave |
| Dim fileToSave |
| Dim folderToScanExists |
| Dim folderToSaveExists |
| Dim objFolderToScan |
| |
| 'set some of the variables |
| folderToScanExists = False |
| folderToSaveExists = False |
| Const wdSaveFormat = 10 'for Filtered HTML output |
| |
| Set fso = CreateObject("Scripting.FileSystemObject") |
| |
| '********************************** |
| 'change the following to fit your system |
| folderToScan = fso.GetAbsolutePathName(".") & "\" |
| folderToSave = fso.GetAbsolutePathName(".") & "\" |
| '********************************** |
| |
| 'Use FSO to see if the folders to read from |
| 'and write to both exist. |
| 'If they do, then set both flags to TRUE, |
| 'and proceed with the function |
| If fso.FolderExists(folderToScan) Then |
| folderToScanExists = True |
| Else |
| Wscript.Echo "Folder to scan from does not exist!" |
| End If |
| If fso.FolderExists(folderToSave) Then |
| folderToSaveExists = True |
| Else |
| Wscript.Echo "Folder to copy to does not exist!" |
| End If |
| |
| If (True Or folderToScanExists And folderToSaveExists) Then |
| 'get your folder to scan |
| Set objFolderToScan = fso.GetFolder(folderToScan) |
| 'put al the files under it in a collection |
| Set colFiles = objFolderToScan.Files |
| 'create an instance of Word |
| Set objWord = CreateObject("Word.Application") |
| If objWord Is Nothing Then |
| Wscript.Echo "Couldn't start Word." |
| Else |
| 'for each file |
| For Each curFile in colFiles |
| 'only if the file is of type DOC |
| If (fso.GetExtensionName(curFile) = "doc" Or (fso.GetExtensionName(curFile) = "docx")) Then |
| 'get the filename without extension |
| curFileName = curFile.Name |
| curFileName = Mid(curFileName, 1, InStrRev(curFileName, ".") - 1) |
| subfolderToSave = folderToSave & "\" & curFileName |
| fso.CreateFolder subfolderToSave |
| 'open the file inside Word |
| objWord.Documents.Open fso.GetAbsolutePathName(curFile) |
| 'do all this in the background |
| objWord.Visible = False |
| 'create a new document and save it as Filtered HTML |
| fileToSave = subfolderToSave & "\webfiles.htm" |
| Set oDoc = objWord.ActiveDocument |
| oDoc.SaveAs fileToSave, wdSaveFormat |
| oDoc.Close |
| Set oDoc = Nothing |
| fso.MoveFile fileToSave, subfolderToSave & "\task.htm" |
| End If |
| Next |
| End If |
| 'close Word |
| objWord.Quit |
| 'set all objects and collections to nothing |
| Set objWord = Nothing |
| Set colFiles = Nothing |
| Set objFolderToScan = Nothing |
| End If |
| |
| Set fso = Nothing |
| {code} |
| |
| Просто так можно запускать по вводу. А для отладки и сообщений об ошибках так: |
| {code:title=run.cmd} |
| cscript //D //X createHtmlFromWord.vbs |
| {code} |
| |
| Творчески содрано отсюда: http://www.evagoras.com/2011/02/10/exporting-word-files-to-html/. |
| Там же проиллюстрированы настройки для правильного сохранения вручную. |
| |
| {note}Для правильной работы скрипта должна быть снята птичка "Меню/Сервис/Параметры/Общие/Параметры веб-документа.../Файлы/По возможности использовать длинные имена файлов".{note} |