Word2007-Format auslesen geht mglw. auch:
Unzippen, die document.xml mit dem XML-Wrapper auswerten...
Worddatei aulesen?
-
- [ offen ]
-
team2way -
4. April 2009 um 21:33 -
Geschlossen -
Erledigt
-
-
ahh cool 2003 reicht mir aber erst mal auch
wenns endlich mal funzen würd -
- Offizieller Beitrag
Hallo
Wie fast immer hilft ein beherzter Sucheingriff im Englischen Forum (5 Sekunden):
http://www.autoitscript.com/forum/index.php?showtopic=80782&hl=docMfg Spider
-
das ist schon mal nicht schlecht aber denke das ist auch in ein paar zeilen machbar...
was muss ich hier verändern das es klappt:
[autoit]
[/autoit]
#include <Word.au3>
$oWordApp = _WordCreate ("")
$oDoc = _WordDocOpen ($oWordApp, "dat.doc")
_WordDocFindReplace($oDoc, "und", "u.", 2, 0, 0, 0, 0, 0, 0, 1, 1, 0)
_WordDocSave($oDoc)
_WordDocClose($oDoc, -2, 2, 0)( es soll ja keine umwandlung stattfinden wenn das geht )
-
- Offizieller Beitrag
OK, hier mal eine Lösung (allerdings verwende ich nicht die Word.au3, sondern führe die Objektaktionen direkt aus):
[autoit]$oWord = ObjCreate("Word.Application")
[/autoit][autoit][/autoit][autoit]
$oWord.Visible = True
$oDoc = $oWord.Documents.Open ('C:\Test.doc') ; hier der KOMPLETTE Pfad zu deiner Datei
$range = $oDoc.Range
$oFind = $range.Find
With $oFind
.ClearFormatting()
.Replacement.ClearFormatting()
.Execute("SUCH-Begriff", 0, 0, 0, 0, 0, 1, 1, 0, "ERSETZEN-Begriff", 1) ; letzter Parameter 0/1/2 gibt an ob nicht/1-mal/alles ersetzt werden soll
EndWith
$oDoc.Save()$oDoc.Close
[/autoit]
$oWord.Quit -
thx...bei mir kommt hier allerdings immer die fehlermeldung:
$oDoc = $oWord.Documents.Open('Test.doc') ^ERROR
Error: The requested action with this object has faildworan könnte das liegen?
(die datei befindet sich in der scriptdir)Edit: hab grad gesehn das das eine word 2000 version ist...macht das was aus?
mfg team2way
-
Wenn im Quellcode drinsteht, das die datei in "C" gesucht wird, warum tuhst sie dann ins scriptdir ?... entweder code ändern oder Datei nach "C" packen
-
- Offizieller Beitrag
Wozu hab ich wohl daneben geschrieben: KOMPLETTEN Pfad angeben? - Warum nimmst du Hilfestellungen nicht ernst?
Denn es wird versucht im Workingdir des Word-Objekts die Datei zu öffnen - und da ist sie ja nicht. -
sry das ichs nicht dazugesagt hab...hab den code verändert auf scriptdir
Zitat$oWord.Documents.Open('Test.doc')
aber daran liegt der fehler - stimmtalso mit C:\Text.doch klappts jetzt aber es kommt wieder ein fehler in zeile 11 beim speichern
$oDoc.Save()^ERROR
Error: The requested action with this object has faildEdit: habs grad mal getestet
[autoit]
wenn man die befehle:;$oDoc.Save()
[/autoit]
;$oDoc.Close
weglässt kommt kein fehler^^
und noch mal geht das ganze auch ohne das öffnen der word datei (also verstäckt)
und der veränderte text soll dann in eine andere word datei gespeichert werden??? -
- Offizieller Beitrag
$oWord.Visible = True <== die Zeile entfernen, dann läuft es versteckt. Zum Testen ist es ganz vorteilhaft, man sieht was passiert.
Zum Speichern unter: Die Funktion hatte ich schon benannt $oDoc.SaveAs()
[autoit]
Syntax:$oDoc.SaveAs ($s_FilePath,0,0,'',0,'',0) ; den VOLLEN Pfad angeben!!
[/autoit]Und gib mal deinen kpl. Code an, der Fehler mit dem Objekt darf nicht auftreten, dann ist irgendwas anders als in meinem Bsp.
-
[autoit]
$oWord = ObjCreate("Word.Application")
[/autoit]
$oWord.Visible = True
$oDoc = $oWord.Documents.Open ('C:\Test.doc') ; hier der KOMPLETTE Pfad zu deiner Datei
$range = $oDoc.Range
$oFind = $range.Find
With $oFind
.ClearFormatting()
.Replacement.ClearFormatting()
.Execute("hallo", 0, 0, 0, 0, 0, 1, 1, 0, "ersetzt ;)", 2) ; letzter Parameter 0/1/2 gibt an ob nicht/1-mal/alles ersetzt werden soll
EndWith
$oDoc.Save()
$oDoc.Close
$oWord.Quit
hier kommt zunächst der fehler bei save und dann bei close...Edit: Auch wenn ich saveas so einbaue kommt bei mir der fehler
[autoit]$oWord = ObjCreate("Word.Application")
[/autoit]
$oWord.Visible = True
$oDoc = $oWord.Documents.Open ('C:\Test.doc') ; hier der KOMPLETTE Pfad zu deiner Datei
$range = $oDoc.Range
$oFind = $range.Find
With $oFind
.ClearFormatting()
.Replacement.ClearFormatting()
.Execute("hallo", 0, 0, 0, 0, 0, 1, 1, 0, "ersetzt ;)", 2) ; letzter Parameter 0/1/2 gibt an ob nicht/1-mal/alles ersetzt werden soll
EndWith
;$oDoc.Save()
$oDoc.SaveAs ('C:\Test2.doc',0,0,'',0,'',0) ; den VOLLEN Pfad angeben!!
$oDoc.Close
$oWord.Quit -
- Offizieller Beitrag
Ich verwende Office 2000, da geht es tadellos. Welche Version hast du?
[autoit]
Füge mal zur Fehlersuche nach Zeile 3, 4 und 10 eine Objektprüfung ein:ConsoleWrite('Objekt? = ' & IsObj($oDoc) & @CRLF)
[/autoit]
Es hat den Anschein, als ob die Referenz auf das Objekt verschwunden ist? Kann ich allerdings nicht nachvollziehen weshalb das passieren soll. -
hab auch office 2000^^
teste gleich noch malEdit: Hier mal ein Screen (das passiert nach dem Ausführen des Programms)
[Blockierte Grafik: http://team2way.redio.de/screen/errore.jpg] -