6.5 Zugriff auf MS Office
In diesem Abschnitt werden im Projekt MSOffice zwei Dateien mithilfe von Visual Basic erstellt, siehe Abbildung 6.31:
- ein Dokument für MS Word mit einigen Zeilen Text und einer Tabelle
- eine Arbeitsmappe für MS Excel mit einigen gefüllten Zellen
Dabei behandeln wir die grundlegenden Elemente der Objekthierarchie innerhalb der MS Office-Anwendungen.
Abbildung 6.31 Projekt »MSOffice«
Es werden zwei zusätzliche Verweise benötigt. Dazu müssen Sie das Dialogfeld Verweis-Manager öffnen, über das Menü Projekt • Verweis hinzufügen. Unter Assemblys • Erweiterungen markieren Sie die Bibliotheken Microsoft.Interop.Excel und Microsoft.Interop.Word.
Nach Betätigung des Buttons Ok erscheinen diese Verweise in der Verweisliste im Projektmappen-Explorer, siehe Abbildung 6.32. Falls die Verweisliste nicht sichtbar ist, so müssen Sie zuerst auf das Symbol Alle Dateien anzeigen klicken, im Bild das Dritte von rechts.
Abbildung 6.32 Projekt »MSOffice«, Verweisliste
Anschließend können Sie im Code-Bereich oberhalb der Klasse Form1 die folgenden Zeilen hinzufügen:
Imports Word = Microsoft.Office.Interop.Word
Imports Excel = Microsoft.Office.Interop.Excel
Public Class Form1
...
Listing 6.31 Projekt »MSOffice«, Imports-Anweisung
Damit werden zwei Namensräume aus den gleichnamigen Bibliotheken importiert und können dann innerhalb des Programms mithilfe der Kürzel Word beziehungsweise Excel genutzt werden.
6.5.1 MS Word Datei erstellen
Zunächst das Programm zur Erstellung der Word-Datei:
Private Sub cmdWord_Click(...) Handles ...
Dim objWord As Word.Application
Dim objDoc As Word.Document
objWord = CreateObject("Word.Application")
objWord.Visible = True
objWord.WindowState =
Word.WdWindowState.wdWindowStateNormal
objDoc = objWord.Documents.Add
Dim objPara As Word.Paragraph
Dim i As Integer
For i = 1 To 5
objPara = objDoc.Paragraphs.Add
objPara.Range.Text = "Zeile " & i
objPara.Range.InsertParagraphAfter()
Next
Dim objTable As Word.Table
Dim r As Integer, c As Integer
objTable = objDoc.Tables.Add(objDoc.Bookmarks.Item(
"\endofdoc").Range, 3, 5)
objTable.Borders.InsideLineStyle =
Word.WdLineStyle.wdLineStyleSingle
objTable.Borders.OutsideLineStyle =
Word.WdLineStyle.wdLineStyleDouble
For r = 1 To 3
For c = 1 To 5
objTable.Cell(r, c).Range.Text =
"r" & r & "c" & c
Next
Next
objDoc.SaveAs("C:\Temp\WordMitVB.docx")
objDoc.Close()
objWord.Quit()
End Sub
Listing 6.32 Projekt »MSOffice«, Word-Datei erstellen
Zur Erläuterung:
- Die beiden Variablen objWord und objDoc sind Verweise auf die Anwendung MS Word und auf ein Dokument innerhalb von MS Word.
- Mithilfe von CreateObject() wird ein Verweis auf eine COM-Anwendung angelegt. Hier ist dies Word.Application für die Anwendung MS Word. Über diesen Verweis kann nunmehr auf die Anwendung und die Objekte innerhalb ihrer Hierarchie zugegriffen werden.
- Die Eigenschaft Visible steht für die Sichtbarkeit der Word-Anwendung. Mithilfe der Eigenschaft WindowState legen Sie das Aussehen des Fensters fest. Die Werte stammen aus der Enumeration WdWindowState. Neben dem Wert wdWindowStateNormal gibt es noch die Werte wdWindowStateMaximize und wdWindowStateMinimize.
- Die Auflistung Documents beinhaltet die geöffneten Dokumente der Word-Anwendung. Sie ist zu Beginn leer. Mithilfe der Methode Add() wird ein neues Dokument geöffnet. Dies ist nun das aktuelle Dokument, in dem geschrieben werden kann.
- Die Variable objPara ist ein Verweis auf ein Absatz-Objekt. Innerhalb einer Schleife werden dem Word-Dokument mithilfe der Methode Add() der Auflistung Paragraphs fünf neue Absätze hinzugefügt.
- Ein Range-Objekt bezeichnet einen Bereich innerhalb des Word-Dokuments. Mit objPara.Range wird auf den Bereich des gesamten Absatzes zugegriffen. Der Eigenschaft Text dieses Bereichs wird eine Zeichenkette zugewiesen. Diese besteht aus dem Wort »Zeile« und der laufenden Nummer von 1 bis 5, siehe Abbildung 6.33.
- Ans Ende jedes neuen Absatzes wird mithilfe der Methode InsertParagraphAfter() ein Absatzende-Zeichen gesetzt. Damit wird dafür gesorgt, dass der nächste neue Absatz dahinter steht und nicht den aktuellen Absatz überschreibt.
Abbildung 6.33 Projekt »MSOffice«, Word-Dokument, Teil 1
- Die Variable objTable ist ein Verweis auf ein Tabellen-Objekt. Dem Word-Dokument wird mithilfe der Methode Add() der Auflistung Tables eine neue Tabelle hinzugefügt. Die Methode Add() benötigt drei Parameter: Ort der Tabelle, Anzahl der Zeilen und Anzahl der Spalten.
- Die Auflistung Bookmarks umfasst alle Textmarken innerhalb des Word-Dokuments. Ein Item ist eine einzelne Textmarke, die über ihren Namen erreicht werden kann. Die Textmarke mit dem Namen \endofdoc ist vordefiniert und bezeichnet das Ende des Word-Dokuments. Der Bereich (Range) dieses Dokumentendes wird mit der Tabelle belegt, sprich: die Tabelle kommt ans Ende.
- Die Auflistung Borders beinhaltet die Eigenschaften der Rahmenlinien einer Tabelle. Über die Eigenschaften InsideLineStyle und OutsideLineStyle kann man die Linienart für die Umrandung einer Zelle beziehungsweise der ganzen Tabelle festlegen. Die Werte stammen aus der Enumeration WdLineStyle, ...Single und ...Double stehen für eine durchgezogene Einzel- beziehungsweise Doppellinie.
- Mithilfe einer geschachtelten For-Schleife werden alle Zellen der Tabelle durchlaufen. Die Eigenschaft Cell eines Table-Objekts erlaubt den Zugriff auf eine einzelne Zelle. In jede Zelle werden die laufende Nummer der Zeile und der Spalte geschrieben, siehe Abbildung 6.34.
Abbildung 6.34 Projekt »MSOffice«, Word-Dokument, Teil 2
- Am Ende wird das Dokument mithilfe der Methode SaveAs() gespeichert. Es wird mithilfe von Close() geschlossen und die Anwendung Word wird mithilfe von Quit() beendet.
6.5.2 MS Excel Datei erstellen
Es folgt das Programm zur Erstellung der Excel-Datei:
Private Sub cmdExcel_Click(...) Handles ...
Dim objExcel As Excel.Application
Dim objWorkbook As Excel.Workbook
objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.WindowState = Excel.XlWindowState.xlNormal
objWorkbook = objExcel.Workbooks.Add
Dim objWorksheet As Excel.Worksheet
objWorksheet = objWorkbook.Worksheets("Tabelle1")
Dim i As Integer
For i = 1 To 5
objWorksheet.Cells(i, 1) = i
Next
objWorkbook.SaveAs("C:\Temp\ExcelMitVB.xlsx")
objWorkbook.Close()
objExcel.Quit()
End Sub
Listing 6.33 Projekt »MSOffice«, Excel-Datei erstellen
Zur Erläuterung:
- Die beiden Variablen objExcel und objWorkbook sind Verweise auf die Anwendung MS Excel und auf eine Arbeitsmappe innerhalb von MS Excel.
- Mithilfe von CreateObject() wird ein Verweis auf eine COM-Anwendung angelegt. Hier ist dies Excel.Application für die Anwendung MS Excel. Über diesen Verweis kann nunmehr auf die Anwendung und die Objekte innerhalb ihrer Hierarchie zugegriffen werden.
- Die Eigenschaft Visible steht für die Sichtbarkeit der Excel-Anwendung. Mithilfe der Eigenschaft WindowState legen Sie das Aussehen des Fensters fest. Die Werte stammen aus der Enumeration XlWindowState. Neben dem Wert xlNormal gibt es noch die Werte xlMaximized und xlMinimized.
- Die Auflistung Workbooks beinhaltet die geöffneten Arbeitsmappen der Excel-Anwendung. Sie ist zu Beginn leer. Mithilfe der Methode Add() wird eine neue Arbeitsmappe geöffnet. Dies ist nun die aktuelle Arbeitsmappe, in der zum Beispiel Zellen gefüllt werden können.
- Die Variable objWorksheet ist ein Verweis auf ein Tabellen-Objekt innerhalb einer Arbeitsmappe. Eine neu erzeugte Arbeitsmappe enthält zunächst die drei Tabellen mit den Bezeichnungen Tabelle1 bis Tabelle3.
- Auf eine einzelne Zelle einer Tabelle kann über die Eigenschaft Cells, die Nummer der Zeile und die Nummer der Spalte zugegriffen werden. Im vorliegenden Programm wird jeweils die Zeilennummer in die ersten fünf Zellen der ersten Spalte geschrieben, siehe Abbildung 6.35.
Abbildung 6.35 Projekt »MSOffice«, Excel-Arbeitsmappe
- Am Ende wird die Arbeitsmappe mithilfe der Methode SaveAs() gespeichert. Sie wird mithilfe von Close() geschlossen und die Anwendung Excel wird mithilfe von Quit() beendet.
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.