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
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
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
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
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)
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“
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
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
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)
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
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
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"]')
Wizards & Wizards & Builders GmbH Builders GmbH
OLE-Automation OLE-Automation AllgemeinAllgemein
Vorbemerkungen zum Vorbemerkungen zum Einsatz von OLE-Einsatz von OLE-
AutomationAutomation
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
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)
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
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 (!)
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
Wizards & Wizards & Builders GmbH Builders GmbH
Objektmodell von WinWordObjektmodell von WinWord
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
Wizards & Wizards & Builders GmbH Builders GmbH
Hinweise zu WinWordHinweise zu WinWord
Custom Custom Document Document PropertiesProperties
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
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
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)
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.
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()
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
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
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
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
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 “
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)
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()
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()
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
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( ))
Wizards & Wizards & Builders GmbH Builders GmbH
Objektmodell von ExcelObjektmodell von Excel
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
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
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
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.
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
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)
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)
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)
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
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})")
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
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
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“
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
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)
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
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
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)
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)
Wizards & Wizards & Builders GmbH Builders GmbH
Objektmodell von Outlook Objektmodell von Outlook (2)(2)
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
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
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
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()
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)
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
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()
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()
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()
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
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
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
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
Wizards & Wizards & Builders GmbH Builders GmbH
OLE-Automation mit SQL-OLE-Automation mit SQL-ServerServer
Noch in VorbereitungNoch in Vorbereitung
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
Wizards & Wizards & Builders GmbH Builders GmbH
OLE-Automation mit AccessOLE-Automation mit Access
Noch in VorbereitungNoch in Vorbereitung
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
Wizards & Wizards & Builders GmbH Builders GmbH
Aufrufbare FunktionenAufrufbare Funktionen
Fernsteuerung:Fernsteuerung: FoxDoCmdFoxDoCmd FoxEvalFoxEval SetErrModeSetErrMode SetOLEObjSetOLEObj CloseItCloseIt GetLastErrorGetLastError
Wizards & Wizards & Builders GmbH Builders GmbH
Remote OLE AutomationRemote OLE Automation
Remote OLE-Automation Remote OLE-Automation aus aus
Microsoft Visual FoxProMicrosoft 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...
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
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
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