![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Senior Member
![]() |
![]() Hi!
Kennt sich hier jemand ein wenig mit COM-Verweisen aus? Habe nämlich in einem Projekt einen COM-Verweis zu "Microsoft Word 11.0 Object Library" hinzugefügt, da ich in dem Programm Daten in Worddokumente exportieren will. Auf meinem Rechner funktioniert alles super (hab Office 2003), aber ich frag mich ob das Programm auch auf Rechnern mit Word 97 oder 2000 oder so funktioniert. Hat jemand Ahnung? mfG |
![]() |
![]() |
![]() |
#2 |
Inventar
![]() Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552
|
![]() Eigentlich wirds nicht funktionieren...
Der Name des Com-Objekts sagt ja schon alles: "Microsoft Word 11.0 Object Library" (und Office 11 = Office 2003) Also is 2000 Office 9 und 97 ist Office 8 (AFAIK) Und dann werden die Verweise nicht mehr im Programm stimmen. Is a ziemlicher Käse und mir würd derzeit eigentlich nicht einfallen, wie man das lösen könnte.... |
![]() |
![]() |
![]() |
#3 |
Senior Member
![]() |
![]() hmm... angenommen ich füg für jede Office-Version einen Verweis hinzu (was schwer wird, wenn ich nur Office 2003 installiert hab, oder?). Würde es dann funktionieren oder wäre da immer noch das Problem dass der Verweis auf F:\Microsoft Office\... verweist und nicht jeder Office dort installiert hat?
BTW: neben der .exe Datei, ist jetzt eine Interop.Word.dll im bin-Verzeichnis des Projekts... Hilft die vielleicht? mfG |
![]() |
![]() |
![]() |
#4 | |
Inventar
![]() Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552
|
![]() Zitat:
Und das mit den Verweisen is bei mir auch schon länger her, dass ich das mal gebraucht hab - aber eigentlich gehts nicht. Und ob es funktionieren würde wenn man alle Office Versionen - und damit auch alle unterschiedlichen Versionen des COM-Objekts auf dem Rechner hat ists denk ich auch problematisch - weil eben die anderen dann fehlen, diese aber trotzdem in den Verweisen ausgewählt sind. Du könntest probieren mit dem kleinsten gemeinsamen Nenner zu arbeiten (=älteste Version die verwendet wird) Ich bilde mir ein, dass sich das Programm dann die aktuelle Version dieser DLL nimmt, wenn nur eine neuere Version vorhanden ist. Bin mir dabei aber absolut nicht sicher, wär nur einen Versuch wert. Und die letzte Möglichkeit wäre natürlich, alles in ein Installationsarchiv (also auch die DLL) zu verpacken und dann das Ding korrekt zu installieren. Nur ob das Lizenzrechtlich dann ok is.... ![]() ![]() |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
![]() |
![]() Danke für die Antwort! Die älteste Version zu verwenden hört sich nicht schlecht an... Meinst du damit im Projekt einen Verweis auf Office 97 oder so hinzuzufügen?
Dadurch erstellt er die Interop.word.dll nehm ich mal an, und wenn der Benutzer eine neuere Version installiert hat, nimmt er die? ps: was meinst mit *alles* in ein installationsarchiv zu packen? Word selbst auch? ![]() |
![]() |
![]() |
![]() |
#6 | |
Inventar
![]() Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552
|
![]() Zitat:
Also im Projekt einen Verweis auf die DLL von Office 97. Wie gesagt, einen Versuch ists wert. Mit "alles" hab ich das Programm inkl. DLL und registrierung der DLL im System gemeint. Net das ganze Office. ![]() |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
![]() |
![]() Hi!
Habs jetzt mal mit Late Binding probiert, was bei einfachen Problemen super funktioniert, nur leider kann ich irgendwie kein Objekt von "Word" selbst anlegen... also Code:
Dim WordApp As Object Dim WordDoc As Object WordApp = CreateObject("Word.Application") WordDoc = CreateObject("Word.Document") Code:
dim Wordselbst as object Wordselbst = CreateObject("Word") bräuchte es aber in Befehlen wie zB WordApp.Selection.MoveRight(Word.WdUnits.wdCell, 1) mfG |
![]() |
![]() |
![]() |
#8 | |
Inventar
![]() Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150
|
![]() Zitat:
~
____________________________________
LOL - Mein erstes Post im Programmier Forum MACINTOSH - Most Applications Crash, If Not The Operating System Hangs |
|
![]() |
![]() |
![]() |
#9 |
Senior Member
![]() |
![]() hmm... aber wie sprech ich das Objekt (Enum oder whatever) dann an?
Code:
objWord.Selection.MoveDown(Word.WdUnits.wdLine, 1) objWord.Selection.MoveDown(WdUnits.wdLine, 1) objWord.Selection.MoveDown(wdLine, 1) objWord.Selection.MoveDown("wdLine", 1) objWord.Selection.MoveDown("Word.WdUnits.wdLine", 1) ![]() mfG |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|