WORD 2007-Dateiformate .dotx und .docx machen Probleme

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Antworten
WilfriedK
Rookie
Rookie
Beiträge: 18
Registriert: Mi, 28. Mai 2008 20:18

WORD 2007-Dateiformate .dotx und .docx machen Probleme

Beitrag von WilfriedK »

Hallo,

mit den .DOTX und .DOCX- Formaten von WORD2007 habe ich Probleme.
Habe das FEED.PRG aus den Alaska-samples zu activeX und WORD etwas abgewandelt:

- Mit WORD2007 eine Vorlage erstellt - und im WORD-2007-Format als "Beispiel.dotx" abgespeichert.
- BOOKMARKS ausfüllen klappt.
- Document als "Beispiel.docx" abspeichern klappt auch.

Das Document "Beispiel.docx" mit WORD aufrufen funktioniert jedoch nicht - es kommt eine Fehlermeldung:
Die Datei "Beispiel.docx" kann nicht geöffnet werden, da ihr Inhalt Probleme verursacht."

Wenn ich dieselbe Vorlage als "Beispiel.dot" im Format WORD2003 abspeichere und das Ergebnis als "Beispiel.doc" funktioniert alles.

Hat jemand eine Ahnung wie man mit den WORD2007-Dateiformaten .dotx und .docx umgeht??

Word wurde wie folgt angesprochen: oWord := CreateObject("Word.Application.12")

Wo liegt wohl der Fehler??

Grüße Wilfried
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: WORD 2007-Dateiformate .dotx und .docx machen Probleme

Beitrag von Koverhage »

Wilfried,

probier es mal so:

oWord := CreateObject("Word.Application")

Bei mir funktioniert das mit allen Office Versionen, von 97/2003 bis 2010
Gruß
Klaus
WilfriedK
Rookie
Rookie
Beiträge: 18
Registriert: Mi, 28. Mai 2008 20:18

Re: WORD 2007-Dateiformate .dotx und .docx machen Probleme

Beitrag von WilfriedK »

Hallo Klaus,
viele Grüsse nach Aalen.

mit oWord := CreateObject("Word.Application") habe ich angefangen - weils so in den Beispielen steht. Wegen der Probleme habe ich dann wegen des .xml-Formats versuchsweise umgestellt auf oWord := CreateObject("Word.Application.12") - jedoch mit gleichem Ergebnis. (Habe es gerade nochmals gegengecheckt.)

Zwischenzeitlich hatte ich mal die Meldung:

Fehler Automation/6500
Beschreibung: Der Konverter mswrd632.wpc kann von Word nicht gestartet werden.
Operation: open
Betriebsystem Fehler: -2146823156


MICROSOFT schreibt hierzu (leider kein englisches Original gefunden):
Bekannte Probleme mit diesem Sicherheitsupdate
Wenn eine Datei enthält ".doc" oder ".docx" Dateinamenerweiterung, aber der Inhalt ist eine nur-Text-Datei oder eine andere Art von Datei, eine Microsoft Word-Binärdatei nicht ist, und diese Datei in Microsoft Word geöffnet wird, wird möglicherweise die folgenden Fehlermeldung bis zu dreimal vor Microsoft Office Word die Datei geöffnet wird:

"Word kann den Konverter-mswrd632 nicht starten."

Um dieses Problem zu beheben, kann ein betroffene Benutzer den Konverter mswrd632 aufgehoben werden. Um den mswrd632-Konverter für Sie die Registrierung lassen möchten, gehen Sie zu den "Fix it for me"Abschnitt. Wenn Sie den Konverter mswrd632 lieber selbst unregister würde, fahren Sie mit dem "Lassen Sie mich manuell beheben" Abschnitt.

Auch nach dem "Fix it" immer noch der gleiche Fehler.

P.S.: Die fehlerhafte .docx-Datei ist weniger als halb so groß wie die .doc-Datei.

Habe die XBase++ Version 1.90.331 ausgeliefert 2008 - damals war Word2007 noch relativ neu. Kanns daran liegen?

Grüße Wilfried
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: WORD 2007-Dateiformate .dotx und .docx machen Probleme

Beitrag von Muecke »

Hallo Wilfried

Ich habe mit Word keine Probleme.
Nur arbeite ich mit SL1.Gib doch mal ein wenig Codeschnipsel, vielleicht sieht man da was.

Mal ne andere Frage, hast Du den converter installiert für .Doc, damit man mit 2007/2010 das Doku öffnen/speichern kann??

Gruss Thomas
WilfriedK
Rookie
Rookie
Beiträge: 18
Registriert: Mi, 28. Mai 2008 20:18

Re: WORD 2007-Dateiformate .dotx und .docx machen Probleme

Beitrag von WilfriedK »

Hallo Thomas,

hier der code:

#include "activex.ch"

Code: Alles auswählen

//////////////////////////////////////////////////////////////////////
// ersetzt in WORD-Vorlage im Testbereich Platzhalter durch Variablen-Text
//
// Sucht ein Lesezeichen cBM ueber seinen Namen in einer Sammlung
// (Collection) von Lesezeichen (Bookmarks). Den Lesezeichen wird dann ein
// neuer Wert (cValue) zugewiesen.
//////////////////////////////////////////////////////////////////////

* --------------------------------------------------------------------------------

PROCEDURE main
  LOCAL cDir,cFile, cSave
  LOCAL aData := {}
  LOCAL lWordFinished := .f.

  cDir := CurDrive()+":\"+CurDir()              // Pfad für Word.dot

* cFile := cDir +"\WKTest02.dotx"               // gibt Fehler beim Öffnen der Datei
* cSave := cDir +"\WKTest02.docx"               // gibt Fehler beim Öffnen der Datei

  cFile := cDir +"\WKTest02.dot"                // so funktionierts
  cSave := cDir +"\WKTest02.doc"                // so funktionierts

  WordFillDocument(cFile,aData,cSave,.F.)       // Word-Vorlage *.dot ausfüllen
                                                // und als      *.doc speichern
  ?
  ?
  ? "WORD Dokumentvorlage: "
  ? cFile
  ? " ist komplett ausgefüllt"
  ?
  ? "neues Dokument  : "
  ? cSave
  ?
  ? "Zum Bearbeiten des Dokuments weiter mit irgendeiner Taste ... "
  inkey(0)                                      // REM 0% Prozessorauslastung
  CLEAR

* WORD öffnen, wenn Document überarbeitet und/oder ausgedruckt werden soll

* oWord := CreateObject("Word.Application.12")
  oWord := CreateObject("Word.Application")
  IF Empty( oWord )
    MsgBox( "Microsoft Word ist nicht installiert --> Abbruch" )
    RETURN
  ENDIF
  oWord := oWord:dynamicCast(ActiveXObject())

  oWord:Quit := {||lWordFinished := .T.}
  lWordFinished := .f.                          // NEU
  oWord:visible := .T.

  oWord:documents:open( cSave )                 // hier Fehler bei .dotx
  oDoc := oWord:ActiveDocument

  Do WHILE !lWordFinished                       // warten bis Anwender WORD schließt
     inkey(0.01)                                // Schleife "am Leben" halten
  EndDo

  MsgBox('Word ist beendet  > weiter mit irgendeiner Taste oder click')

RETURN
* -----------------------------EOF Main-------------------------------------------

// WORD-Dokument öffnen und Bookmarks/Lesezeichen ersetzen
// mehrfach wiederkehrende Variablen im Textbereich der Vorlage ersetzen
// Bookmarks/Lesezeichen in den Kopfzeilen und Fusszeilen ersetzen
FUNCTION WordFillDocument(cFile,aData,cSaveAs,lPrint)
* #define CRLF fehlt
  LOCAL oWord,oBM,oDoc
  LOCAL lWordFinished := .f.

  LOCAL BAdresse   := "Architekturbüro "+CHR(13)+CHR(10)+;
                      "Maier & Kollegen" +CHR(13)+CHR(10)+;
                      "z.H. Herr Meier sen." +CHR(13)+CHR(10)+;
                      "Allee 44"+CHR(13)+CHR(10)+"90011 Nürnberg"

                      // Kopfzeile = nur 1 Zeile - anders formatieren:
  LOCAL BAdresse02 := "Architekturbüro " + "Maier & Kollegen" + "Allee 44" + "90011 Nürnberg"
  LOCAL BAnrede    := "r Herr Maier"

  LOCAL RAdresse   := "Hugo Müller GmbH"+CHR(13)+CHR(10)+;
                      "Bauunternehmung" +CHR(13)+CHR(10)+;
                      "z.H. Herr Müller jun." +CHR(13)+CHR(10)+;
                      "Bahnhofstrasse 22"+CHR(13)+CHR(10)+"70111 Stuttgart"

                      // Kopfzeile = nur 1 Zeile - anders formatieren:
  LOCAL RAdresse02 := "Hugo Müller GmbH"+ "Bauunternehmung" + "Bahnhofstrasse 22" + "70321 Stuttgart"

  LOCAL BObjekt    := "Paulinenstrasse 22 in 89011 München"

  LOCAL BDatum     := '14.05.2011'
  LOCAL APreis     := '¯ 160.--'

  // Erzeugen einer ActiveX-Komponente
* oWord := CreateObject("Word.Application.12")
  oWord := CreateObject("Word.Application")
  IF Empty( oWord )
    MsgBox( "Microsoft Word ist nicht installiert" )
  ENDIF
  oWord := oWord:dynamicCast(ActiveXObject())

  oWord:Quit := {||lWordFinished := .T.}
  lWordFinished := .f.                       // NEU
  oWord:visible := .f.                       // ohne Anzeige gehts schneller

  oWord:documents:open( cFile )              // Word Document öffnen
  oDoc := oWord:ActiveDocument               // Word Document öffnen
  oBM  := oDoc:Bookmarks                     // Lesezeichen - Bookmarks
                                             // erforderlich für Kopf-Fusszeile

* Innerhalb des Textteils mehrfach ersetzen:
  ReplaceInWord(oWord,"#BAdresse",BAdresse)  // Briefadresse     eintragen
  ReplaceInWord(oWord,"#BAnrede" ,BAnrede )  // Briefadresse     eintragen
  ReplaceInWord(oWord,"#RAdresse",RAdresse)  // Rechnungsadresse eintragen

* jetzt fehlen noch die Kopf- und Fusszeilen - geht nur über Bookmarks
* mehrfach-ersetzen in anderen WORD-Abschnitten über anders benannte Bookmarks
* es wird jedoch dieselbe Programmvariable verwendet
* REM: ein Bookmark-Name darf nicht mehrfach vorkommen
  ReplaceBookmark(oBM , "BAdresse02"  , BAdresse02 )  // Kopfzeile ersetzen in Abschnitt 1
  ReplaceBookmark(oBM , "BAdresse03"  , BAdresse02 )  // Kopfzeile ersetzen in Abschnitt 3

  ReplaceBookmark(oBM , "RAdresse02"  , RAdresse02 )

  IF(ValType(cSaveAs)=="C")
    oDoc:saveas(cSaveAs)                     // abspeichern des ausgefüllten Dokuments
                                             // unter neuem Namen
  ENDIF

  oDoc:close()                               // Document schliessen
  oWord:Quit()                               // WORD beenden
  oWord:destroy()                            // Object zerstören
RETURN NIL

* -------------------------EOF WordFillDocument-----------------------------------

//  Danke an Andreas aus dem Forum:  //////

    Function ReplaceInWord(oWord,cFindText,cRepText)
    local lFound

        lFound := .T.
        do while lFound
          oWord:Selection:Find:ClearFormatting()
          oWord:Selection:Find:Text := cFindText
          oWord:Selection:Find:Replacement:ClearFormatting()
          oWord:Selection:Find:Replacement:Text := cRepText
          oWord:Selection:Find:Forward := .T.
          oWord:Selection:Find:Wrap := 1 // FindContinue ??
          oWord:Selection:Find:Format := .F.
          oWord:Selection:Find:MatchCase := .F.
          oWord:Selection:Find:MatchWildcards := .F.
          oWord:Selection:Find:MatchAllWordForms := .F.
          oWord:Selection:Find:MatchWholeWord := .F.
          lFound := oWord:Selection:Find:Execute()
          if lFound # NIL .and. lFound
            oWord:Selection:Text := cRepText
            oWord:Selection:Find:ClearFormatting()
          endif
          if lFound = nil
            lFound := .F.
          endif
        enddo
    return nil
* -------------------------EOF ReplaceInWord--------------------------------------

FUNCTION ReplaceBookmark(oBM,cBM,cValue)
  LOCAL lRet := oBM:Exists(cBM)
  LOCAL oF
  IF(lRet)
    ? "Ersetze ", cBM, " mit ", cValue     // nur zur Visualisierung
    oF := oBM:Item(cBM)
    oF:Range:Text := cValue
    oF:Destroy()
  ENDIF
RETURN(lRet)
* -------------------------EOF ReplaceBookmark------------------------------------
Grüsse
Wilfried
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: WORD 2007-Dateiformate .dotx und .docx machen Probleme

Beitrag von Muecke »

Wilfried

Warum willst Du überhaupt eine Vorlage geben mit dotx???
Wenn Du jemand in der Kundschaft mit altem Word hast, können die dies gar nie benutzen.

Ich gebe momentan alles mit .dot.Damit habe ich bis auf Office 2010 keine Probleme.Dies setzt voraus das der Converter installiert ist.
Der ist nicht nur für dot, sondern auch für die alten Worddaten wieder speichern zu können.( Kompatiblität nach unten ).

Schöne Grüsse
Thomas
WilfriedK
Rookie
Rookie
Beiträge: 18
Registriert: Mi, 28. Mai 2008 20:18

Re: WORD 2007-Dateiformate .dotx und .docx machen Probleme

Beitrag von WilfriedK »

Hallo Thomas,

der Grund für das .dotx ist einfach:
Bin nicht gerade ein enthusiastischer Anhänger von WORD. Habe daher erst 2008 mit WORD angefangen - mit der Version 2007. Mit der wurden Vorlagen erstellt - im Format .docx, d.h. bei mir gibt es nicht eine einzige .dot-Vorlage.

Jetzt erste Versuche gemacht mit dem feed.prg von Alaska. Hat soweit funktioniert. Der erste Versuch mit meinen eigenen Vorlagen ging allerdings natürlich gleich wieder mal voll in die Hose - aus den o.g. Gründen. Und ich weiss bis jetzt noch nicht wieso.

Wenn ich jetzt mit den .dot-Vorlagen weitermache, habe ich sehr bald jeweils 30 verschiedene .dots und .dotxs auf dem PC und bin zudem mit den .dots nicht mehr auf dem neuen Stand und muß vielleicht bald wieder alles ändern (wenn "WORD 2012" kommt), das mit den .dots nicht mehr klarkommt.

Zum Konverter:
Habe von der Microsoft-Homepage dieses FIX-IT machen lassen. Denke mal, daß MS den Konverter installiert hat, kann jedoch nicht beurteilen, ob dem tatsächlich so ist. Oder gibt es noch einen converter für Xbase?

P.S. Du schreibst Du arbeitest mit "SL1" - was ist denn "SL1" ????.

Grüße Wilfried
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: WORD 2007-Dateiformate .dotx und .docx machen Probleme

Beitrag von Muecke »

Wilfried
schau dich mal im Forum um, da gibt es doch Beispeiele die laufen.Auch mit DOTX

Werde mal die testen bei mir

Gruss Thomas
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: WORD 2007-Dateiformate .dotx und .docx machen Probleme

Beitrag von Martin Altmann »

Moin Wilfried,
WilfriedK hat geschrieben:P.S. Du schreibst Du arbeitest mit "SL1" - was ist denn "SL1" ????.
damit meint er den ServiceLevel 1 für Xbase++ von Alaska. Den braucht es schon, um sinnvoll(er) mit ActiveX arbeiten zu können.
Weitere Infos dazu auf der Alaska-Seite: ftp://ftp.alaska-software.com/documents ... sl1-de.pdf

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: WORD 2007-Dateiformate .dotx und .docx machen Probleme

Beitrag von AUGE_OHR »

Martin Altmann hat geschrieben:damit meint er den ServiceLevel 1 für Xbase++ von Alaska. Den braucht es schon, um sinnvoll(er) mit ActiveX arbeiten zu können.
oder noch besser hole dir von Alaskas Website das SL1 Upgrade. ( Login erforderlich )

Die "volle" Version bekommst du nur mit aktiver Subscription aber der "Patch" ist "free"
( benötigt original Installation der v1.9.331 ) und auch ohne aktive Subscription downloadbar.

für Artica ist übrigens die SL1 (+ Hotfixe ) Voraussetzung !
gruss by OHR
Jimmy
Antworten