| |
VB.NET - Ein- und UmsteigerMicrosoft.Office.Word.DLLs | | | Autor: ANS | Datum: 05.01.10 11:33 |
| Hallo,
ich habe folgendes Problem: Ich steuere Word von Microsoft in meiner VB.NET-Anwendung an. Ich selbst verwende Office 2007 und habe deshalb auch einen Verweis auf "Microsoft.Office.Interop.Word" gesetzt. Auf einem PC mit Office 2003 funktioniert der Verweis dann nicht. Es kommt bei der Laufzeit zu einem Fehler [...] "culture=12". Das heißt, es kann kein Verweis bzw. keine COM mit der Versionsnummer 12 für Office 2007 gefunden werden. Wie kann ich die Verweise einbinden, dass keine Fehlermeldung erscheint (zur Laufzeit) und dass dieser Verweis dann für Office 2003, 2002, etc. funktioniert?
Danke für eure Hilfe
ANS | |
Re: Microsoft.Office.Word.DLLs | | | Autor: VB.NET2005 | Datum: 05.01.10 11:36 |
| Also ich setze in den Eigenschaften des Projekts unter Verweise Lokale Kopie des Verweises den ich brauche auf True, dann wird er mit kopiert und müsste eigentlich immer verwendbar sein. | |
Re: Microsoft.Office.Word.DLLs | | | Autor: ANS | Datum: 05.01.10 11:48 |
| Hallo, darf ich denn diesen Verweis bzw. diese DLL immer mit ausliefern? (Lizenzrestriktionen ausgeschlossen???)
Außerdem: Wenn der Kunde Office 2003 installiert hat und ich liefere den Office 2007-Verweis mit? Geht das gut? Funktioniert der Verweis dann auch? Ist der dann abwärtskompatibel?
Gruß
ANS | |
Re: Microsoft.Office.Word.DLLs | | | Autor: VB.NET2005 | Datum: 05.01.10 11:54 |
| Den Verweis wirst du wohl nicht so einfach weggeben dürfen.
Aber kannst du mit deinem Programm nicht prüfen, oder den Benutzer eingeben lassen, welche Version er hat, und zwei Programme liefern, eins für 2003 und eins für 2007? | |
Re: Microsoft.Office.Word.DLLs | | | Autor: ANS | Datum: 05.01.10 11:56 |
| Nein, ich wollte etwas universelles liefern. Ich könnte zwar überprüfen, welche Version vorliegt, aber: Ich verfüge nicht über alle DLLs (Verweise) aller Office-Word-Reihen. Darf ich diese Verweis-DLL nicht einfach weitergeben? Warum nicht?
Viele Gr??e
ANS | |
Re: Microsoft.Office.Word.DLLs | | | Autor: VB.NET2005 | Datum: 05.01.10 12:14 |
| Also ich würde die Verweise nicht weitergeben, verkaufen erst recht nicht. Sie sind doch Teil von Office und unterliegen so doch wahrscheinlich dem Copyright von Microsoft. | |
Re: Microsoft.Office.Word.DLLs | | | Autor: ANS | Datum: 05.01.10 12:22 |
| Genau. Deswegen gebe ich diese Verweise auch nicht weiter. Office muss halt installiert sein. Aber wie bekomme ich dass den nun hin, dass es funktioniert, mit allen Office-Versionen?
Viele Gr??e
ANS | |
Re: Microsoft.Office.Word.DLLs | | | Autor: ANS | Datum: 05.01.10 20:48 |
| Wie sollte ich denn nun vorgehen? Weiss denn niemand etwas dazu?
Viele Gr??e
ANS | |
Re: Microsoft.Office.Word.DLLs | | | Autor: ANS | Datum: 05.01.10 22:46 |
| Hallo Bingopark,
danke für deine Antwort! Kannst du mir ein Beispiel machen? Die Automation meint doch soetwas:
Dim oWord As Object
Dim oDoc As Word.Document
oWord = CreateObject("Word.Application")
oWord.Visible = False Ist das richtig so? D.h. dann, wenn ich obigen Code verwende, keinen Verweis mehr festlegen muss?
Wie soll ich nachfolgenden Code dann transformieren:
' Word-Objekt deklarieren
Dim oWord As Word.Application
Dim oDoc As Word.Document
oWord = New Word.Application
oWord.Visible = False
oDoc = oAppWord.Documents.Open("Datei-Pfad") Ich habe ja ein Word.Application-Objekt, welches das allgemeine Word-Programm bezeichnet und ein oDoc-Objekt, welches das spezifische Word-Dokument bezeichnet.
Freue mich auf eure Hilfe.
Viele Gr??e
ANS | |
Re: Microsoft.Office.Word.DLLs | | | Autor: ANS | Datum: 06.01.10 10:07 |
| Hallo Bingopark,
vielen Dank für deinen Tipp bzw. die Lösung, hat super funktioniert!
Viele Gr??e
ANS | |
Re: Microsoft.Office.Word.DLLs | | | Autor: johnnie | Datum: 17.01.10 13:34 |
| Der Widerspruch ergibt sich daraus, dass es tatächlich mit Verweis auf die 12.0 er nicht gegangen ist, doch dann habe ich nur hypothetisch angenommen, es würde gehen, um den Unterschied klarzumachen, dass ich ich mit Verweis auf die 10.0 besser fahren würde, da dieser auch unter Office 2007 gilt.
Deine Lösung mit dem latebinding hätte ich schon vor zwei Jahren gebraucht, da hätte ich mir viele Stunden Herumknobelei gespart.
Du bist echt klasse und hilfst mir aus einer sehr großen Not. Ich habe wirklich etwas sehr Wichtiges gelernt, vielen Dank auch noch, toll, dass es so kompetente Leute gibt. | |
Re: Microsoft.Office.Word.DLLs | | | Autor: johnnie | Datum: 18.01.10 16:32 |
| Jetzt habe ich doch doch ein Problem:die Funktion
Excel.XlDirection.xlDown geht nicht damit,(Meldung Der offentliche Member XlDirection für den Typ ApplicationClass wurde nicht gefunden), bzw. ich weiss nicht, wie ich es anders schreiben soll
Hast Du da eine Idee?
Public objXls1 As Object
Public NandexDatenBank As Object
Dim Anzahl,wsnr,Feld,feldnr as integer
Dim path as string
objXls1 = CreateObject("Excel.Application")
NandexDatenBank = objXls1.Workbooks.Open(pathWS)
'Bestimmen der Anzahl der besetzten Spalten
Anzahl = xldown(wsnr, Feld, feldnr)
Function xldown(ByVal wsnr, ByVal feld, ByVal feldnr) As Integer
objXls1 = CreateObject("Excel.Application")
Return NandexDatenBank.Worksheets(wsnr).Range(feld(feldnr)).End( _
objXls1.XlDirection.xlDown).Row
End Function | |
Re: Microsoft.Office.Word.DLLs | | | Autor: Bingopark | Datum: 19.01.10 13:57 |
| Hallo Johnnie,
ehrlich gesagt, werde ich aus der Funktion (Sinn und Zweck, Herkunft, Sytntax etc.) nicht schlau...
Was mir auffällt, ist, dass Du in Deinem Code zweimal objXls1 = CreateObject("Excel.Application") drinstehen hast.
Das hat vermutlich nichts mit der Lösung Deines Problems zu tun. Aber warum machst Du das? Ist das wirklich notwendig?
Bingopark
----
Meine Komponenten sind:
Visual Studio 2008 (Standard) SP 1
Windows 7 SP 1 | |
Re: Microsoft.Office.Word.DLLs | | | Autor: johnnie | Datum: 19.01.10 17:37 |
| Brauch Excel.xldirection.xldown If xldown(wsnr, Feld, feldnr) = 65536 Then usw. , um meine Tabelle auszulesen. Funktioniert ja auch mit Verweis, aber ich weiss nicht wie ich das mit endbinding machen soll....
Function xldown(ByVal wsnr, ByVal feld, ByVal feldnr) As Integer
Return NandexDatenBank.Worksheets(wsnr).Range(feld(feldnr)).End( _
Excel.XlDirection.xlDown).Row
End Function Ich hab´s nur doppelt(objXls1 = CreateObject("Excel.Application")), weil ich dachte, dass es bei jedem Funtkionsaufruf angebracht ist, aber vermutlich ist es wirklich überflüssig. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevOutBar 4.0
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|