Добро пожаловать в мой блог! Изначально он не задумывался как блог 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



