WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Frage zu COM-Verweisen (Word) in VB.net (http://www.wcm.at/forum/showthread.php?t=135713)

conio 31.05.2004 23:46

Frage zu COM-Verweisen (Word) in VB.net
 
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

renew 01.06.2004 07:58

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....

conio 01.06.2004 11:46

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

renew 01.06.2004 15:47

Zitat:

Original geschrieben von conio
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

wegen der dll bin ich jetzt überfragt.

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.... :confused: :rolleyes:

conio 01.06.2004 16:27

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? ;)

renew 01.06.2004 17:49

Zitat:

Original geschrieben von conio
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? ;)

ja genau.
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. ;) Aber wie gesagt, ich denke nicht, dass das Lizenzrechtlich dann in Ordnung geht.

conio 02.06.2004 20:21

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")

funktioniert super, aber wenn ich mit
Code:

dim Wordselbst as object
Wordselbst = CreateObject("Word")

ein Objekt von Word anlegen will, bekomm ich nen Fehler...

bräuchte es aber in Befehlen wie zB
WordApp.Selection.MoveRight(Word.WdUnits.wdCell, 1)


mfG

käptn 02.06.2004 20:25

Zitat:

Original geschrieben von conio

funktioniert super, aber wenn ich mit
Code:

dim Wordselbst as object
Wordselbst = CreateObject("Word")

ein Objekt von Word anlegen will, bekomm ich nen Fehler...

bräuchte es aber in Befehlen wie zB
WordApp.Selection.MoveRight(Word.WdUnits.wdCell, 1)


mfG

Dafür brauchst du kein Objekt instantiieren, diese Enums (oder wich auch immer das in VB heißen mag) sind statisch.

~

conio 02.06.2004 20:54

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)

funktionieren alle 5 nicht... Bei den ersten 3 zeigt er einen Syntax-Fehler an, auch wenn ich diesen ignoriere tut sich nix im Dokument. Die anderen zwei nimmt er zwar von der Syntax her, aber es tut sich ebenfalls nix im Dokument... :(



mfG


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag