WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 31.05.2004, 23:46   #1
conio
Senior Member
 
Registriert seit: 29.12.2002
Beiträge: 107


conio eine Nachricht über ICQ schicken
Frage 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
conio ist offline   Mit Zitat antworten
Alt 01.06.2004, 07:58   #2
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

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....
renew ist offline   Mit Zitat antworten
Alt 01.06.2004, 11:46   #3
conio
Senior Member
 
Registriert seit: 29.12.2002
Beiträge: 107


conio eine Nachricht über ICQ schicken
Standard

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
conio ist offline   Mit Zitat antworten
Alt 01.06.2004, 15:47   #4
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

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....
renew ist offline   Mit Zitat antworten
Alt 01.06.2004, 16:27   #5
conio
Senior Member
 
Registriert seit: 29.12.2002
Beiträge: 107


conio eine Nachricht über ICQ schicken
Standard

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?
conio ist offline   Mit Zitat antworten
Alt 01.06.2004, 17:49   #6
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

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.
renew ist offline   Mit Zitat antworten
Alt 02.06.2004, 20:21   #7
conio
Senior Member
 
Registriert seit: 29.12.2002
Beiträge: 107


conio eine Nachricht über ICQ schicken
Standard

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
conio ist offline   Mit Zitat antworten
Alt 02.06.2004, 20:25   #8
käptn
Inventar
 
Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150


Standard

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.

~
____________________________________
LOL - Mein erstes Post im Programmier Forum

MACINTOSH - Most Applications Crash, If Not The Operating System Hangs
käptn ist offline   Mit Zitat antworten
Alt 02.06.2004, 20:54   #9
conio
Senior Member
 
Registriert seit: 29.12.2002
Beiträge: 107


conio eine Nachricht über ICQ schicken
Standard

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
conio ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:46 Uhr.


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