So funktioniert JustAnswer:
  • Fragen Sie einen Experten
    Tausende Experten in über 200 Kategorien.
  • Erhalten Sie eine professionelle Antwort
    Per E-Mail oder sofortiger Benachrichtigung, während Sie auf unserer Website warten.
    Stellen Sie ggf. weitere Anschlussfragen.
  • 100%ige Zufriedenheit garantiert
    Bewerten Sie die erhaltene Antwort.
Stellen Sie Ihre Frage an IT-Fachinformat...
IT-Fachinformatiker
IT-Fachinformatiker, Systemadministrator
Kategorie: Computer
Zufriedene Kunden: 6956
Erfahrung:  Software Entwicklung, Projekt Erfahrung, Windows-Netzwerke, Linux-Netzwerke, Windows/Linux-Server
32504664
Geben Sie Ihre Frage in der Kategorie Computer hier ein
IT-Fachinformatiker ist jetzt online.

Visual Basic Programmierung mit Visual Studio 2008: möchte

Kundenfrage

Visual Basic Programmierung mit Visual Studio 2008: möchte mich mit VB Word-Datei definieren per Microsoft.Office.Interop.Word.Document und damit auf eine Tabelle in der Word-Datei zugreifen. Leider meldet mir Visual Studio, dass "Document" im Namespace "Microsoft.Office.Interop.Word" nicht eindeutig ist. Können Sie mir weiterhelfe, woran das liegt und wie ich es beheben kann? Vielen Dank XXXXX XXXXX Grüße
Gepostet: vor 4 Jahren.
Kategorie: Computer
Experte:  IT-Fachinformatiker hat geantwortet vor 4 Jahren.
Hallo,

haben Sie als .NET-Komponente auch "Microsoft.Office.Interop.Word" gewählt? Das müssen Sie in den Verweisen explizit angeben es sollte dann auch in Ihrem Projekt folgendes existieren:

Imports Word = Microsoft.Office.Interop.Word
REM Imports Excel = Microsoft.Office.Interop.Excel '** Beispiel für Excel

Dim WordApp As Word.Application
REM Dim ExcelApp As Excel.Application '** Beispiel für Excel

Codebeispiel:

Imports Word = Microsoft.Office.Interop.Word

Dim WordApp As New Word.Application()
Dim MainDoc As Word.Document = WordApp.ActiveDocument
Dim intDocuments As Integer = 0

Welche Office Version haben Sie? Für 2003 müssen Sie z.B. folgendes installieren damit das überhaupt funktioniert:

http://www.microsoft.com/en-us/download/details.aspx?id=20923

Für Office 2007 ist es zwar per Default so, das Sie es mit .NET ansprchen können aber auch hier gibt es separat auch einen PIA:

http://www.microsoft.com/en-us/download/details.aspx?id=18346

Daher benötige ich ggf. mehr Informationen.

Gruss Günter
Kunde: hat geantwortet vor 4 Jahren.
Ich habe inzwischen fast behoben, bekomme jetzt aber beim Aufrufen von "objDoc.Tables(1).Cell(x,y).Range.Text" die Fehlermeldung "COMException wurde nicht behandelt. das angeforderte Element ist nicht in der Sammlung enthalten". Wie kann ich mir da behelfen?
Experte:  IT-Fachinformatiker hat geantwortet vor 4 Jahren.
Hallo,

also Sie müssen das natürlich so machen:

Try
'*** was auch immer Sie tun wollen
Catch
'** Fehlermeldung ausgeben
Finally
'** aufräumen ist optional
End Try


Sie müssen also den Code mit Try..End Try umschließen, damit die Ausnahme behandelt wird. Konrket:

Try
'** Ihr Code, der u.U. den Fehler verursachen wird
Catch ex As COMException
' der Fehler wird ausgelöst
Catch ex As Exception
' noch etwas zu tun
End Try

so würde es gehen.

Gruss Günter


Experte:  IT-Fachinformatiker hat geantwortet vor 4 Jahren.
Hallo, also konrket sähe das bei Ihnen in etwa so aus:

Try
'** Ihr Code, der u.U. den Fehler verursachen wird
'** weil ein Wert X zu gross ist, eine Datei nicht richtig ist usw.
Catch ex As COMException
' der Fehler wird ausgelöst
Catch ex As Exception
' noch etwas zu tun, falls erforderlich z.B. aufräumen
End Try

so würde es gehen. Das müssen Sie rein programmieren ansonsten taucht das immer wieder auf.

Gruss Günter
Kunde: hat geantwortet vor 4 Jahren.
Damit kann ich nun zwar den Fehler abfangen und der Code läuft, greift aber nicht auf die vorgegebene Zelle in der Word-Tabelle. Woran kann das liegen? Vielen Dank XXXXX XXXXX
Experte:  IT-Fachinformatiker hat geantwortet vor 4 Jahren.
Also zur Erläuterung Try..Catch..End Try sind die einzigen Möglichkeiten Fehler (Ausnahmen genannt) auzuwerten:

http://msdn.microsoft.com/de-de/library/fk6t46tz%28v=vs.80%29.aspx

eine Art On Error Goto gibt es gottsei Dank nicht mehr. Ich selbst programmiere allerdings unter .NET nur in C# das hat seine Gründe. Warum da wer nicht auf welche Zeiel auch immer nicht zugreift hat folgende Ursachen:

- die Zelle die Sie ansprechen gibt es nicht
- die Zelle ist leer
- die Datei existiert nicht oder die Tabelle existiert nicht
- die Datei ist bereits geöffnet und im exklusiven Zugriff
- der Code greift mit falschen Methoden auf eine Tabelle zu
- das Dokument ist geschützt oder gesperrt

Haben Sie es denn in etwa so gemacht

Dim WordTabelle As Word.Table
WordTabelle = WordDoc.Tables.Item(1) '** 1. Tabelle
WordTabelle.Rows.Item(1).Cells.Item(1).Select() '** 1. Zeile, 1. Zelle

danach kann man mit WordApp Selection hin und her springen, manipulieren usw.

Gruss Günter

Experte:  IT-Fachinformatiker hat geantwortet vor 4 Jahren.
Konkret sähe ein Beispiel in etwa so aus:

With WordApp.Selection
.TypeText("Ihre Tabelle")
.Move(Unit:=Word.WdUnits.wdCell, Count:=2)
.TypeText("ein Wert in einer Zelle")
End With


Die Objektnamen dürften klar sein. Wobei Word selbst natürlich aus dem Imports hervor gegangen ist.

Gruss Günter
Kunde: hat geantwortet vor 4 Jahren.
wie gebe ich Visual Basic die Worddatei, in Beispiel Test.doc, vor, aus der VB die Tabellenzelle lesen soll?
Experte:  IT-Fachinformatiker hat geantwortet vor 4 Jahren.
Hallo,

habe der Einfachheit halber mal ein komplettes Beispiel für Sie heraus gesucht:

http://www.vb-magazin.de/forums/forums/p/2515/8969.aspx

ganz unten sehen Sie, wie es in VB funktioniert sollte auch in Ihrer Version so klappen vielleicht bringt Sie das ans Ziel. Das ist ejedenfalls einfacher, als immer Codefragmente zu posten.

Gruss Günter
Kunde: hat geantwortet vor 4 Jahren.
Vielen Dank, XXXXX XXXXX es, wie ich es mir wünsche. Gruß aus dem Schwabenländle
Experte:  IT-Fachinformatiker hat geantwortet vor 4 Jahren.
Hallo,

super sehen Sie wir haben es! Ich hoffe, das ich Ihnen auch wirklich helfen konnte war und würde mich in dem Fall sehr über iene positive Bewertung einfach auf den :-) drücken freuen und danke XXXXX XXXXX herzlich dafür und bin gern weiter für Sie da!

LG Günter
IT-Fachinformatiker und weitere Experten für Computer sind bereit, Ihnen zu helfen.
Kunde: hat geantwortet vor 4 Jahren.
Hallo, eine Frage habe ich noch: wie kann ich eine ganze Tabelle aus einer Word-Datei in eine Textbox in VB einfügen?
Experte:  IT-Fachinformatiker hat geantwortet vor 4 Jahren.
Hm, also probiert habe ich das noch nicht da ich das momentan nicht benötige. Ich würde anhand des Beispiels das Sie haben vorgehen und dann Zeile für Zeile einlesen. Im einfachsten Fall würde dann eine Variable sich so darstellen:

Dim varTableValue As String

Do '** Bei Zeile 1 starten, klar steht ja auch im Beispielcode
varTableValue = varTableValue& WordTableCell
'** Move(Unit:=wdCell, Count:=X) verwenden, um in die nächste Zelle zu gelangen
'** das vorliegende Beispielzeigt dessen Verwendung
Loop Until WordTableCell = "" '** solange, bis der Wert NULL erreicht ist

Sie müssten also den Beispiel so erweitern, das Sie ihn mit der o.a. Konstruktion umschließen also einfach Zelle für Zelle durchlaufen bzw. Zeile für Zeile. Sie wissen ja, wie man auf die einzelnen Zellen und Zeilen etc. zugreift. Probieren Sie es einmal ich bin ja weiter für Sie da!

Gruss Günter
Kunde: hat geantwortet vor 4 Jahren.
Hallo, bisher klappt es ganz gut. Habe aber noch eine Frage: wie kann ich in einer Textbox in z.B. Form1.Textbox1.Text nicht in einer Zeile schreiben, sondern den zweiten Textteil in der Textbox in die nächste Zeile. In C geht das z.B. mit \n. Gibt es so etwas auch in VB?
Experte:  IT-Fachinformatiker hat geantwortet vor 4 Jahren.
achso dazu gab es in dem alten VB6 vbCrLf und in VB.NET ist das:

Environment.NewLine

exakter:

System.Environment.NewLine

alternativ ginge das hier auch noch:

Const vbCrLf = Chr(10) & Chr(13)

das führt in allen Fällen zu einer neuen Zeile. Das "\n" ist in C/C++ wie C# gültig. Vrsuchen Sie es einmal ;-)

LG Günter
Kunde: hat geantwortet vor 4 Jahren.
Hallo, super, vielen Dank. Endlich habe ich es so wie ich es mir wünsche.
Experte:  IT-Fachinformatiker hat geantwortet vor 4 Jahren.
sehr gut, das ist doch klasse! Gern stehe ich bei weiteren Fragen zur Verfügung. LG Günter

Ähnliche Fragen in der Kategorie Computer