80
Wizards & Wizards & Builders Builders GmbH GmbH Arbeiten mit DDE- und Arbeiten mit DDE- und OLE OLE DDE- und OLE-Funktionen und DDE- und OLE-Funktionen und Einsatz als OLE-Server von Einsatz als OLE-Server von Microsoft Visual FoxPro Microsoft Visual FoxPro

Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Embed Size (px)

Citation preview

Page 1: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Arbeiten mit DDE- und Arbeiten mit DDE- und OLEOLE

DDE- und OLE-Funktionen und DDE- und OLE-Funktionen und Einsatz als OLE-Server vonEinsatz als OLE-Server von

Microsoft Visual FoxProMicrosoft Visual FoxPro

Page 2: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Diese Schulung dient der Einführung in die Ansteuerung von

anderen Anwendungen wie WinWord, Excel, Project, Outlook

via OLE-Automation ausMicrosoft Visual Foxpro

Page 3: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

ThemenübersichtThemenübersicht

DDE-Funktionsübersicht, BeispielDDE-Funktionsübersicht, Beispiel OLE-Automation mit MS WinWord, BeispielOLE-Automation mit MS WinWord, Beispiel OLE-Automation mit MS Excel, BeispielOLE-Automation mit MS Excel, Beispiel MAPI und VFPMAPI und VFP OLE-Automation mit MS Outlook, BeispielOLE-Automation mit MS Outlook, Beispiel OLE-Automation mit MS ProjectOLE-Automation mit MS Project OLE-Automation mit MS SQL-ServerOLE-Automation mit MS SQL-Server OLE-Automation mit MS AccessOLE-Automation mit MS Access FPOLE.DLL-FunktionsübersichtFPOLE.DLL-Funktionsübersicht Remote OLE-AutomationRemote OLE-Automation

Page 4: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Office AutomationOffice Automation

Office Automation und Office Automation und Möglichkeiten der Möglichkeiten der

Anbindung von SoftwareAnbindung von Software

Page 5: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Was ist Office Automation?Was ist Office Automation?

BetriebssystemBetriebssystem

StandardanwendungenStandardanwendungen TextverarbeitungTextverarbeitung TabellenkalkulationTabellenkalkulation Terminverwaltung etc.Terminverwaltung etc.

Business AnwendungenBusiness Anwendungen Auftragsbearbeitung bzw. Auftragsbearbeitung bzw.

eigentliche Geschäfts-eigentliche Geschäfts-anwendung (Eigene anwendung (Eigene Programmierung)Programmierung)

Page 6: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Möglichkeiten der Möglichkeiten der AnbindungAnbindung

ODBCODBC - Open Database Connectivity- Open Database Connectivity DDEDDE - Dynamic Data Exchange- Dynamic Data Exchange

OLEOLE - Object Linking a. Embedding- Object Linking a. Embedding COMCOM - Component Object Model- Component Object Model DCOMDCOM - Distributed COM (Transport)- Distributed COM (Transport)

ActiveXActiveX - „a new Word for OLE“- „a new Word for OLE“

Page 7: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

DDE-FunktionenDDE-Funktionen

Kurze Übersicht über die Kurze Übersicht über die DDE-Funktionen vonDDE-Funktionen von

Microsoft Visual FoxProMicrosoft Visual FoxPro

Page 8: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

DDE-FunktionsübersichtDDE-Funktionsübersicht

DDESetOptionDDESetOption Safety, TimeOutSafety, TimeOut

DDEInitiateDDEInitiate DDEExecuteDDEExecute DDETerminateDDETerminate

DDELastErrorDDELastError

DDESetTopicDDESetTopic System, ggf. System, ggf.

DocumentDocument

DDEPoke (Write)DDEPoke (Write) DDERequest (Read)DDERequest (Read)

Server:Server: DDEAdvise (Topics)DDEAdvise (Topics) DDEEnabledDDEEnabled

Page 9: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

DDE-InitialisierungDDE-Initialisierung

* ggf. =ddeSetOption( "TimeOut", 3000)* ggf. =ddeSetOption( "TimeOut", 3000)

*-- Fehlermeldungen abschalten*-- Fehlermeldungen abschalten

=ddeSetOption( "Safety", .f.)=ddeSetOption( "Safety", .f.)

*-- Prüfen ob WinWord schon geöffnet*-- Prüfen ob WinWord schon geöffnet

lhWord= ddeInitiate( "Winword", "System")lhWord= ddeInitiate( "Winword", "System")

if lhWord < 0if lhWord < 0

run /n7 &lcWordExerun /n7 &lcWordExe

lhWord= ddeInitiate( "Winword", "System")lhWord= ddeInitiate( "Winword", "System")

if lhWord < 0if lhWord < 0

returnreturn

endifendif

endifendif

=ddeTerminate( lhWord)=ddeTerminate( lhWord)

Page 10: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

DDE-AnsteuerungDDE-Ansteuerung

if ddeExecute( lhWord, '[DateiNeu “&lcTemplate“]')if ddeExecute( lhWord, '[DateiNeu “&lcTemplate“]')

? ddeExecute( lhWord, '[BearbeitenGeheZu “Adresse_an“]')? ddeExecute( lhWord, '[BearbeitenGeheZu “Adresse_an“]')

? ddeExecute( lhWord, '[Einfügen “Firma GmbH“ ]')? ddeExecute( lhWord, '[Einfügen “Firma GmbH“ ]')

? ddeExecute( lhWord, '[BearbeitenGeheZu “Adr_Ansch“]')? ddeExecute( lhWord, '[BearbeitenGeheZu “Adr_Ansch“]')

? ddeExecute( lhWord, '[Einfügen “Straße"]')? ddeExecute( lhWord, '[Einfügen “Straße"]')

*-- Und nun eine Variable/TabellenFeld einfügen*-- Und nun eine Variable/TabellenFeld einfügen

lcOrt= “PLZ Wohnort"lcOrt= “PLZ Wohnort"

? ddeExecute( lhWord, '[BearbeitenGeheZu “An_Ort“]')? ddeExecute( lhWord, '[BearbeitenGeheZu “An_Ort“]')

? ddeExecute( lhWord, '[Einfügen “&lcOrt“]')? ddeExecute( lhWord, '[Einfügen “&lcOrt“]')

endifendif

Page 11: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

DDE-Set TopicDDE-Set Topic

* Hier gehts darum, Falls Winword geöffnet ist, das* Hier gehts darum, Falls Winword geöffnet ist, das

* gewünschte Dokument als Aktives Dokument für den DDE-Kanal* gewünschte Dokument als Aktives Dokument für den DDE-Kanal

* anzuwählen. Mit Hilfe der Topics kann festgestellt werden,* anzuwählen. Mit Hilfe der Topics kann festgestellt werden,

* ob ein bestimmtes Dokument geöffnet ist* ob ein bestimmtes Dokument geöffnet ist

lhWord= ddeInitiate( "Winword", "System")lhWord= ddeInitiate( "Winword", "System")

? ddeExecute( lhWord, '[Dateiöffnen "&lcRngDoc"]')? ddeExecute( lhWord, '[Dateiöffnen "&lcRngDoc"]')

lcTopics= ddeRequest( lhWord, "topics")lcTopics= ddeRequest( lhWord, "topics")

if .not. (upper( lcRngDoc) $ upper(lcTopics))if .not. (upper( lcRngDoc) $ upper(lcTopics))

? ddeTerminate( lhWord)? ddeTerminate( lhWord)

returnreturn

endifendif

Page 12: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Verschiedene DDE-Verschiedene DDE-BeispieleBeispiele

* -- setzen von Topic: Die Rechnung* -- setzen von Topic: Die Rechnung

lh2= DDEINITIATE( "Winword", "&lcRngDoc")lh2= DDEINITIATE( "Winword", "&lcRngDoc")

*-- An den Anfang des Dokuments gehen*-- An den Anfang des Dokuments gehen

? ddeExecute( lh2, '[BeginnDokument]')? ddeExecute( lh2, '[BeginnDokument]')

*-- An den Anfang der Zeile gehen*-- An den Anfang der Zeile gehen

? ddeExecute( lh2, '[BeginnZeile]')? ddeExecute( lh2, '[BeginnZeile]')

*-- Markieren einschalten*-- Markieren einschalten

? ddeExecute( lh2, '[MarkierungErweitern]')? ddeExecute( lh2, '[MarkierungErweitern]')

*-- bis zum Ende der Zeile markieren*-- bis zum Ende der Zeile markieren

? ddeExecute( lh2, '[EndeZeile]')? ddeExecute( lh2, '[EndeZeile]')

*-- und nun den Inhalt der Markierung auslesen*-- und nun den Inhalt der Markierung auslesen

? ddeExecute( lh2, '[BearbeitenTextMarke "Auslesen"]')? ddeExecute( lh2, '[BearbeitenTextMarke "Auslesen"]')

Page 13: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

OLE-Automation OLE-Automation AllgemeinAllgemein

Vorbemerkungen zum Vorbemerkungen zum Einsatz von OLE-Einsatz von OLE-

AutomationAutomation

Page 14: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Was ist OLE ?Was ist OLE ?

Client und Server Client und Server Die RegistryDie Registry ObjektbasiertObjektbasiert Linked ObjectsLinked Objects Embedded ObjectsEmbedded Objects OLE 2OLE 2

embedded objectsembedded objects in-place-editingin-place-editing

Page 15: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

OLE Automation AllgemeinOLE Automation Allgemein

Application-ObjektApplication-Objekt Collections - Child-ObjektlistenCollections - Child-Objektlisten ObjekteObjekte

EigenschaftenEigenschaften MethodenMethoden

Funktionen (bei Application)Funktionen (bei Application) Sprache beachten (bzw. setzen)Sprache beachten (bzw. setzen)

Page 16: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

OLE-Automation mit OLE-Automation mit WinWordWinWord

Ansteuerung von WinWord Ansteuerung von WinWord via OLE-Automation ausvia OLE-Automation ausMicrosoft Visual FoxProMicrosoft Visual FoxPro

Page 17: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Vorgängerversion WinWord Vorgängerversion WinWord 9595

Objektmodell von WordObjektmodell von Word nur Word.Basic interaktionsfähignur Word.Basic interaktionsfähig

Befehle von WordBefehle von Word WordBasicWordBasic

DateiBeendenDateiBeenden DateiNeuDateiNeu

Dialoge (nur lesen, nicht schreiben (!))Dialoge (nur lesen, nicht schreiben (!)) Sprache beachten für WordBasic (!)Sprache beachten für WordBasic (!)

Page 18: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

OLE-Automation mit OLE-Automation mit WinWordWinWord

Objektmodell von WinWord 97Objektmodell von WinWord 97 ApplicationApplication DocumentsDocuments ParagraphsParagraphs (Absätze)(Absätze) RangeRange (Bereich von Zeichen)(Bereich von Zeichen) CharsChars DialogeDialoge

Page 19: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Objektmodell von WinWordObjektmodell von WinWord

Page 20: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Alternative WordBasicAlternative WordBasic

Für Anwendungen inFür Anwendungen inWinWord 2.0 und WinWord 95:WinWord 2.0 und WinWord 95:

CreateObject(“Word.Application”)CreateObject(“Word.Application”) oBasic= oBasic=

oApp.WordBasic( <Befehl>)oApp.WordBasic( <Befehl>) oBasic.FileOpen( <Pfad>)oBasic.FileOpen( <Pfad>) oBasic.FilePrint()oBasic.FilePrint() oWord.Quit()oWord.Quit() Hilfe: WrdBasic.hlpHilfe: WrdBasic.hlp

WordBasic immer verfügbarWordBasic immer verfügbar

Page 21: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Hinweise zu WinWordHinweise zu WinWord

Custom Custom Document Document PropertiesProperties

Page 22: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Beispiele mit WinWordBeispiele mit WinWord

Verschiedene Beispiele Verschiedene Beispiele und Übungen zu WinWord und Übungen zu WinWord

mitmitMicrosoft Visual FoxProMicrosoft Visual FoxPro

Page 23: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Beispiele mit WinWordBeispiele mit WinWord

An/Abmelden bei WinwordAn/Abmelden bei Winword Koordinaten einstellenKoordinaten einstellen Dokumente öffnenDokumente öffnen Formate einstellenFormate einstellen Bereich selektieren/FontsBereich selektieren/Fonts Properties, TextmarkenProperties, Textmarken TabellenTabellen SerienbriefeSerienbriefe Sonstige FunktionenSonstige Funktionen

Page 24: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

An/Abmelden bei An/Abmelden bei WinWordWinWord

*-- Instanzierung einer Word Session*-- Instanzierung einer Word Session

oWord= CreateObject( "Word.Application.8")oWord= CreateObject( "Word.Application.8")

*-- Prüfen ob Instanzierung erfolgreich*-- Prüfen ob Instanzierung erfolgreich

if isnull(oWord)if isnull(oWord)

returnreturn

endifendif

*-- Winword beenden*-- Winword beenden

oWord.Quit(0)oWord.Quit(0)

Page 25: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Koordinaten einstellenKoordinaten einstellen

*-- Sichtbar machen und Koordinaten einstellen*-- Sichtbar machen und Koordinaten einstellen

oWord.visible= .t.oWord.visible= .t.

oWord.Left= 380oWord.Left= 380

oWord.Width= 400oWord.Width= 400

oWord.top= 1oWord.top= 1

oWord.Height= 540oWord.Height= 540

*-- ggf. Visual FoxPro wegschalten*-- ggf. Visual FoxPro wegschalten

_screen.visible = .F._screen.visible = .F.

Page 26: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Dokumente öffnenDokumente öffnen

*-- bestehendes Dokument öffnen*-- bestehendes Dokument öffnen

owDok= oWord.Documents.open( “dokument")owDok= oWord.Documents.open( “dokument")

owDok.Close()owDok.Close()

*-- neues Dokument mit Standardvorlage erstellen*-- neues Dokument mit Standardvorlage erstellen

owDok= oWord.Documents.Add()owDok= oWord.Documents.Add()

owDok.Close()owDok.Close()

*-- neues Dokument mit Vorlage erstellen*-- neues Dokument mit Vorlage erstellen

owDok= oWord.Documents.Add( "Word97.dot")owDok= oWord.Documents.Add( "Word97.dot")

owDok.Close()owDok.Close()

Page 27: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Formate einstellenFormate einstellen

*-- Format und Seitenränder des Dokuments setzen*-- Format und Seitenränder des Dokuments setzen

with owDok.PageSetupwith owDok.PageSetup

.Papersize= .Papersize= 77 && A4&& A4

.Orientation= .Orientation= 00 && Portrait&& Portrait

*-- Seitenränder in Punkten angeben*-- Seitenränder in Punkten angeben

.LeftMargin=oWord.CentimetersToPoints( 2.5 ).LeftMargin=oWord.CentimetersToPoints( 2.5 )

.RightMargin=oWord.CentimetersToPoints( 2 ).RightMargin=oWord.CentimetersToPoints( 2 )

.TopMargin=oWord.CentimetersToPoints( 2.5 ).TopMargin=oWord.CentimetersToPoints( 2.5 )

.BottomMargin=oWord.CentimetersToPoints( 2 ).BottomMargin=oWord.CentimetersToPoints( 2 )

endwithendwith

Page 28: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Bereiche selektierenBereiche selektieren

*-- Bereich selektieren, Text einfügen*-- Bereich selektieren, Text einfügen

oRange= owDok.RangeoRange= owDok.Range

oRange.InsertBefore("Hallo Teilnehmer")oRange.InsertBefore("Hallo Teilnehmer")

*-- Font für selektierten Bereich einstellen*-- Font für selektierten Bereich einstellen

With oRange.FontWith oRange.Font

.Bold = .t..Bold = .t.

.Name = "Arial".Name = "Arial"

.Size = 24.Size = 24

EndWithEndWith

Page 29: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Properties, TextmarkenProperties, Textmarken

* Properties.Add(Name,LinkToContent,Type,Value,LinkSource)* Properties.Add(Name,LinkToContent,Type,Value,LinkSource)

*-- Suchen mit Schleife über Count, Exits gibt es nicht*-- Suchen mit Schleife über Count, Exits gibt es nicht

=owDok.CustomDocumentProperties.Add( "Name",.f.,4,“<Name>“ )=owDok.CustomDocumentProperties.Add( "Name",.f.,4,“<Name>“ )

=owDok.CustomDocumentProperties.Add( "VName",.f.,4,“VName“)=owDok.CustomDocumentProperties.Add( "VName",.f.,4,“VName“)

*-- Textmarken*-- Textmarken

lcTextMarke= "Adresse"lcTextMarke= "Adresse"

owDok.Bookmarks.Add( lcTextmarke, oRange)owDok.Bookmarks.Add( lcTextmarke, oRange)

if owDok.Bookmarks.Exists( lcTextmarke)if owDok.Bookmarks.Exists( lcTextmarke)

owDok.Bookmarks( lcTextmarke ).SelectowDok.Bookmarks( lcTextmarke ).Select

endifendif

Page 30: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Tabellen (1)Tabellen (1)

*-- Eine Tabelle mit 3 Spalten und 5 Zeilen hinzufügen*-- Eine Tabelle mit 3 Spalten und 5 Zeilen hinzufügen

oTable= owDok.Tables.add( oRange, 5, 3)oTable= owDok.Tables.add( oRange, 5, 3)

*-- Die Spaltenbreiten festlegen*-- Die Spaltenbreiten festlegen

oTable.Columns(1).Width= oWord.CentimetersToPoints( 8)oTable.Columns(1).Width= oWord.CentimetersToPoints( 8)

oTable.Columns(2).Width= oWord.CentimetersToPoints( 2)oTable.Columns(2).Width= oWord.CentimetersToPoints( 2)

oTable.Columns(3).Width= oWord.CentimetersToPoints( 6)oTable.Columns(3).Width= oWord.CentimetersToPoints( 6)

*-- Zeilenhöhe der Tabelle einstellen*-- Zeilenhöhe der Tabelle einstellen

lnHeight= oWord.CentimetersToPoints( 1)lnHeight= oWord.CentimetersToPoints( 1)

for each oRow in oTable.Rowsfor each oRow in oTable.Rows

oRow.Height= lnHeightoRow.Height= lnHeight

oRow.HeightRule= 2 && exactoRow.HeightRule= 2 && exact

endforendfor

Page 31: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Tabellen (2)Tabellen (2)

*-- und nun die Tabelle füllen*-- und nun die Tabelle füllen

*-- kann natürlich auch mit Daten einer DBF sein*-- kann natürlich auch mit Daten einer DBF sein

oTable.Cell( 1, 1).Range.Text= “W&B GmbH“ oTable.Cell( 1, 1).Range.Text= “W&B GmbH“

oTable.Cell( 2, 1).Range.Text= “Herrn Abb“ oTable.Cell( 2, 1).Range.Text= “Herrn Abb“

oTable.Cell( 3, 1).Range.Text= “Frankfurter Str. 21b“ oTable.Cell( 3, 1).Range.Text= “Frankfurter Str. 21b“

oTable.Cell( 5, 1).Range.Text= “61476 Kronberg “ oTable.Cell( 5, 1).Range.Text= “61476 Kronberg “

Page 32: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Serienbrief (1)Serienbrief (1)

lcSource= "C:\Projekt\Devcon\Merge.dbf"lcSource= "C:\Projekt\Devcon\Merge.dbf"

*OpenDataSource(Name, Format, ConfirmConversions, *OpenDataSource(Name, Format, ConfirmConversions,

* ReadOnly, LinkToSource, AddToRecentFiles, ;* ReadOnly, LinkToSource, AddToRecentFiles, ;

* PasswordDocument, PasswordTemplate, Revert,* PasswordDocument, PasswordTemplate, Revert,

* WritePasswordDocument, WritePasswordTemplate, * WritePasswordDocument, WritePasswordTemplate,

* Connection, SQLStatement, SQLStatement1)* Connection, SQLStatement, SQLStatement1)

with owDok.MailMergewith owDok.MailMerge

.MainDocumentType = 0.MainDocumentType = 0 && wdFormLetters&& wdFormLetters

.OpenDataSource( lcSource ).OpenDataSource( lcSource )

endwithendwith

* owDok.MailMerge.CreateDataSource( Name, Header)* owDok.MailMerge.CreateDataSource( Name, Header)

* lcHeader= "Name, Adresse, Postleitzahl, Ort, Land"* lcHeader= "Name, Adresse, Postleitzahl, Ort, Land"

* owDok.MailMerge.CreateDataSource( lcSource, lcHeader)* owDok.MailMerge.CreateDataSource( lcSource, lcHeader)

Page 33: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Serienbrief (2)Serienbrief (2)

*-- und nun die Tabelle füllen*-- und nun die Tabelle füllen

*-- kann natürlich auch mit Daten einer DBF sein*-- kann natürlich auch mit Daten einer DBF sein

* WDFieldType.WDMergeField= 59* WDFieldType.WDMergeField= 59

* oTable.Cell( 1, 1).Range.Fields.Add( ;* oTable.Cell( 1, 1).Range.Fields.Add( ;

* Range, Type, Text)* Range, Type, Text)

oRange= oTable.Cell( 1, 1)oRange= oTable.Cell( 1, 1)

owDok.Mailmerge.Fields.Add( oRange, "CUST_ID")owDok.Mailmerge.Fields.Add( oRange, "CUST_ID")

owDok.MailMerge.Execute()owDok.MailMerge.Execute()

owDok.SaveAs( lcPath+ "Word9703")owDok.SaveAs( lcPath+ "Word9703")

*-- Und nun das Dokument drucken*-- Und nun das Dokument drucken

owDok.PrintOut()owDok.PrintOut() && alternativ PrintPreview()&& alternativ PrintPreview()

Page 34: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Sonstige FunktionenSonstige Funktionen

*-- Datei speichern als*-- Datei speichern als

=owDok.SaveAs( "meindokument" )=owDok.SaveAs( "meindokument" )

*-- Dokument drucken*-- Dokument drucken

=owDok.PrintOut()=owDok.PrintOut()

=owDok.PrintPreview()=owDok.PrintPreview()

Page 35: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

OLE-Automation mit ExcelOLE-Automation mit Excel

Ansteuerung von Excel viaAnsteuerung von Excel viaOLE-Automation ausOLE-Automation aus

Microsoft Visual FoxProMicrosoft Visual FoxPro

Page 36: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

OLE-Automation mit ExcelOLE-Automation mit Excel

Excel-Objekte in der Registry:Excel-Objekte in der Registry: ApplicationApplication Sheet (Tabelle)Sheet (Tabelle) WorkSpace (Arbeitsbereich)WorkSpace (Arbeitsbereich) VBAModuleVBAModule ChartChart Template (Vorlage)Template (Vorlage)

Direkt erzeugbar mit CreateObject( Direkt erzeugbar mit CreateObject( ))

Page 37: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Objektmodell von ExcelObjektmodell von Excel

Page 38: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Hinweise zu ExcelHinweise zu Excel

=SYS( 3005, 1033/1031) - Sprache=SYS( 3005, 1033/1031) - Sprache Excel.Application.VisibleExcel.Application.Visible Excel.InterActive für AnzeigemodusExcel.InterActive für Anzeigemodus

Anwender kann nicht eingreifenAnwender kann nicht eingreifen

Excel.DisplayAlerts für Excel.DisplayAlerts für FehleranzeigeFehleranzeige geht bei WinWord leider nicht!geht bei WinWord leider nicht!

FOR EACH MemVar IN GroupFOR EACH MemVar IN Group

Page 39: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Beispiele mit ExcelBeispiele mit Excel

Verschiedene Beispiele Verschiedene Beispiele und Übungen zu Excel mit und Übungen zu Excel mit

Microsoft Visual FoxProMicrosoft Visual FoxPro

Page 40: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Beispiele mit ExcelBeispiele mit Excel

Anmelden bei ExcelAnmelden bei Excel Tabellen anlegenTabellen anlegen Werte einfügenWerte einfügen Sonstige FunktionenSonstige Funktionen

Page 41: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Anmelden bei ExcelAnmelden bei Excel

=sys( 3005, 1033)=sys( 3005, 1033) && Sprache Englisch&& Sprache Englisch

oExcel= createObject( "Excel.Application")oExcel= createObject( "Excel.Application")

if isnull( oExcel)if isnull( oExcel)

return .f.return .f.

endifendif

*-- Fenstereinstellungen für Excel, Faktoren beachten*-- Fenstereinstellungen für Excel, Faktoren beachten

oExcel.Top= 0oExcel.Top= 0

oExcel.Height= _vfp.height*0.91oExcel.Height= _vfp.height*0.91

oExcel.Left= (_vfp.Width*0.76) +2oExcel.Left= (_vfp.Width*0.76) +2

oExcel.Width= (sysmetric(1)- _vfp.width)*0.74oExcel.Width= (sysmetric(1)- _vfp.width)*0.74

*-- Excel anzeigen*-- Excel anzeigen

oExcel.Visible= .T.oExcel.Visible= .T.

Page 42: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Tabellen anlegen (1)Tabellen anlegen (1)

*-- Anwendereingaben verhindern*-- Anwendereingaben verhindern

oExcel.Interactive= .T.oExcel.Interactive= .T.

*-- Sicherheitsabfragen unterdrücken*-- Sicherheitsabfragen unterdrücken

oExcel.DisplayAlerts= .f.oExcel.DisplayAlerts= .f.

*-- Neue Arbeitsmappen mit nur einer Tabelle erstellen*-- Neue Arbeitsmappen mit nur einer Tabelle erstellen

oExcel.SheetsInNewWorkBook= 1oExcel.SheetsInNewWorkBook= 1

*-- Eine Arbeitsmappe erstellen*-- Eine Arbeitsmappe erstellen

*-- es müßte eine Tabelle vorhanden sein*-- es müßte eine Tabelle vorhanden sein

? "Anzahl der Arbeitsmappen:", oExcel.Workbooks.count? "Anzahl der Arbeitsmappen:", oExcel.Workbooks.count

oBook= oExcel.Workbooks.addoBook= oExcel.Workbooks.add

Page 43: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Tabellen anlegen (2)Tabellen anlegen (2)

*-- Eine neue Tabelle hinzufügen*-- Eine neue Tabelle hinzufügen

? "Anzahl Tabellen in der Arbeitsmappe:", ? "Anzahl Tabellen in der Arbeitsmappe:", oBook.Sheets.countoBook.Sheets.count

oSheet= oBook.Sheets.addoSheet= oBook.Sheets.add

? "Anzahl Tabellen in der Arbeitsmappe:", ? "Anzahl Tabellen in der Arbeitsmappe:", oBook.Sheets.countoBook.Sheets.count

*-- Die Tabelle löschen*-- Die Tabelle löschen

oSheet.delete()oSheet.delete()

? "Anzahl Tabellen in der Arbeitsmappe:", ? "Anzahl Tabellen in der Arbeitsmappe:", oBook.Sheets.countoBook.Sheets.count

oSheet= oBook.Sheets(1)oSheet= oBook.Sheets(1)

Page 44: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Werte einfügen (1)Werte einfügen (1)

*-- Nun holen wir uns den Zellbereich von A1 bis A12*-- Nun holen wir uns den Zellbereich von A1 bis A12

oRange= oSheet.Range( "A1:A12")oRange= oSheet.Range( "A1:A12")

* und nun setzen wir in der Zelle A1 und A2 das Datum * und nun setzen wir in der Zelle A1 und A2 das Datum

oRange.Cells( 1, 1).Value= {01.01.97}oRange.Cells( 1, 1).Value= {01.01.97}

oRange.Cells( 2, 1).Value= {01.02.97}oRange.Cells( 2, 1).Value= {01.02.97}

* Der Autofillbereich über den Bereich von A1 bis A12* Der Autofillbereich über den Bereich von A1 bis A12

oFillTo= oRangeoFillTo= oRange

oSheet.Range( "A1:A2").Autofill( oFillTo)oSheet.Range( "A1:A2").Autofill( oFillTo)

Page 45: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Werte einfügen (2)Werte einfügen (2)

*-- Nun den Bereich B1 - B10 mit Formel füllen: die *-- Nun den Bereich B1 - B10 mit Formel füllen: die Formel ist relativFormel ist relativ

oRange= oSheet.Range( "B1:B12")oRange= oSheet.Range( "B1:B12")

oRange.Formula = "=month( A1)"oRange.Formula = "=month( A1)"

*-- formatieren von Zellen*-- formatieren von Zellen

oRange.NumberFormat= "#,##0.00"oRange.NumberFormat= "#,##0.00" && US-Notation&& US-Notation

oRange.Font.Bold= .t.oRange.Font.Bold= .t.

*-- Nun den Bereich C1 bis C12 füllen*-- Nun den Bereich C1 bis C12 füllen

oSheet.Range( "C1:C12").Formula= "=B1* 1.15"oSheet.Range( "C1:C12").Formula= "=B1* 1.15"

oSheet.Range( "C1:C12").Numberformat= "#,##0.0"oSheet.Range( "C1:C12").Numberformat= "#,##0.0"

*-- Und nun das Autoformat laufen lassen*-- Und nun das Autoformat laufen lassen

oSheet.Range( "A1:C12").Autoformat( 10)oSheet.Range( "A1:C12").Autoformat( 10)

Page 46: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Werte einfügen (3)Werte einfügen (3)

*-- 10 Datensätze in das Clipboard kopieren*-- 10 Datensätze in das Clipboard kopieren

_vfp.DataToClip( "_cTopTen", 10, 3)_vfp.DataToClip( "_cTopTen", 10, 3) && 3 = Tabs&& 3 = Tabs

*-- Datensätze in Excel einfügen*-- Datensätze in Excel einfügen

oExcel.ActiveSheet.Range( "A2").SelectoExcel.ActiveSheet.Range( "A2").Select && Zelle A2&& Zelle A2

oExcel.ActiveSheet.Paste()oExcel.ActiveSheet.Paste() && einfügen&& einfügen

*-- oExcelCells erhält die Referenz auf den*-- oExcelCells erhält die Referenz auf den

*-- eingefügten Bereich*-- eingefügten Bereich

oExcelCells= oExcel.SelectionoExcelCells= oExcel.Selection

*-- und nun noch ein Autoformat*-- und nun noch ein Autoformat

oExcelCells.Autoformat(11)oExcelCells.Autoformat(11)

*-- immer zwei Reihen farblich anders*-- immer zwei Reihen farblich anders

Page 47: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Sonstige FunktionenSonstige Funktionen

*-- Die aktuelle Arbeitsmappe speichern*-- Die aktuelle Arbeitsmappe speichern

oExcel.ActiveWorkBook.saveAs( "D_XLS97")oExcel.ActiveWorkBook.saveAs( "D_XLS97")

*-- Die Summe über die Umsätze der Top 10 *-- Die Summe über die Umsätze der Top 10

* Die erste Zeile enthält die Spaltenköpfe (Feldnamen)* Die erste Zeile enthält die Spaltenköpfe (Feldnamen)

? oExcel.Application.Evaluate( "sum( B2:B11)")? oExcel.Application.Evaluate( "sum( B2:B11)")

*-- Direktes benutzen von Funktionen, auch mit Arrays*-- Direktes benutzen von Funktionen, auch mit Arrays

? oExcel.evaluate( "fv( 10%, 12, 100)")? oExcel.evaluate( "fv( 10%, 12, 100)")

? oExcel.evaluate( "correl( {1;2;1},{1.1;1.9;1})")? oExcel.evaluate( "correl( {1;2;1},{1.1;1.9;1})")

Page 48: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Mailversand mit ActiveXMailversand mit ActiveX

Empfang und Versand von Empfang und Versand von elektronischen Nachrichten elektronischen Nachrichten

mitmitMicrosoft Visual FoxProMicrosoft Visual FoxPro

Page 49: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Mail und VFPMail und VFP

FPW: Workgroup Extensions (seit 93)FPW: Workgroup Extensions (seit 93) FOXMAPI.FLL nicht mehr unter VFPFOXMAPI.FLL nicht mehr unter VFP VFP3: 2 OLE-Container für MessagingVFP3: 2 OLE-Container für Messaging

Session Control (für Einloggen)Session Control (für Einloggen) Message Control (für Empfang/Versand)Message Control (für Empfang/Versand)

Wahlweise Versand via OutlookWahlweise Versand via Outlook

Page 50: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

MAPI Session ControlMAPI Session Control

Verwaltung einer Mailsession, Beginn mit Verwaltung einer Mailsession, Beginn mit Einloggen via Methode „SignOn“Einloggen via Methode „SignOn“ LogonUILogonUI - Flag Dialogmaske für Login- Flag Dialogmaske für Login NewSessionNewSession - Flag Neue Exchange-Session- Flag Neue Exchange-Session UsernameUsername - String mit Profilname- String mit Profilname DownloadMails - Flag für Abgleich (Default .T. !)DownloadMails - Flag für Abgleich (Default .T. !)

Rückgabe Session-ID für Message Ctrl!Rückgabe Session-ID für Message Ctrl! Methode „SignOff“Methode „SignOff“

Page 51: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

MAPI Message Control (1)MAPI Message Control (1)

Übertragung der SessionIDÜbertragung der SessionID Aufruf Fetch()-MethodeAufruf Fetch()-Methode

FetchUnreadOnly - Nur ungelesene MessagesFetchUnreadOnly - Nur ungelesene Messages FetchSorted - Eingangsreihenfolge oder FetchSorted - Eingangsreihenfolge oder

BenutzerreihenfolgeBenutzerreihenfolge

Anzahl Messages in MsgCountAnzahl Messages in MsgCount Wechseln durch Ändern MsgIndexWechseln durch Ändern MsgIndex

beginnt bei 0, also nur bis MsgCount-1, beginnt bei 0, also nur bis MsgCount-1, 0=älteste0=älteste

Page 52: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

MAPI Message Control (2)MAPI Message Control (2)

Eigenschaften MAPI-Message:Eigenschaften MAPI-Message:

MsgNoteTextMsgNoteText - - NachrichtentextNachrichtentext

MsgSubjectMsgSubject - Betreff- Betreff MsgOrigDisplayNameMsgOrigDisplayName - -

AbsenderAbsender RecipDisplayNameRecipDisplayName - Collection- Collection

(RecipCount, RecipIndex)(RecipCount, RecipIndex)

Page 53: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

MAPI Message Control (3)MAPI Message Control (3)

Anlegen von neuen Nachrichten:Anlegen von neuen Nachrichten: Methode Compose( ) oder Methode Compose( ) oder MsgIndex auf -1 setzenMsgIndex auf -1 setzen

Versand mit Send( )-MethodeVersand mit Send( )-Methode Attachments sind in einer Attachments sind in einer

Collection vorhanden, Anzahl: Collection vorhanden, Anzahl: AttachmentCountAttachmentCount

Attachment in Attachment in AttachmentPathNameAttachmentPathName

Page 54: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

OLE-Automation mit OLE-Automation mit OutlookOutlook

Ansteuerung von MS OutlookAnsteuerung von MS Outlookvia OLE-Automation ausvia OLE-Automation ausMicrosoft Visual FoxProMicrosoft Visual FoxPro

Page 55: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

OLE-Automation mit OutlookOLE-Automation mit Outlook

Nachfolger von Exchange und Schedule+Nachfolger von Exchange und Schedule+ via Exchange Server, Office, Outlookvia Exchange Server, Office, Outlook Sonderversion Outlook Express für MailSonderversion Outlook Express für Mail Dienste werden in Profilen verwaltetDienste werden in Profilen verwaltet Dienste: Exchange, Internet, Fax, CISDienste: Exchange, Internet, Fax, CIS Folder (Ein/Ausgang, Journal, Kontakte, Folder (Ein/Ausgang, Journal, Kontakte,

Kalender, Aufgaben, Notizen)Kalender, Aufgaben, Notizen)

Page 56: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Objektmodell von Outlook Objektmodell von Outlook (1)(1)

Wird bei Visual Modeler als UML Wird bei Visual Modeler als UML mitgeliefert (VM in Visual Studio)mitgeliefert (VM in Visual Studio)

Ziemlich komplexes ModellZiemlich komplexes Modell Kenntnisse der Struktur sind Kenntnisse der Struktur sind

notwendig um Outlook anzusteuernnotwendig um Outlook anzusteuern Hilfe bei Office (extra installieren)Hilfe bei Office (extra installieren)

Page 57: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Objektmodell von Outlook Objektmodell von Outlook (2)(2)

Page 58: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Zugriff auf OutlookZugriff auf Outlook

= Getobject(„“, „Outlook.Application“)= Getobject(„“, „Outlook.Application“) = Createobject(„Outlook.Application“)= Createobject(„Outlook.Application“) NameSpace-Objekt („MAPI“ / „Notes“)NameSpace-Objekt („MAPI“ / „Notes“) LoginLogin CreateItemCreateItem Hilfe in VBAOUTL.HLPHilfe in VBAOUTL.HLP

Page 59: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Beispiele mit OutlookBeispiele mit Outlook

Verschiedene Beispiele Verschiedene Beispiele und Übungen zu Outlook und Übungen zu Outlook

mitmitMicrosoft Visual FoxProMicrosoft Visual FoxPro

Page 60: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Outlook-BeispieleOutlook-Beispiele

An/Abmelden bei OutlookAn/Abmelden bei Outlook Zugriff auf OutlookZugriff auf Outlook BereichseingrenzungBereichseingrenzung Eintrag in das JournalEintrag in das Journal Anlegen eines TerminsAnlegen eines Termins Anlegen eines KontaktsAnlegen eines Kontakts Outlook-KonstantenOutlook-Konstanten

Page 61: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

An/Abmelden bei OutlookAn/Abmelden bei Outlook

Anmelden bei OutlookAnmelden bei Outlook

oOutlook= createobject( "Outlook.Application")oOutlook= createobject( "Outlook.Application")

oSession= .oOutLook.GetNameSpace("MAPI")oSession= .oOutLook.GetNameSpace("MAPI")

oSession.LogOn( alltrim( <lcProfile> ), , .t.)oSession.LogOn( alltrim( <lcProfile> ), , .t.)

Abmelden bei OutlookAbmelden bei Outlook

=oSession.logoff()=oSession.logoff()

=oOutlook.quit()=oOutlook.quit()

Page 62: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Zugriff auf OutlookZugriff auf Outlook

*-- Zugriff Journal*-- Zugriff Journal

oJournal = oSession.GetDefaultFolder(11)oJournal = oSession.GetDefaultFolder(11)

*-- Zugriff Termine*-- Zugriff Termine

oKontakte = oSession.GetDefaultFolder(9)oKontakte = oSession.GetDefaultFolder(9)

*-- Zugriff Kontakte*-- Zugriff Kontakte

oKontakte = oSession.getdefaultfolder(10)oKontakte = oSession.getdefaultfolder(10)

Page 63: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

BereichseingrenzungBereichseingrenzung

Bereichseingrenzung Beispiel JournalBereichseingrenzung Beispiel JournalLOCAL lcRange, ldVon, ldBisLOCAL lcRange, ldVon, ldBis

lcRange= '[Kategorien]= “ '+ ;lcRange= '[Kategorien]= “ '+ ;alltrim( "<Kategorie>" ) + ‘ " 'alltrim( "<Kategorie>" ) + ‘ " '

lcRange= '[Start] >= "'+ dtoc( ldVon)+ '" 'lcRange= '[Start] >= "'+ dtoc( ldVon)+ '" '

lcRange= '[Start] <= "'+ dtoc( ldBis)+ '" 'lcRange= '[Start] <= "'+ dtoc( ldBis)+ '" '

oItems= oJournal.Items.restrict( lcRange )oItems= oJournal.Items.restrict( lcRange )

Schleife über JournaleinträgeSchleife über Journaleinträge

for each oItem in oItems .. nextfor each oItem in oItems .. next

Page 64: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Anlegen JournaleintragAnlegen Journaleintrag

*-- Anlegen Eintrag Journal*-- Anlegen Eintrag Journal

local loItemlocal loItem

loItem = oOutlook.createitem(4)loItem = oOutlook.createitem(4)

*-- Werzuweisung*-- Werzuweisung

loItem.Subject = „“loItem.Subject = „“ loItem.Categories = „“loItem.Categories = „“

loItem.StartloItem.Start = „“= „“ loitem.End = „“loitem.End = „“

loItem.Duration = „“loItem.Duration = „“ loitem.Body = „“loitem.Body = „“

loItem.ContactNames = „“loItem.ContactNames = „“ loitem.Type = „“loitem.Type = „“

loItem.Companies = „“loItem.Companies = „“

*-- Speichern*-- Speichern

loItem.Save()loItem.Save()

Page 65: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Anlegen TerminAnlegen Termin

*-- Anlegen Eintrag Termin*-- Anlegen Eintrag Termin

local loTerminlocal loTermin

loTermin = oOutlook.createitem(1)loTermin = oOutlook.createitem(1)

*-- Werzuweisung*-- Werzuweisung

loTermin.SubjectloTermin.Subject = <Titel>= <Titel>

loTermin.StartloTermin.Start = <Datum Zeit>= <Datum Zeit>

loTermin.End loTermin.End = <Datum Zeit>= <Datum Zeit>

loTermin.BodyloTermin.Body = <Text>= <Text>

*-- Speichern*-- Speichern

loTermin.save()loTermin.save()

Page 66: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Anlegen KontaktAnlegen Kontakt

*-- Anlegen Eintrag Termin*-- Anlegen Eintrag Termin

local loAdresselocal loAdresse

loAdresse = oOutlook.createitem(2)loAdresse = oOutlook.createitem(2)

*-- Wertzuweisung*-- Wertzuweisung

loAdresse.LastName loAdresse.LastName = <Name>= <Name>

loAdresse.FirstNameloAdresse.FirstName = <Vorname>= <Vorname>

loAdresse.EMail1Address loAdresse.EMail1Address = <eMail>= <eMail>

loAdresse.BusinessFaxNumber loAdresse.BusinessFaxNumber = <Fax>= <Fax>

*-- Speichern*-- Speichern

loAdresse.save()loAdresse.save()

Page 67: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Outlook-KonstantenOutlook-Konstanten

OlDefaultFolderOlDefaultFolder

* * ConstantConstantValueValue

#define#define olFolderDeletedItems olFolderDeletedItems 33

#define #define olFolderOutboxolFolderOutbox 44

#define #define olFolderSentMailolFolderSentMail 55

#define #define olFolderInboxolFolderInbox 66

#define #define olFolderCalendarolFolderCalendar 99

#define #define olFolderContactsolFolderContacts 1010

#define #define olFolderJournalolFolderJournal 1111

#define #define olFolderNotesolFolderNotes 1212

#define #define olFolderTasksolFolderTasks 1313

OlItemsOlItems

* * ConstantConstantValueValue

#define #define olMailItemolMailItem 00

#define #define olAppointmentItem 1olAppointmentItem 1

#define #define olContactItemolContactItem 22

#define #define olTaskItemolTaskItem 33

#define #define olJournalItemolJournalItem 44

#define #define olNoteItemolNoteItem 55

#define #define olPostItemolPostItem 66

Hinweis: Komplette Konstanten Hinweis: Komplette Konstanten im Notizblatt zu dieser Seiteim Notizblatt zu dieser Seite

Page 68: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

OLE-Automation mit OLE-Automation mit ProjectProject

Ansteuerung von Project via Ansteuerung von Project via OLE-Automation aus OLE-Automation aus

Microsoft Visual FoxProMicrosoft Visual FoxPro

Page 69: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

OLE-Automation mit ProjectOLE-Automation mit Project

ApplicationApplication

ResourceResource

AssignmentAssignmentAssignment

CalendarCalendar

TaskTask

AssignmentAssignment

CalendarCalendar

ListList

WindowWindow

PanePane

CellCell

ResourceResource

TaskTask

SelectionSelection

ResourceResource

TaskTask

ListList

Object onlyObject onlyObject and CollectionObject and Collection

LegendLegend

ProjectProject

ResourceResource

TaskTask

Page 70: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

OLE-Automation mit SQL-OLE-Automation mit SQL-ServerServer

Ansteuerung von MS SQL-Ansteuerung von MS SQL-Server via OLE-Automation Server via OLE-Automation

ausausMicrosoft Visual FoxProMicrosoft Visual FoxPro

Page 71: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

OLE-Automation mit SQL-OLE-Automation mit SQL-ServerServer

Noch in VorbereitungNoch in Vorbereitung

Page 72: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

OLE-Automation mit OLE-Automation mit AccessAccess

Ansteuerung von MS Ansteuerung von MS Access via OLE-Access via OLE-Automation ausAutomation aus

Microsoft Visual FoxProMicrosoft Visual FoxPro

Page 73: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

OLE-Automation mit AccessOLE-Automation mit Access

Noch in VorbereitungNoch in Vorbereitung

Page 74: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Visual FoxPro als OLE-Visual FoxPro als OLE-ServerServer

Kurze Übersicht über die Kurze Übersicht über die OLE-Server-Funktionen OLE-Server-Funktionen

vonvonMicrosoft Visual FoxProMicrosoft Visual FoxPro

Page 75: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Aufrufbare FunktionenAufrufbare Funktionen

Fernsteuerung:Fernsteuerung: FoxDoCmdFoxDoCmd FoxEvalFoxEval SetErrModeSetErrMode SetOLEObjSetOLEObj CloseItCloseIt GetLastErrorGetLastError

Page 76: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Remote OLE AutomationRemote OLE Automation

Remote OLE-Automation Remote OLE-Automation aus aus

Microsoft Visual FoxProMicrosoft Visual FoxPro

Page 77: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Remote OLE AutomationRemote OLE Automation

Registry Registry EintragungEintragung

Remote Remote Automation Automation Connection Connection ManagerManager

Erst ab VFP 6.0 Erst ab VFP 6.0 sinnvoll...sinnvoll...

Page 78: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

ZusammenfassungZusammenfassung

Objektmodell Objektmodell wichtig!wichtig!

Automation Automation erlaubt Einbin-erlaubt Einbin-dung von Officedung von Office

Outlook einfachOutlook einfach Remote Remote

AutomationAutomation

Page 79: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Vielen Dank!Vielen Dank!

Das waren die Themen:Das waren die Themen: DDE-FunktionsübersichtDDE-Funktionsübersicht

OLE-Automation mit MS OLE-Automation mit MS WinWordWinWord

OLE-Automation mit MS ExcelOLE-Automation mit MS Excel

MAPI und VFPMAPI und VFP

OLE-Automation mit MS OutlookOLE-Automation mit MS Outlook

OLE-Automation mit MS ProjectOLE-Automation mit MS Project

OLE-Automation mit MS SQL-OLE-Automation mit MS SQL-ServerServer

OLE-Automation mit MS AccessOLE-Automation mit MS Access

FPOLE.DLL-FunktionsübersichtFPOLE.DLL-Funktionsübersicht

Aufrufbeispiel in WordBasicAufrufbeispiel in WordBasic

Remote OLE-AutomationRemote OLE-Automation

Page 80: Wizards & Builders GmbH Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro

Wizards & Wizards & Builders GmbH Builders GmbH

Wenn Fragen bestehen:Wenn Fragen bestehen:

Wizards & BuildersWizards & BuildersMethodische Software-Methodische Software-

Entwicklung GmbHEntwicklung GmbH

Frankfurter Str. 21bFrankfurter Str. 21b

61476 Kronberg61476 Kronberg

Tel.: 06173-950906Tel.: 06173-950906

Fax: 06173-950907Fax: 06173-950907

CIS: 101605,175CIS: 101605,175