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


 
				
		

