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