Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 2/2011.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Lernen Sie eine Methode kennen, um Office- und andere Dokumente direkt im Access-Formular anzuzeigen und zu bearbeiten.

Techniken

VBA, Office

Voraussetzungen

Access 2000 und höher

Beispieldateien

DocsInForms.mdb

Shortlink

www.access-im-unternehmen.de/772

Office-Dokumente in Formularen anzeigen

André Minhorst, Duisburg

Es kommt immer wieder vor, dass eine Anwendung entweder auf die Daten in Word- oder Excel-Dokumenten zugreift - entweder um ihre Inhalte zu lesen oder diese zu ändern. Normalerweise öffnen Sie das entsprechende Dokument dann entweder sichtbar oder unsichtbar und führen die gewünschten Aktionen durch. Wie wäre es, wenn Sie Word, Excel und Co. statt im eigenen Fenster direkt innerhalb eines Access-Formulars anzeigen könnten? Dieser Beitrag stellt die dazu notwendigen Voraussetzungen und Techniken vor.

Natürlich gibt es mit dem OLE-Objekt-Feld in Tabellen und dem Steuerelement Gebundenes Objektfeld bereits eine Möglichkeit, Word-, Excel- und andere Office-Dokumente innerhalb eines Access-Dokuments anzuzeigen.

Abb. 1 zeigt, wie das etwa unter Access 2010 aussieht: Dort wird das Access-Ribbon komplett ausgeblendet und das Word-Ribbon aktiviert - mit Ausnahme des Datei-Registerreiters.

pic003.png

Abb. 1: Bearbeiten eines im OLE-Steuerelement angezeigten Word-Dokuments innerhalb eines Access-Formulars

Es fällt jedoch sehr unangenehm auf, dass ein Hin- und Herschalten zwischen dem gebundenen Objektfeld und eventuellen weiteren Steuerelementen im Formular ein ständiges Flackern sowie das Ein- und Ausblenden des Menüs der jeweiligen Anwendung hervorruft.

Alternativ öffnen Sie das Office-Dokument direkt etwa in einem eigenen Word- oder Excel-Fenster. Hier ist jedoch viel Aufwand erforderlich, um die Benutzeraktionen in Zusammenhang mit dem jeweiligen Element zu steuern - der Benutzer kann das Dokument beispielsweise schließen oder speichern, auch wenn dies nicht gewünscht ist.

Das DSOFramer-Steuerelement

Grundlage für die in diesem Beitrag vorgestellten Techniken ist das ActiveX-Steuerelement DSOFramer_moss.ocx.

Es handelt sich dabei um ein Beispiel von Microsoft zum Einbetten OLE-fähigen Anwendungen wie Word oder Excel. Die Original-Quellen von Microsoft, die offensichtlich nicht mehr verfügbar sind, wurden durch Sascha Trowitzsch angepasst und eingedeutscht.

Die im Download verfügbare Datei DSOFramer_moss.ocx muss mit der folgenden Anweisung im System registriert werden:

RegSvr32.exe <Dateipfad>.DSOFramer_moss.ocx

Um das Steuerelement zu einem Formular hinzuzufügen, öffnen Sie das Formular in der Entwurfsansicht und zeigen den Dialog zum Einfügen von ActiveX-Steuerelementen an. Dort finden Sie nun auch einen Eintrag namens DSOFramer Control Object (s. Abb. 2). Nachdem Sie dieses Steuerelement in ein Formular eingefügt haben, sieht es zunächst wie in Abb. 3 aus.

pic001.png

Abb. 2: Einfügen des DSOFramer-Steuerelements

pic002.png

Abb. 3: Ein mit dem DSOFramer-Steuerelement ausgestattetes Formular in der Entwurfsansicht

Beachten Sie, dass das DSOFramer-Steuerelement lediglich den Rahmen für die Anzeige der Office-Dokumente liefert. Die Anwendungen selbst, also Word, Excel und Co., müssen ebenfalls auf dem betroffenen Rechner installiert sein.

Dokument öffnen

Als Erstes interessiert uns natürlich, wie wir ein Dokument in das DSOFramer-Steuerelement laden und dieses somit anzeigen können.

Die einfachste Möglichkeit bietet die Benutzeroberfläche des Steuerelements: Hinter dem File-Menü oben links verbergen sich nämlich die üblichen Datei-Befehle, darunter auch einer zum Öffnen eines Dokuments.

Aber Sie können ein Dokument natürlich auch unter Einsatz von VBA öffnen. Dies erledigt die Methode Open des Objekts objDSOFramer, die Sie beispielsweise so aufrufen:

Me!ctlDSOFramer.Open CurrentProject.Path & "\test.docx"

Im Formular erscheint nun wie in Abb. 4 das angegebene Dokument. Die Open-Methode ermöglicht noch weitere Parameter, zum Beispiel diese:

pic005.png

Abb. 4: Das DSOFramer-Steuerelement mit Word als Anwendung innerhalb eines Access-Formulars

  • ReadOnly: Legt fest, ob das Dokument schreibgeschützt geöffnet werden soll. Wird True angegeben, können Sie das Dokument zwar bearbeiten, aber nicht unter dem gleichen Namen speichern. Mit der Boolean-Eigenschaft IsReadOnly können Sie später abfragen, ob das aktuelle Dokument schreibgeschützt wurde (Me!ctlDSOFramer.IsReadOnly).
  • ProgId: Gibt die ProgID der Anwendung an, mit der das Dokument geöffnet werden soll.

Genau wie hier unter Office 2010 erscheinen auch unter älteren Versionen die Menüleisten/Ribbons der jeweiligen Anwendung.

Allerdings sind einige Elemente nicht verfügbar: Hier unter Office 2010 fehlt beispielsweise der Registerreiter Datei, der den Backstage-Bereich mit den Funktionen etwa zum Speichern oder Drucken des aktuellen Dokuments anzeigt.

Dafür liefert das DSOFramer-Steuerelement ein eigenes Menü mit den entsprechenden Befehlen (s. Abb. 5).

pic006.png

Abb. 5: Dateimenü des DSOFramer-Steuerelements

Steuerelement referenzieren

Auch wenn sich die Eigenschaften und Methoden von ActiveX-Steuerelementen per direkter Referenz auf das Steuerelement (beispielsweise Me!ctlDSOFramer) nutzen lassen, wollen wir dafür eine eigene Objektvariable deklarieren, die beim Öffnen des Formulars gefüllt wird.

Einer der Vorteile dieser Vorgehensweise ist, dass so alle Eigenschaften und Methoden des Objekts per IntelliSense verfügbar sind:

Dim WithEvents objDSOFramer As

DSOFramer.FramerControl

Das Schlüsselwort WithEvents bewirkt, dass Sie für das neue Objekt objDSOFramer Ereignisprozeduren anlegen können - dazu später mehr.

Anschließend hinterlegen Sie die folgende Prozedur für die Ereigniseigenschaft Beim Laden des Formulars:

Private Sub Form_Load()

    Set objDSOFramer = Me!ctlDSOFramer.Object

End Sub

DSOFramer-Elemente ein- und ausblenden

Die beiden Leisten im oberen Bereich des DSOFramer-Steuerelements benötigen Sie möglicherweise nicht für jeden Einsatzzweck.

Die Titelleiste mit dem Dateinamen blenden Sie mit der Eigenschaft TitleBar ein und aus. Die folgende Anweisung lässt diese verschwinden:

Me!ctlDSOFramer.Titlebar = False

Mit den beiden Eigenschaften TitlebarColor und TitlebarTextColor können Sie auch die Schrift- und Hintergrundfarbe der Titelleiste anpassen, hier etwa mit weißer Schrift und grauem Hintergrund:

With Me!ctlDSOFramer

    .TitlebarColor = &HCCCCCC

    .TitlebarTextColor = &HFFFFFF

End With

Die Menüleiste blenden Sie mit der Eigenschaft MenuBar ein und aus. Um diese auszuschalten, verwenden Sie beispielsweise die folgende Anweisung:

Me!DSOFramer.MenuBar = False

Schließlich können Sie auch die Anzeige der Menü-/Ribbonleiste der angezeigten Anwendung beeinflussen. Dies erledigen Sie mit der entsprechenden Einstellung der Eigenschaft MenuBar, hier etwa zum Ausblenden:

Me!ctlDSOFramer.MenuBar = False

Wenn Sie alle drei Elemente ausblenden, zeigt das Formular nur noch das nackte Dokument an.

Elemente der Host-Anwendung wie etwa die Kontextmenüs sind jedoch nach wie vor verfügbar (s. Abb. 6).

pic007.png

Abb. 6: Dieses Access-Formular zeigt nur noch das reine Dokument an.

Aussehen des DSOFramer-Steuerelements

Es gibt noch ein paar Eigenschaften, mit denen Sie das Aussehen des Steuerelements beeinflussen können:

  • BackColor: Stellt die Hintergrundfarbe ein, solange kein Dokument geladen ist
  • BorderColor: Stellt die Rahmenfarbe ein.
  • BorderStyle: Stellt die Rahmenart ein. Mögliche Werte: dsoBorderNone (0), dsoBorderFlat (1), dsoBorder3D (2) und dsoBorder3DThin (3).
  • ForeColor: Stellt die Farbe des Vordergrundes ein. Es ist allerdings nicht ersichtlich, wo diese sichtbar ist.
  • Caption: Entspricht dem Text in der Titelzeile links vom Dateinamen, falls vorhanden.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.