Interoperabilität mit Office
Transcrição
Interoperabilität mit Office
Interoperabilität mit Office-Anwendungen (1) Durch .NET Programme (z.B. Visual Basic) können Microsoft-OfficeAnwendungen automatisiert werden. Diese Technik basiert auf den s.g. Interop-Assemblys – das sind Sammlungen von Funktionen und Objekten, die gemeinsam durch verschiedene auf der .NET Plattform ausgeführten Anwendungen benutzt werden können. Installierte Assemblys sind gelistet unter C:\Windows\assembly Peter Sobe 81 Interoperabilität mit Office-Anwendungen (2) Assemblys, verwaltet von der CLR Assembly Manifest Modul Metadaten Code Intermediate Language Typ (Klasse, Struktur) Eigenschaften Methoden Felder Peter Sobe 82 Interoperabilität mit Office-Anwendungen (3) Ein Beispiel für MS-Excel Automatisierung findet man unter http://microsoft.com/kb/301982 In Visual Studio unter Projekt: • Verweis hinzufügen • .NET Plattform auswählen • Assembly Microsoft.Office.Interop.Excel auswählen Peter Sobe 83 Interoperabilität mit Office-Anwendungen (4) Imports Microsoft.Office.Interop Dim oXL As Excel.Application Dim oWB As Excel.Workbook Dim oSheet As Excel.Worksheet oXL = CreateObject("Excel.Application") oWB = oXL.Workbooks.Add oSheet = oWB.ActiveSheet oSheet.Cells(1, 1).Value = "Artikel" oSheet.Cells(1, 2).Value = "Menge" oSheet.Cells(1, 3).Value = "Gewicht" oSheet.Cells(1, 4).Value = "Preis“ Nach Art dieses Beispiels können z.B. Berechnungsdaten als Tabelle ausgegeben werden und danach Diagramme erstellt werden. Peter Sobe 84 Interoperabilität mit Office-Anwendungen (5) Imports Microsoft.Office.Interop Dim Dim Dim Dim Dim oXL As Excel.Application oWB As Excel.Workbook oSheet As Excel.Worksheet oRng As Excel.Range eingabe As String MsgBox("Geben Sie jetzt in F2 etwas ein!") eingabe = oSheet.Range("F2").Value Display.Text = eingabe Peter Sobe 85 Interoperabilität mit Office-Anwendungen (6) Bei den bisherigen Beispielen wurde eine neue Excel-Tabelle erzeugt. Der Nutzer kann diesen unter einem neuen Dateinamen speichern. Auch das Öffnen bereits existierender Dokumente ist möglich: Const NVAL As Integer = 20 Dim eingabe(NVAL) As Single Dim oXL As Excel.Application Dim oWB As Excel.Workbook Dim oSheet As Excel.Worksheet oXL = CreateObject("Excel.Application") oWB = oXL.Workbooks.Open(“C:\usr\tabellen\experimente.xls“) oSheet = oWB.ActiveSheet REM Einlesen der Spalte (B1:B20) FOR i=1 TO NVAL eingabe(i) = oSheet.Range(„B"+Format(i)).Value NEXT i Peter Sobe 86 ADO .NET (1) Active Server Pages Application A Application B Build-InObjects Script-engine Component A ADO Component B ADO – ActiveX Data Objects, u.a. ADODB Objekt für Datenbanken übernommen von Prof.Dr.Grossmann DB DB 87 ADO .NET (2) ADO bietet ein zentrales unabhängiges Datenbankobjekt dataSet Mögliche (parallele) Nutzung relationaler Datenbanken (Tabellen-orientiert) und hierarchischer Datenbanken (XML) Trennung des Datenbankzugriffs und der Weiterverarbeitung der Daten XML als Datenaustauschformat zwischen Anwendung und Datenbank Mehr dazu im Abschnitt 4 Peter Sobe 88 VBA-Skript (1) Visual Basic ist als Skriptsprache in einige Office-Programme eingebaut, so z.B. in Excel. Skripte laufen innerhalb der Excel-Anwendung und dabei greifen auf Daten des Excel Dokuments zu. Die Sprache „Visual Basic“ wird dabei mit gleicher Syntax verwendet. Aber die von der .NET Plattform bereitgestellten Funktionen und Objektmethoden können nicht benutzt werden. Zum Beispiel Excel und die Datenbank Access besitzen eine eigene eingebaute Entwicklungsumgebung für VBA (zum Start Alt+F11) Peter Sobe 89 VBA-Skript (2) InputBox und MsgBox können benutzt werden Beispiel Peter Sobe 90 VBA-Skript (3) Zugriff auf Dokumentdaten aus VBA-Skripten am Beispiel von Excel Sichtbare Objekte: Application Workbook Arbeitsmappe Worksheet Range Peter Sobe Tabellenblatt Ausgewählte Felder 91 VBA-Skript (4) Programmierung wie in Visual Basic .NET. Ein Verbinden mit der Excel-Anwendung kann in der Skript-Umgebung aber weggelassen werden. Zugriff auf Dokumentdaten aus VBA-Skripten am Beispiel von Excel per Range: Z= ActiveSheet.Range(“M22“).Value Z=… ActiveSheet.Range(“N32“).Value = Z Range übernimmt einen String zur Identifikation der Zelle oder des Bereichs. Spalte (A, B, C, …) dann Zeile (1,2,3,.. Alternative Technik zum Auslesen und Setzen von Zellen gegenüber Range: Cells ActiveCell – muss vorher gesetzt werden Peter Sobe 92 VBA-Skript (5) Cells: Z= ActiveSheet.Cells(13,22).Value REM Angabe der Feldposition mit Zeilen- und Spaltenindex ActiveCell: Wenn vorab eine Zelle mit Activate ausgewählt wurde, kann der Bezug auf ActiveCell erfolgen Range(“F8").Activate ActiveCell.Value = 37 Eine gute Übersicht zu VBA Skriptprogrammierung findet man z.B. unter ftp://ftp.fernuni-hagen.de/pub/pdf/urz-broschueren/broschueren/b012.pdf Peter Sobe 93