Ulrich Stein 30.08.2015



Ähnliche Dokumente
2 7 Erweiterungen. 7.1 Prozess-Kommunikation mit Datenbanken

Installation des Add-Ins für Lineare Algebra in Microsoft Excel

Installation des Zertifikats

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.

Installation von Zertifikaten

32.4 Anpassen von Menüs und Symbolleisten 795i

Access und die andern (Office) Programme. Armin Hess

Professionelle Seminare im Bereich MS-Office

Bayerische Versorgungskammer

Outlook 2000 Thema - Archivierung

Einrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Arbeiten mit dem Outlook Add-In

Internet online Update (Internet Explorer)

esms - sms senden & empfangen mit Outlook

... unser Service fur Sie:

Installation des Zertifikats. Installationsanleitung für Zertifikate zur Nutzung des ISBJ Trägerportals

xcall White Paper Wählen-Buttons in Excel

Erweiterung der CRM-Datenbank für den Umgang mit Excel-Mappen. Automatisches Ausfüllen von MS-Excel-Vorlagen mit Daten aus organice

iphone-kontakte zu Exchange übertragen

Kurzbeschreibung S&S Arbeitszeiterfassung

Kurzeinführung Excel2App. Version 1.0.0

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Frankieren in Microsoft Word mit dem E Porto Add in der Deutschen Post

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

Handbuch ECDL 2003 Basic Modul 5: Datenbank Access starten und neue Datenbank anlegen

Handbuch ECDL 2003 Professional Modul 2: Tabellenkalkulation Vorlagen benutzen und ändern

MailUtilities: Remote Deployment - Einführung

Registrierungsanleitung Informatik-Biber

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern

Ihre Outlook-Konfiguration ist fehlgeschlagen und es funktioniert nichts mehr? Dann bitte hier weiter!

SEMINAR Modifikation für die Nutzung des Community Builders

Vergleich: Positionen der Word 2003-Befehle in Word

Hilfe zum Antragsformular

Einkaufslisten verwalten. Tipps & Tricks

Dossier: Rechnungen und Lieferscheine in Word

Im folgenden Text wird beschrieben, wie Sie eine Signatur für Ihren client anlegen. Bitte folgen Sie den entsprechenden Anweisungen.

Lizenzen auschecken. Was ist zu tun?

Quartalsabrechnung! " " " " " " " Stufe 1! Beheben von Abrechnungsfehlern" Stufe 2! Neue Abrechnung erstellen"

1 Voraussetzungen für Einsatz des FRITZ! LAN Assistenten

Modul 7: Übungen zu - Tabellen als Mail oder im Web veröffentlichen

Die Erstellung eigener Strukturprofile

Einrichten des -Clients (Outlook-Express)

Kurzanleitung zum Einrichten von konten für Outlook Express 6

Internet online Update (Mozilla Firefox)

Dateipfad bei Word einrichten

Wichtige Information zur Verwendung von CS-TING Version 9 für Microsoft Word 2000 (und höher)

Aktivierung von Makros in den Erfassungshilfen

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG

Programm GArtenlisten. Computerhinweise

Erklärung zum Internet-Bestellschein

Übersicht... 2 Dateiupload... 3 Administratorfunktionen... 4

1. Einführung. 2. Die Mitarbeiterübersicht

Leere Zeilen aus Excel-Dateien entfernen

Hinweis, sofern Sie Probleme beim Download der Excel-Dateien für das LIOS-Makro haben:

Schritt 2: Konto erstellen

KURZANLEITUNG CLOUD OBJECT STORAGE

Argelander Institut für Astronomie. Persönliche Website

Schrittweise Anleitung zur Installation von Zertifikaten der Bayerischen Versorgungskammer im Mozilla Firefox ab Version 2.0

Interoperabilität mit Office-Anwendungen (1)

Microsoft Dynamics NAV 2013 R/2 Installationsanleitung. Inhalt: Begleitmaterial des ERP Übungsbuchs:

Installationsanleitung SSL Zertifikat

Excel Pivot-Tabellen 2010 effektiv

Lieferschein Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

AGFA ORBIS eportal / Orbis Web

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

Task: Nmap Skripte ausführen

Anleitung zum Einspielen der Demodaten

OUTLOOK-DATEN SICHERN

Kursangebot gesammelt einlesen

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel für Mac. amac-buch Verlag

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Innerhalb der Entwicklungsebene werden Makros in einem sog. zu einer Arbeitsmappe gehörenden Modul gespeichert.

Zur drittletzten Zeile scrollen

Einrichtung eines -konto mit Outlook Express

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

5.2 Neue Projekte erstellen

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

Durchführung der Datenübernahme nach Reisekosten 2011

Hinweis zu aktiven Inhalten von Dateien

Anwenderdokumentation AccountPlus GWUPSTAT.EXE

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Psyprax GmbH. Netzwerk Installation unter XP. Wichtig für alle Netzwerkinstallationen: Psyprax GmbH

SMS4OL Administrationshandbuch

Whitepaper. Produkt: combit address manager STAMPIT der Deutschen Post nutzen. combit GmbH Untere Laube Konstanz

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Excel 2010 Kommentare einfügen

DOS-Sympas Scope Dateien in Excel einlesen

Tipps und Tricks zu Netop Vision und Vision Pro

Fotos in Tobii Communicator verwenden

Sicherheitseinstellungen... 2 Pop-up-Fenster erlauben... 3

Materialupload. Verwalten von Unterrichtsmaterialien. über das STiNE-Webportal. Universität Hamburg Tor zur Welt der Wissenschaft

Erste Schritte. für Administratoren/innen (Schoolpark-Schulverantwortliche) - Erstellung von Teams in Schoolpark

MICROSOFT OFFICE. Inhaltsverzeichnis

Leitfaden zum Umgang mit Mautaufstellung und Einzelfahrtennachweis

Einrichten eines POP-Mailkontos unter Thunderbird Mail DE:

Inhaltsverzeichnis. 1. Empfängerübersicht / Empfänger hinzufügen 2. Erstellen eines neuen Newsletters / Mailings 3. Versand eines Newsletters

Einrichtung Konto Microsoft Outlook 2010

Transkript:

4.8.2 Kontakt zu MS-Excel Prozess-Kommunikation am Beispiel von Excel 2002 (Tabellenkalkulation im MS-Office-XP-Paket) von MATLAB aus an die Daten und Methoden eines laufen Excel-Prozesses anschließ als Vergleich diese Abfragen mit Hilfe von VBA (Visual Basic for Applications) Kontakt zu Excel über Start eines Excel-COM-Servers: h = actxserver( 'progid' ); progid: Programm-ID des COM-Servers, hier 'Excel.Application', siehe z.b. MS-Registry h: Rückgabewert = Handle des COM-Objekts zum Standard-Interface dieses Servers >> h = actxserver ( 'Excel.Application' ) h = COM.Excel_Application h hat insgesamt nur zwei Interfaces: >> hint = h.interfaces hint = 'AppEvents' '_Application Server-AppEvents z.z. von MATLAB nicht unterstützt, '_Application' ist Standard-Interface h Übersicht über Daten und zusätzliche Interfaces >> h.get ActiveSheet: [] Workbooks:[1x1 Interface.Microsoft_Excel_10Workbooks] Visible: 0 Den Prozess Excel sichtbar machen: >> h.visible = 1; Workbooks (Arbeitsmappen) ist zusätzliches Interface: >> hwbs = h.workbooks hwbs = Interface.Microsoft_Excel_10.0_Object_Library.Workbooks Informationen zu den Arbeitsmappen: >> hwbs.get Count: 0 Informatik 2 1

Methoden (Funktionen) zum Workbooks-Interface >> hwbs.methods Methods for class Interface.Microsoft_Excel_10.0_Object_Library.Workbooks: Add Open delete release CanCheckOut OpenDatabase deleteproperty set CheckOut OpenText events Close OpenXML get Item addproperty invoke genauere Informationen zur Syntax der Methoden: >> hwbs.invoke Add = handle Add(handle, Variant(Optional)) Add fügt neue Arbeitsmappe in Excel hinzu: >> Mappe = hwbs.add Mappe = Interface.Microsoft_Excel_10.0_Object_Library._Workbook Sheets (Tabellen): Methode des Arbeitsmappen-Interfaces >> Tabellen = Mappe.Sheets Tabellen = Interface.Microsoft_Excel_10.0_Object_Library.Sheets Wie viele Tabellen in Arbeitsmappe: >> Tabellen.Count ans = 3 Eine Tabelle ansprechen (get) und aktivieren (Activate): >> Tab1 = Tabellen.get( 'Item', 1 ) Tab1 = Interface.Microsoft_Excel_10.0_Object_Library._Worksheet >> Tab1.Activate Über Tab1 oder alternativer Zugriff direkt über Handle h, um Bereich (Range) auszuwählen: >> Bereich = Tab1.get( 'Range', 'A1:A3' ) oder über h: >> Bereich = h.activesheet.get( 'Range', 'A1:A3' ) Bereich = Interface.Microsoft_Excel_5.0_Object_Library.Range Daten (Value) in diesen Bereich schreiben: >> Bereich.Value = [ 8; 2.5; pi; ]; Informatik 2 2

Daten auslesen (get / Value): >> Zelle = h.activesheet.get( 'Range', 'A2' ); >> Wert = Zelle.Value Wert = 2.5000 Zelle mit Activate als aktive Zelle: >> Zelle.Activate; Daten der Zelle (get): >> Zelle.get Column: 1 Row: 2 Value: 2.5000 Alternativer Zugriff über den Property Inspector: >> Zelle.inspect Arbeitsmappe speichern und schließen: >> Mappe.SaveAs( 'matlab.xls' ) >> Mappe.Close Hierarchie der Excel-Interfaces: Excel been und COM-Server-Objekt entfernen: >> h.quit >> h.delete Standard-Interface: >>h = actxserver ( 'Excel.Application' ); Workbooks-Interface (alle Mappen): >> hwbs = h.workbooks; Arbeitsmappe öffnen (nach Start des COM-Servers Neue über Arbeitsmappe Workbooks-Interface): (Workbook-Interface): >> map = hwbs.open( >> 'matlab.xls' Mappe = hwbs.add ) oder Mappe = hwbs.open( ) Sheets-Interface (alle Tabellen): >> Tabellen = Mappe.Sheets Tabelle auswählen (Worksheet-Interface): >> Tab1 = Tabellen.get( 'Item', 1 ) Bereich wählen (Range-Interface): >> Bereich = h.activesheet.get( 'Range', 'A1:A3' ) Informatik 2 3

COM-Beispiel: [g, vn, errno, errmsg ] = sucheexcel( name, datei ) Aufgabe: Excel-Laborliste datei nach einem Nachnamen (Spalte B) durchsuchen Wird der Name in Parameter name gefunden, wird errno auf 1 gesetzt, errmsg = [] und Semestergruppe (Spalte A) wird in g und der Vorname (Spalte C) in vn zurückgegeben. Wird der Name in Parameter nicht gefunden, wird errno auf 0 gesetzt und errmsg steht die Fehlermeldung 'Name nicht gefunden'. Tritt ein sonstiger Fehler auf, wird errno auf -1 gesetzt und errmsg beschreibt den Fehler. function testcom_0( ProgId ) h = actxserver( ProgId ); fprintf('\n actxserver-aufruf OK \n'); h.quit; sucheexcel (2) Programm-Code / try-catch-mechanismus h.delete; function [g, vn, errno, >> testcom_0( errmsg ] 'Exce.Application' = sucheexcel( name, ) datei ) g = [];??? % Vorbelegungen: Error using ==> noch actxserver keine Gruppe at 91 vn = []; Server creation failed. Invalid ProgID 'Exce.Application' errno = -1; Error % Fehler-Code in ==> testcom_0-1, zur at Sicherheit: 4 sonstiger Fehler errmsg = 'Unbekannter h = actxserver( Fehler'; ProgId ); ProgId = 'Excel.Application'; % Excel-ProgID % Versuch, Excel zu kontaktieren: function try für testcom( kritische ProgId COM-Aufrufe! ) try try h = actxserver( ProgId ); h = actxserver( ProgId ); catch % möglichen Fehler abfangen / COM feuert Exceptions fprintf('\n war wohl nichts??? \n') catch return; % und raus aus der Funktion >> testcom( errno 'Exce.Application' = -1; ) errmsg = ['Kein Kontakt zu COM-ProgId ', ProgId ]; war wohl nichts??? return; fprintf('\n actxserver-aufruf OK \n'); h.quit; h.delete; Informatik 2 4

sucheexcel (3) Programm-Code / Mappe zum Dateinamen datei öffnen hwbs = h.workbooks; % Arbeitsmappen-Interface holen try % Versuch, Datei zu öffnen / try, falls datei nicht existiert map = hwbs.open( datei ); catch errno = -1; errmsg = ['Kann Excel-Datei ', datei, ' nicht öffnen']; h.quit % Excel-Anwung ist schon gestartet h.delete return; sucheexcel (4) Programm-Code / Zellen-Kenner, isnan, Namens-Check Tabellen = map.sheets; Tab1 = Tabellen.get( 'Item', 1 ); % 1. Arbeitsblatt nehmen % Datei durchsuchen, Wert = NaN bedeutet Ende der Einträge n = 1; % ab zweiter Zeile stehen die Einträge / B1 = Überschrift while( errno == -1 ) % errno war mit -1 vorbelegt n = n + 1; % nächste Zeile, ab B2 zb = sprintf( 'B%d', n ); % Kenner zusammenbauen, z.b. B2 Zelle = Tab1.get( 'Range', zb ); >> n = 272; WertName = Zelle.Value; % Wert der >> Zelle zb = sprintf( zu zb auslesen 'B%d', n ) if( isnan( WertName ) ) % NaN = Ende zb = der B272 Einträge erreicht errno = 0; % Ende der >> Schleife, za = sprintf( errno 'A%d', nicht n -1 ) errmsg = 'Name nicht gefunden'; za = A272 >> zc = sprintf( 'C%d', n ) zc = C272 Informatik 2 5

sucheexcel (5) Programm-Code / Daten auslesen, Rückgabewerte g, vn elseif( strcmp(wertname, name) == 1 ) % überg. name steht in Zelle za = sprintf( 'A%d', n ); % Gruppe in Zelle An GZelle = Tab1.get( 'Range', za ); g = GZelle.Value ; % auslesen zc = sprintf( 'C%d', n ); % Vorname in Zelle Cn VZelle = Tab1.get( 'Range', zc ); vn = VZelle.Value ; % auslesen errno = 1; errmsg = []; % alles OK, Ende der Schleife % Keine Fehlermeldung map.close h.quit U. Stein h.delete / Informatik 2 % Mappe schließen und Excel been sucheexcel (6) Programm-Aufruf >> [g, vn, errno, errmsg ] = sucheexcel('schwachulla','laborliste.xls') g = 2c C vn = Nils errno = 1 errmsg = [] >> [g, vn, errno, errmsg ] = sucheexcel('merkel','laborliste.xls') g = [] vn = [] errno = 0 errmsg = Name nicht gefunden >> [g, vn, errno, errmsg ] = sucheexcel( 'Schwachulla','Labore.xls' ) g = [] vn = [] errno = -1 errmsg = Kann Excel-Datei Labore.xls nicht öffnen Informatik 2 6

COM-Beispiel: anz = ExcelDGL1( ) Aufgabe: Die Lösung einer Differentialgleichung [t,x], die der DGL-Solver geliefert hat, soll in Excel abgespeichert werden, und zwar in Spalte A untereinander die Werte von t und in Spalte B die zugehörigen x-werte. Die COM-Aufrufen werden der Einfachheit halber ohne try-catch-kontrolle ausgeführt. Als Differentialgleichung 1. Ordnung nehmen wir dx/dt = - 3 x, mit dem Anfangswert x(0) = 10, im Intervall [0,4] Die DGL-Funktion dazu sieht wie folgt aus function dx_dt = DglGl( t, x ) dx_dt = -3*x; Aufruf des Solvers und Eintrag in Excel function anz = ExcelDGL1() [t,x] = ode45( @DglGl, [0,4], 10 ); anz = length( x ); % Anzahl der x-werte bestimmen ExcelDGL1-2 h = actxserver( 'Excel.Application' ); hwbs = h.workbooks; map = hwbs.add; Tabellen = map.sheets; Tab1 = Tabellen.get( 'Item', 1 ); AStr = sprintf( 'A1:A%d', anz ); AZelle = Tab1.get( 'Range', AStr ); AZelle.Value = t; BStr = sprintf( 'B1:B%d', anz ); BZelle = Tab1.get( 'Range', BStr ); BZelle.Value = x; map.saveas( 'DGL1.xls' ); map.close % Excel-Datei schließen h.quit % COM-Server für Excel been h.delete % COM-Objekt entfernen Informatik 2 7

Typischer Ablauf bei COM-Schnittstellen Hierarchie der Excel-Interfaces: Standard-Interface: >>h = actxserver ( 'Excel.Application' ); Workbooks-Interface (alle Mappen): >> hwbs = h.workbooks; Neue Arbeitsmappe oder öffnen (Workbook-Interface): >> Mappe = hwbs.add oder Mappe = hwbs.open( ) Sheets-Interface (alle Tabellen): >> Tabellen = Mappe.Sheets Tabelle auswählen (Worksheet-Interface): >> Tab1 = Tabellen.get( 'Item', 1 ) Bereich wählen (Range-Interface): >> Bereich = h.activesheet.get( 'Range', 'A1:A3' ) 4.8.3 VBA-Kontakt zu Excel Für VBA-Aufrufe benötigen wir ein Programm, das VB-Befehle absetzen kann. Die meisten Microsoft-Programme besitzen einen Visual-Basic-Editor. Hier als Beispiel den Editor von MS-Word, dort unter Extras+Makro zu finden. Visual Basic ist ein von MS entwickelter Basic-Dialekt, für den eine Programmier-Umgebung (MS Visual Basic) im Handel erhältlich ist. Hiermit auch exe-programme möglich, die ohne Programmier-Umgebung lauffähig sind. VBA (Visual Basic for Applications) ist abgespeckte Version von Visual Basic, immer an bestimmte Anwung (Application) gebunden, MS vergibt hierfür an Herstellerfirmen der Anwungen entspreche Lizenzen. Auch in vielen Microsoft-Produkten ist VBA enthalten In Word den VBA-Editor öffnen und mit Hilfe des Kontext-Menüs zum Project eine UserForm hinzufügen: Darin Push-Button erzeugen (zu Deutsch: Befehlsschaltfläche ), hinter dessen Callback wir den Visual-Basic-Code schreiben. Informatik 2 8

Programm-Code zum Push-Button-Callback: Über das Kontext-Menüs den Code-Editor aufrufen: Code anzeigen für Callback CommandButton1_Click COM-Bibliotheken: VBA-Editor "Extras + "Verweise" "Microsoft Excel 10.0 Object Library dann "Ansicht + Objektkatalog" zeigt COM-Methoden und Interfaces Private Sub CommandButton1_Click() Set h = CreateObject("Excel.Application") h.visible = 1 Set hwbs = h.workbooks Set Mappe = hwbs.add Set Tabellen = Mappe.Sheets anz = Tabellen.Count Set Tab1 = Tabellen.Item(1) Tab1.Activate Set Bereich = h.activesheet.range("a1:a3") Bereich.Item(1) = 8 Bereich.Item(2) = 2.5 Bereich.Item(3) = 3.1415 Mappe.SaveAs ("Word.xls") Mappe.Close h.quit Set h = Nothing End Sub COM-Bibliotheken: Da wir von Word aus gestartet sind, kann es sein, dass wir VBA in Bezug auf Excel noch ein wenig schlau machen müssen. Gehen Sie, nachdem Sie Ihr Programm beet haben, im VBA-Editor im Menü Extras unter Verweise. Es öffnet sich die Liste mit allen auf dem Rechner verfügbaren COM-Bibliotheken. Markieren Sie, falls noch nicht geschehen, das Feld Microsoft Excel 10.0 Object Library (hier im Bild die Version 10.0 für Office-XP). COM-Methoden: Unter "Ansicht + Objektkatalog" Anzeige der verfügbaren COM-Methoden und Interfaces Informatik 2 9