<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBA: Как заставить Word открыть doc/rtf-файл, с расширением odt]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=7575&amp;type=atom" />
	<updated>2012-09-15T16:22:30Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=7575</id>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Как заставить Word открыть doc/rtf-файл, с расширением odt]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=63882#p63882" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p><strong>yuriy2000</strong>, зачем (и кому) нужно менять у документа Word расширение?</p></blockquote></div><p>Хороший вопрос. </p><p>К нам поступают такие файлы от службы судебных приставов. Эти файлы создаются в OpenOffice при помощи какой-то программы/макроса по некоему шаблону. Все файлы имеют расширение ODT. Моя задача обработать входящие файлы.&nbsp; Извлечь из них определенную информацию. </p><p>Иногда попадаются вот такие &quot;кривые&quot; переименованные файлы.&nbsp; Я предполагаю, что приставы иногда, перед тем как отправить файл, решают внести в него изменения при помощи Word&#039;a... ну и сохраняют вот так вот криво. </p><p>Кстати, Word часто не может открыть и &quot;нормальные&quot; ODT файлы. Так вот я придумал следующее - поскольку ODT файл представляет собой zip-архив, содержащий текст в виде XML, то быстрей оказалось извлечь этот <strong>content.xml</strong>&nbsp; и потом конвертировать его в HTML&nbsp; через split по строке <strong>&lt;text:p</strong>&nbsp; следующим образом </p><p>фрагмент кода<br /></p><div class="codebox"><pre><code>sStrng1=split( UTF2Win(FSO.OpenTextFile(&quot;content.xml&quot;,1).ReadAll),&quot;&lt;text:p&quot;) 

oFileOut.WriteLine &quot;&lt;html&gt;&quot; 
for i=1 to UBound(sStrng1)
  oFileOut.WriteLine &quot;&lt;p &quot; &amp; replace(sStrng1(i),&quot;text:&quot;,&quot;&quot;)
next 
oFileOut.WriteLine &quot;&lt;/html&gt;&quot;</code></pre></div><p>потом уже открываю файл в Word&#039;e как html документ (wdOpenFormatWebPages) и извлекаю из него нужный текст.<br />Получается даже в 5-10 раз быстрей, чем открыть файл через встроенный конвертер Word&#039;a (wdOpenFormatOpenDocumentText)</p>]]></content>
			<author>
				<name><![CDATA[yuriy2000]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25753</uri>
			</author>
			<updated>2012-09-15T16:22:30Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=63882#p63882</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Как заставить Word открыть doc/rtf-файл, с расширением odt]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=63881#p63881" />
			<content type="html"><![CDATA[<p><strong>yuriy2000</strong>, зачем (и кому) нужно менять у документа Word расширение?</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-09-15T14:55:40Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=63881#p63881</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBA: Как заставить Word открыть doc/rtf-файл, с расширением odt]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=63879#p63879" />
			<content type="html"><![CDATA[<p>Господа, никто не сталкивался с такой проблемой:<br />Если документ в формате Word&#039;a (DOC/rtf/docx) сохранить с расширением <a href="http://ru.wikipedia.org/wiki/OpenDocument">ODT</a> (или поменять у нормального файла rtf/doc расширение на <strong>ODT</strong>, то файл в Word&#039;e не открывается. <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /> При этом OpenOffice открывает такие файлы без проблем. <img src="//forum.script-coding.com/img/smilies/cool.png" width="15" height="15" /></p><br /><p>пробовал оба варианта<br /></p><div class="codebox"><pre><code>objWord.Documents.Open(Filename:=FilePath, Format:=wdOpenFormatAuto)
objWord.Documents.Open(Filename:=FilePath, Format:=wdOpenFormatDocument)</code></pre></div><p>Выдается ошибка <strong>&quot;Не удается открыть файл из-за ошибок его содержимого&quot;</strong></p><br /><br /><p>Поскольку я не могу изменять исходные файлы, то у меня получается открыть этот &quot;кривой&quot; файл&nbsp; только скопировав его во временную папку и поменяв у него расширение. При этом еще приходится предварительно анализировать содержимое файла (по первым&nbsp; 4-м байтам).</p><p>У кого-нибудь есть иные идеи?</p><br /><br /><p>PS: MS Word 2007 SP3, Windows XP SP3</p>]]></content>
			<author>
				<name><![CDATA[yuriy2000]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25753</uri>
			</author>
			<updated>2012-09-15T13:43:00Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=63879#p63879</id>
		</entry>
</feed>
