(Word-Datei öffnen und) Makro ausführen
-
Hallo,
um obiges Problem zu lösen, habe ich mit u.a. mit dem Thema "MS-Word Dokument basierend auf einer Vorlage erzeugen, ausfüllen, speichern, drucken:" beschäftigt.
http://www.bytesandmore.de/rad/index.htm?http://www.bytesandmore.de/rad/cpp/main/snip_cnt.htm
Aber ich komme damit nicht weiter. Dummerweise sind (bei mir) die Office-Komponenten des Builders nicht kommentiert.
Jemand ne Idee?Gruß
Leo
-
"Ich komme nicht weiter" ist keine ausreichende Problembeschreibung.
-
Jansen schrieb:
"Ich komme nicht weiter" ist keine ausreichende Problembeschreibung.
Ich dachte, der Titel sei 'sprechend' genug.
Mein Ziel ist, den reinen Text einer Word-Datei auszulesen, also ohne Formatierungen. Dazu habe ich im Netz den Hinweis gefunden, diese Arbeit von Word aus per Makro erledigen zu lassen. Dazu möchte ich eine Word-Datei (von C++ aus) öffnen und ein Makro ausführen.
Sollte es einen einfacheren Weg geben, wäre das natürlich prima.Gruß
Leo
-
Leo Freitag schrieb:
den reinen Text einer Word-Datei aus[]lesen
Das wäre z.B. eine aussagekräftige Überschrift gewesen.
Dazu möchte ich eine Word-Datei (von C++ aus) öffnen und ein Makro ausführen.
Das hört sich wenig sinnvoll an. Üblicherweise würde man das Makro direkt in C++ nachprogrammieren.
-
Jansen schrieb:
Leo Freitag schrieb:
den reinen Text einer Word-Datei aus[]lesen
Das wäre z.B. eine aussagekräftige Überschrift gewesen.
Dazu möchte ich eine Word-Datei (von C++ aus) öffnen und ein Makro ausführen.
Das hört sich wenig sinnvoll an. Üblicherweise würde man das Makro direkt in C++ nachprogrammieren.
Danke für die konzeptionelle Hilfe.
Jetzt könnte ich noch ein wenig Anschub in Dingen 'Word-Datei öffnen' gebrauchen. Wie bereits erwähnt, gibt das Bytes&More-Beispiel das nicht her.Anbei schon mal das VBA-Makro
Dim temp temp = ActiveDocument.Path & "/" & ActiveDocument.Name temp = Mid(temp, 1, Len(temp) - 3) ActiveDocument.SaveAs FileName:=temp & "txt", FileFormat:= _ wdFormatTextLineBreaks, LockComments:=False, Password:="", _ AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _ EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _ :=False, SaveAsAOCELetter:=False
Erl. Das Dokument wird im Modus Ascii-Text mit Zeilenumbruch unter der Dateierweiterung .txt im selben Ordner gespeichert.
Gruß
Leo
-
Suchfunktion benutzen! Z.B.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-111207-and-highlight-is-word*.htmlUnd dann z.B.
Memo1->Lines->Text = WordApplication1->ActiveDocument->Content->get_Text();
PS.
Zitate bitte auf das Notwendigste beschränken. Danke!
-
Hallo,
danke für die Hilfe. Hier die fertige Lösung.
Einzige Korrektur: Um das Dokument sichtbar zu machen, muss die MethodeWordApplication1->set_Visible(true);
angewandt werden.
void __fastcall TForm3c2::btn_Word_lesenClick(TObject *Sender) { OleVariant Filename; if (OpenDialog1->Execute()) Filename = OpenDialog1->FileName; else exit(1); WordApplication1->Connect(); //Verbindung zu Word WordApplication1->Documents->OpenOld(Filename, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam); WordDocument1->ConnectTo(WordApplication1->ActiveDocument); //WordApplication1->Visible = True; //Word wird sichtbar} WordApplication1->set_Visible(true); // Text an Memo Memo1->Clear(); Memo1->Lines->Text = WordApplication1->ActiveDocument->Content->get_Text(); Sleep(3000); // um zu zeigen, dass Word wirklich sichtbar wird // Dokument schließen WordDocument1->Close(); WordDocument1->Disconnect(); // Anwendung schließen WordApplication1->Quit(); WordApplication1->Disconnect(); } //---------------------------------------------------------------------------
Gruß
Leo
-
Hallo,
das Auslesen der Word-Dokumente funktioniert - wie oben beschrieben - einwandfrei. Wenn ein Dokument jedoch passwortgeschützt ist, und der Benutzer ein falsches Passwort eingibt, oder den Button Abbruch drückt, erscheinen folgende Fehlermeldungen:
HRCHECK
(this->OpenOld(FileName, ConfirmConversions, ReadOnly, AddToRecentFiles, PasswordDocument,
PasswordTemplate, Revert, WritePasswordDocument, WritePasswordTemplate, Format,
(Word_2k::WordDocument**)&prop)) Error: 800A1520(-2146822880)@
f:\programme\borland\cbuilder6\include\vcl\Word_2k.h/7231in Zeile
WordApplication1->Documents->OpenOld(Filename, EmptyParam, EmptyParam, //das Dokument öffnen EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
und
HRCHECK
'this->get_Documents((Word_2k::Documents**)&prop)': Der RPC-Server ist nicht verfügbar.
@f:\programme\borland\cbuilder6\include\vcl\Word_2k.h/5151in Zeile
WordDocument1->ConnectTo(WordApplication1->ActiveDocument); sl->Text = WordApplication1->ActiveDocument->Content->get_Text(); // Zuweisung zu StringList
Unangenehm genug, dass überhaupt ein Fehler auftritt, aber sie lassen sich nicht einmal per try-catch abfangen. Hat jamand eine Idee?
Gruß
Leo
-
Hallo,
hier nochmal die Bitte um Hilfe. Das Auslesen von Word-Dokumenten ist der zentrale Punkt meiner Anwendung, und ich stehe echt auf dem Schlauch, wenn es mir nicht gelingt, die 'falsche' oder fehlende Passworteingabe vernünftig abzufangen.
Gruß
Leo
-
...dann spendier' der Funktion doch eine vernünftige Ausnahmebehandlung. Suche mal nach try .. catch()
Edit: OMG, der Beitrag ist von 2006.
-
Thread geschlossen wg. Spam-Bot-Angriff.
Bei Nachfragebedarf bitte per Mail an die Moderatoren wenden.