Войти

Показать полную графическую версию : [решено] FileRead() и файлы .doc


evg64
15-09-2009, 23:42
Добрый день! Есть такой скрипт:

$FilePath="c:\word.doc"
$TextToWrite="Hello! This is some text!"

_FileCreate ( $FilePath )

$Open=Fileopen($FilePath,1)
FileWrite($FilePath,$TextToWrite)
FileClose($Open)

$FileRead=FileRead($FilePath)
FileDelete($FilePath)
msgbox(0,"AutoIT",$FileRead)


Здесь я создаю вордовский файл и пишу в него что-то через скрипт, потом читаю - все работает нормально. Но как только я пытаюсь прочитать уже существующий файл ворд, в мсгбоксе вылезает нечитабельное нечто:


msgbox(0,"AutoIT",$PathToExistingFile)

Почему файл не читается? Если его открыть через ворд, то там нормальный английский текст. Пробовал делать с FileOpen($PathToExistingFile,0) - не помогает.

kaster
15-09-2009, 23:56
потому что текстовый файл вордом открыть можно, а вот обратно - нет.
пользуй Word.au3

FlatX007
15-09-2009, 23:57
Ты попробуй открыть Word`овский DOC блокнотом ... и сразу поймёш в чём дело :)

evg64
16-09-2009, 20:02
пользуй Word.au3 »
Какую именно функцию юзать? Там нет ничего вроде _WordRead() :)

Medic84
16-09-2009, 21:14
А в этом разделе все функции не судьба посмотреть?

#include <Word.au3>
$oWordApp = _WordCreate ("")
$oDoc = _WordDocOpen ($oWordApp, @ScriptDir & "\Test.doc")

evg64
17-09-2009, 20:50
А в этом разделе все функции не судьба посмотреть?
Код:
#include <Word.au3>
$oWordApp = _WordCreate ("")
$oDoc = _WordDocOpen ($oWordApp, @ScriptDir & "\Test.doc")
------- »

А дальше как?
FileRead($oDoc) не получается прочитать. А чем тогда?
P.S. Мне надо не открыть файл ворд, а присвоить его содержание переменной.

kaster
17-09-2009, 21:52
P.S. Мне надо не открыть файл ворд, а присвоить его содержание переменной. »
ну что можно сказать, крути объектную модель ворда
http://msdn.microsoft.com/en-us/library/bb244515.aspx

evg64
17-09-2009, 22:29
Я нашел способ)


$FilePath1="путь к существующему файлу"
$FilePath2="такой же путь к файлу, но с расширением .txt"

$oWordApp = _WordCreate ("",0,0)
$oDoc = _WordDocOpen ($oWordApp,$FilePath1)
_WordDocSaveAs($oDoc,$FilePath2,2)

$FileRead=FileRead($FilePath2)
msgbox(0,"AutoIT",$FileRead)
_WordQuit($oWordApp)
_WordQuit($oDoc)
filedelete($FilePath2)


P.S. Кстати через filecopy($FilePath1,$FilePath2) не прокатило)

kaster
17-09-2009, 22:38
evg64, молодец. любознательный ум это круто :up

Iska
18-09-2009, 12:05
evg64, надеюсь у Вас не 100Mb-ные файлы :). А почему не так?!
#include <Word.au3>
AutoItSetOption("MustDeclareVars", 1)

Local $sSourceFile = "c:\Temp\0001.doc"

Local $oWord = _WordCreate($sSourceFile, 0, 0)
Local $oDoc = _WordDocGetCollection($oWord, 0)

MsgBox(0, "Document text", $oDoc.Range.Text)

_WordQuit($oWord, 0)

Exit(0)

evg64
18-09-2009, 16:31
А почему не так?! »
Потому что не знаю, как устроен ворд со всеми командами типа .Range.Text :)
А в МСДН находить эту инфу все никак не научусь)

kaster
18-09-2009, 16:52
А в МСДН находить эту инфу все никак не научусь) »
не знаю как с вордом дело обстоит, но в Экселе очень много свойств и методов объектов, собственно как и их названия и родительские объекты находил с помощью макросов. то есть начинаешь писать макрос с нужными тебе объектами, делаешь нужные действия, и смотришь код макроса. очень сильно помогает

Iska
18-09-2009, 18:24
evg64, MSDN тут как раз необязателен: достаточно встроенной справки по языку целевого приложения Office (только вызывать её желательно непосредственно из редактора VBA; позже, когда начнёте ориентироваться в объектной модели приложения — можно быстро добираться до нужного раздела через поиск на панели инструментов/области задач, сразу набирая требуемое имя объекта/свойства/метода/события).




© OSzone.net 2001-2012