Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] FileRead() и файлы .doc (http://forum.oszone.net/showthread.php?t=150632)

evg64 15-09-2009 23:42 1219860

FileRead() и файлы .doc
 
Добрый день! Есть такой скрипт:
Код:

$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 1219869

потому что текстовый файл вордом открыть можно, а вот обратно - нет.
пользуй Word.au3

FlatX007 15-09-2009 23:57 1219872

Ты попробуй открыть Word`овский DOC блокнотом ... и сразу поймёш в чём дело :)

evg64 16-09-2009 20:02 1220472

Цитата:

Цитата kaster
пользуй Word.au3 »

Какую именно функцию юзать? Там нет ничего вроде _WordRead() :)

Medic84 16-09-2009 21:14 1220529

А в этом разделе все функции не судьба посмотреть?

Код:

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


evg64 17-09-2009 20:50 1221325

Цитата:

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

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

kaster 17-09-2009 21:52 1221380

Цитата:

Цитата evg64
P.S. Мне надо не открыть файл ворд, а присвоить его содержание переменной. »

ну что можно сказать, крути объектную модель ворда
http://msdn.microsoft.com/en-us/library/bb244515.aspx

evg64 17-09-2009 22:29 1221415

Я нашел способ)

Код:

$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 1221422

evg64, молодец. любознательный ум это круто :up

Iska 18-09-2009 12:05 1221728

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 1221897

Цитата:

Цитата Iska
А почему не так?! »

Потому что не знаю, как устроен ворд со всеми командами типа .Range.Text :)
А в МСДН находить эту инфу все никак не научусь)

kaster 18-09-2009 16:52 1221913

Цитата:

Цитата evg64
А в МСДН находить эту инфу все никак не научусь) »

не знаю как с вордом дело обстоит, но в Экселе очень много свойств и методов объектов, собственно как и их названия и родительские объекты находил с помощью макросов. то есть начинаешь писать макрос с нужными тебе объектами, делаешь нужные действия, и смотришь код макроса. очень сильно помогает

Iska 18-09-2009 18:24 1221970

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


Время: 12:23.

Время: 12:23.
© OSzone.net 2001-