Добро пожаловать в мой блог! Изначально он не задумывался как блог CRM разработчика, но жизнь сама внесла нужные коррективы. Тут я публикою все свои наблюдения относительно обозначенных в заголовке систем. Если Вы найдете в нем что-то интересное для Вас, как для заказчика, то буду рад сотрудничать с Вами! В моей компетенции 100% задач по MS CRM 3.0/4.0/2011:
MVP 2010, 2011
- Консалтинг
- Проектирование
- Разработка
- Обучение
MVP 2010, 2011
Мигрень интегратора: миграция со старых форматов Office
Запись от Артем Enot Грунин размещена 19.04.2010 в 14:06
Теги excel, format, java script, word, шаблон слияния
Итак, в преддверии выхода MS Office 2010 агонизирующим старым форматам Word/Excel/* 97 приходит их заслуженный покой на свалке истории. Впрочем, если вами были разработаны многочисленные шаблоны слияния, форм, и пр. пр. в старых форматах, то лично вам покой будет только снится. В прошлую пятницу я был тем самым счастливчиком, которому торжественно поручили преобразовать огромную прорву наших старых шаблонов для SharePoint. К счастью память подсказала мне один сайт: http://www.script-coding.info/index.html. Представляю вашему вниманию JS скрипт который можно натравить на библиотеку ваших старых шаблонов, чтобы он сохранил в нее же файлы в новом формате. Ничего волшебного скрипт не делает. В действительности он лишь открывает Word в фоновом режиме, загружает в него файлы в старых форматах, после чего сохраняет их в новых.
Сохраните приведенный выше код в текстовый файл с расширением .js. Поместите файл в каталог с шаблонами и запустите.
p.s. Зря я связался с JS: в данном случае выгоднее использовать "родной" для офиса VBScript
p.p.s. Зря я вообще связался с этой задачей - быстрее было бы сделать руками, но вам, я думаю, код сэкономит кучу времени.
p.p.p.s. Для Excel и прочего подход тоже работает, но с меня уже хватит!
Код:
// Format Codes var wdFormatDocument = 0; // Microsoft Office Word format. var wdFormatDOSText = 4; // Microsoft DOS text format. var wdFormatDOSTextLineBreaks = 5; // Microsoft DOS text with line breaks preserved. var wdFormatEncodedText = 7; // Encoded text format. var wdFormatFilteredHTML = 10; // Filtered HTML format. var wdFormatHTML = 8; // Standard HTML format. var wdFormatRTF = 6; // Rich text format (RTF). var wdFormatTemplate = 1; // Word template format. var wdFormatText = 2; // Microsoft Windows text format. var wdFormatTextLineBreaks = 3; // Windows text format with line breaks preserved. var wdFormatUnicodeText = 7; // Unicode text format. var wdFormatWebArchive = 9; // Web archive format. var wdFormatXML = 11; // Extensible Markup Language (XML) format. var wdFormatDocument97 = 0; // Microsoft Word 97 document format. var wdFormatDocumentDefault = 16; // Word default document file format. For Microsoft Office Word 2007, this is the DOCX format. var wdFormatPDF = 17; // PDF format. var wdFormatTemplate97 = 1; // Word 97 template format. var wdFormatXMLDocument = 12; // XML document format. var wdFormatXMLDocumentMacroEnabled = 13; // XML document format with macros enabled. var wdFormatXMLTemplate = 14; // XML template format. var wdFormatXMLTemplateMacroEnabled = 15; // XML template format with macros enabled. var wdFormatXPS = 18; // XPS format. // Save Options var wdDoNotSaveChanges = 0; // Do not save pending changes. var wdPromptToSaveChanges = -2; // Prompt the user to save pending changes. var wdSaveChanges = -1; // Save pending changes automatically without prompting the user. // Format Extentions var FileExtentions = []; FileExtentions[wdFormatDocument97] = ".doc"; FileExtentions[wdFormatDOSText] = ".txt"; FileExtentions[wdFormatDOSTextLineBreaks] = ".txt"; FileExtentions[wdFormatEncodedText] = ".txt"; FileExtentions[wdFormatFilteredHTML] = ".html"; FileExtentions[wdFormatHTML] = ".html"; FileExtentions[wdFormatRTF] = ".rtf"; FileExtentions[wdFormatTemplate97] = ".dot"; FileExtentions[wdFormatText] = ".txt"; FileExtentions[wdFormatTextLineBreaks] = ".txt"; FileExtentions[wdFormatUnicodeText] = ".txt"; FileExtentions[wdFormatWebArchive] = ".mht"; FileExtentions[wdFormatXML] = ".xml"; FileExtentions[wdFormatPDF] = ".pdf"; FileExtentions[wdFormatXMLDocument] = ".docx"; FileExtentions[wdFormatXMLDocumentMacroEnabled] = ".docm"; FileExtentions[wdFormatXMLTemplate] = ".dotx"; FileExtentions[wdFormatXMLTemplateMacroEnabled] = ".dotm"; FileExtentions[wdFormatXPS] = ".xps"; // Преобразовать все файлы указанного типа в указанный тип Convert(wdFormatTemplate97, wdFormatXMLTemplateMacroEnabled); function Convert(oFromFormat, oToFormat) { try { var oWord = new ActiveXObject("Word.Application"); var fso = new ActiveXObject("Scripting.FileSystemObject"); var oFolder = fso.GetFolder("."); var oFiles = oFolder.files; var enumerator = new Enumerator(oFiles); var count = 0; var formatRegex = new RegExp(FileExtentions[oFromFormat] + "$", "gi"); for (; ! enumerator.atEnd(); enumerator.moveNext()) { var file = enumerator.item(); if (file.Name.search(formatRegex) != -1) { ConvertAndSave(oWord, file, oFromFormat, oToFormat, oConverted); count++; } } WScript.Echo("Произведено " + count + " преобразований"); } catch(err) { WScript.Echo(err.description); } finally { if (oWord) oWord.Quit(); } } function ConvertAndSave(oWord, oFile, oFromFormat, oToFormat) { var docName = oFile.Name; var formatRegex = new RegExp(FileExtentions[oFromFormat] + "$", "gi"); var docNewName = docName.replace(formatRegex, FileExtentions[oToFormat]); var oDoc = oWord.Documents.Open(oFile.Path); oDoc.SaveAs(oFile.ParentFolder + "\\" + docNewName, oToFormat); oDoc.Close(wdSaveChanges); }
p.s. Зря я связался с JS: в данном случае выгоднее использовать "родной" для офиса VBScript
p.p.s. Зря я вообще связался с этой задачей - быстрее было бы сделать руками, но вам, я думаю, код сэкономит кучу времени.
p.p.p.s. Для Excel и прочего подход тоже работает, но с меня уже хватит!
Всего комментариев 0