ItsMe84 Geschrieben 27. Juni 2006 Geschrieben 27. Juni 2006 Hallo! Über folgenden Code öffne ich ein Word-Template: Dim oWord As Object Dim doc As Object oWord = CreateObject("Word.Application") doc = oWord.Documents.Add(Template:="C:/Template/Template.dot") Wie kann ich denn nun eine Tabelle ansprechen? Wenn ich hinter einem Punkt (z.B. hinter oWord.Documents) strg+space drücke, bekomme ich keine Auswahl. Warum? Danke!! Zitieren
k4fu Geschrieben 28. Juni 2006 Geschrieben 28. Juni 2006 ich geb dir mal meinen gesamten code, so wies ich mal gemacht hab (vb.net): Private Sub vWord() Dim oWord As New Word.Application Dim oDoc As New Word.Document Dim oTable As Word.Table Dim oPara1 As Word.Paragraph Dim sFileName As String Dim sSql As String Dim oRs As New ADODB.Recordset Dim i As Long Dim sVersion As String Try sFileName = oStdFct.vOpenDialog(OpenFileDialog1) oDoc = oWord.Documents.Open(FileName:=sFileName) sSql = " *** sql select *** " i = 2 oRs.Open(sSql, oConn) sVersion = oRs(1).Value While Not oRs.EOF oDoc.Tables.Item(1).Rows.Add(oDoc.Tables.Item(1).Rows.Item(2)) If oRs(1).Value <> sVersion Then oDoc.Tables.Item(1).Cell(2, 1).Range.Text = oRs(1).Value & vbNewLine & Format(Date.Now, "dd.MM.yyyy") sVersion = oRs(1).Value Else If i = 2 Then oDoc.Tables.Item(1).Cell(2, 1).Range.Text = oRs(1).Value & vbNewLine & Format(Date.Now, "dd.MM.yyyy") Else oDoc.Tables.Item(1).Cell(2, 1).Range.Text = oRs(1).Value End If End If oDoc.Tables.Item(1).Cell(2, 2).Range.Text = oRs(0).Value oDoc.Tables.Item(1).Cell(2, 3).Range.Text = oRs(2).Value i = i + 1 oRs.MoveNext() End While oRs.Close() Dim a, b, c As Object oWord.Documents.Save(a, oWord.Documents.Close(a, b, c) Catch ex As Exception MsgBox(Err.Description & vbNewLine & _ "Entweder ist das Worddokument bereits offen oder wurde nicht korrekt geschlossen.", MsgBoxStyle.Critical) Exit Function End Try End Function[/code] Zitieren
DevHB Geschrieben 28. Juni 2006 Geschrieben 28. Juni 2006 Hi, Wenn ich hinter einem Punkt (z.B. hinter oWord.Documents) strg+space drücke, bekomme ich keine Auswahl. Warum das kommt daher, dass Du die Word - Lib nicht eingebunden hast: Menü->Projekt->Verweise->Microsoft Word XX Lib : Haken setzen. Ansonsten schau Dir mal dies an, sehr informativ: http://www.activevb.de/rubriken/faq/faq0015.html Zitieren
DevHB Geschrieben 28. Juni 2006 Geschrieben 28. Juni 2006 ich geb dir mal meinen gesamten code, so wies ich mal gemacht hab (vb.net): Private Sub vWord() Dim oWord As New Word.Application Dim oDoc As New Word.Document Dim oTable As Word.Table Dim oPara1 As Word.Paragraph Dim sFileName As String Dim sSql As String Dim oRs As New ADODB.Recordset Dim i As Long Dim sVersion As String Try sFileName = oStdFct.vOpenDialog(OpenFileDialog1) oDoc = oWord.Documents.Open(FileName:=sFileName) sSql = " *** sql select *** " i = 2 oRs.Open(sSql, oConn) sVersion = oRs(1).Value While Not oRs.EOF oDoc.Tables.Item(1).Rows.Add(oDoc.Tables.Item(1).Rows.Item(2)) If oRs(1).Value <> sVersion Then oDoc.Tables.Item(1).Cell(2, 1).Range.Text = oRs(1).Value & vbNewLine & Format(Date.Now, "dd.MM.yyyy") sVersion = oRs(1).Value Else If i = 2 Then oDoc.Tables.Item(1).Cell(2, 1).Range.Text = oRs(1).Value & vbNewLine & Format(Date.Now, "dd.MM.yyyy") Else oDoc.Tables.Item(1).Cell(2, 1).Range.Text = oRs(1).Value End If End If oDoc.Tables.Item(1).Cell(2, 2).Range.Text = oRs(0).Value oDoc.Tables.Item(1).Cell(2, 3).Range.Text = oRs(2).Value i = i + 1 oRs.MoveNext() End While oRs.Close() Dim a, b, c As Object oWord.Documents.Save(a, oWord.Documents.Close(a, b, c) Catch ex As Exception MsgBox(Err.Description & vbNewLine & _ "Entweder ist das Worddokument bereits offen oder wurde nicht korrekt geschlossen.", MsgBoxStyle.Critical) Exit Function End Try End Function[/code] Ich würde, wenn ich schon .NET mache, auch ADO.NET verwenden und nicht ADODB, da fallen doch die schönen neuen Techniken unter den Tisch... Zitieren
k4fu Geschrieben 28. Juni 2006 Geschrieben 28. Juni 2006 hö? welche neuen techniken? das war mein erstes programm mit vb.net bin da noch nicht so fit... was für vorteile hat das? ich mein, für mich reicht adodb hier auch... Zitieren
DevHB Geschrieben 28. Juni 2006 Geschrieben 28. Juni 2006 Hi, sicher kann ADO reichen (in manchen Fällen reicht auch DAO anstatt ADO), doch hat ADO.NET ein neues Konzept und ist zukunftsicherer. Hier ein Artikel ("Was ist neu in ADO.NET?") http://www.aspheute.com/artikel/20001031.htm sondern bietet ernstzunehmende Vorteile in der Programmierung, Wartung, Performance und dem Datenaustausch zwischen einzelnen Komponenten, der auf dem universellen XML Standard basiert Wesentlicher Vorteil ist, dass ADO.NET verbindungslos arbeitet, d.h. die Daten werden im lokalen Speicher des Anwenders gehalten und man hat nicht ständig irgnedwelche Connections offen. Zitieren
ItsMe84 Geschrieben 29. Juni 2006 Autor Geschrieben 29. Juni 2006 Danke ... Hat funktionniert!! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.