Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Drucken von OLE-Elementen

40 views
Skip to first unread message

Heinz

unread,
Mar 8, 2010, 7:05:01 AM3/8/10
to
Hallo Zusammen

Gibt es in Access eine Möglichkeit als OLE hinterlegte Dateien (EXCEL,
Powerpoint, Word usw.) auszudrucken. Alos nicht den hinterlegten Namen des
OLE-Objekts sondern das dahintersehende EXCEL-,Word,-Powerpoint sheet

Gruß und danke: Heinz
--
Heinz

Thomas Möller

unread,
Mar 8, 2010, 11:13:53 AM3/8/10
to
Hallo Heinz,

Am 08.03.2010 13:05, schrieb Heinz:
> Gibt es in Access eine Möglichkeit als OLE hinterlegte Dateien (EXCEL,
> Powerpoint, Word usw.) auszudrucken. Alos nicht den hinterlegten Namen des
> OLE-Objekts sondern das dahintersehende EXCEL-,Word,-Powerpoint sheet

bei dem letzten Satz bin ich mir nicht sicher, was Du damit genau sagen
willst, daher meine Frage: Sind die Dateien im Dateisystem gespeichert?
Oder sind die Objekte in einer Tabelle Deiner Datenbank gespeichert?

CU
--
Thomas

Homepage: www.Team-Moeller.de

Heinz

unread,
Mar 10, 2010, 9:32:03 AM3/10/10
to
Hallo Thomas
Eigentlich bin ich hier noch ganz offen, da ich erst beim Versuch bin dies
zu verwirklichen. Die geplante Datenbank soll Arbeitsanweisungen für
verschiedenen Personengruppen in Form von Powerpoint sheets enthalten. Die
unterschiedlichen Personengruppen wiederum bekommen gewisse Profile
zugewiesen.
Die Ausgabe soll dann über das Personenprofil gesteuert werden, d.h. durch
Eingabe eines Profils sollen die verschiedenen Powerpoints gesucht und
anschießend gedruckt werden.

Im Voraus schon mal DANKE für deine Mühe : Heinz
--
Heinz


"Thomas Möller" schrieb:

> .
>

Thomas Möller

unread,
Mar 10, 2010, 12:10:18 PM3/10/10
to
Hallo Heinz,

Am 10.03.2010 15:32, schrieb Heinz:
> Eigentlich bin ich hier noch ganz offen, da ich erst beim Versuch bin dies
> zu verwirklichen. Die geplante Datenbank soll Arbeitsanweisungen für
> verschiedenen Personengruppen in Form von Powerpoint sheets enthalten. Die
> unterschiedlichen Personengruppen wiederum bekommen gewisse Profile
> zugewiesen.
> Die Ausgabe soll dann über das Personenprofil gesteuert werden, d.h. durch
> Eingabe eines Profils sollen die verschiedenen Powerpoints gesucht und
> anschießend gedruckt werden.

Danke für Deine Erläuterungen.

Eine Antwort bist Du allerdings noch schuldig geblieben:

Heinz

unread,
Mar 11, 2010, 2:52:01 AM3/11/10
to
Hallo Thomas

Sorry, die Objekte sind in einer Datenbank gespeichert.

Gruß: Heinz
--
Heinz


"Thomas Möller" schrieb:

> Hallo Heinz,

> .
>

Thomas Möller

unread,
Mar 11, 2010, 11:48:30 AM3/11/10
to
Hallo Heinz,

Am 11.03.2010 08:52, schrieb Heinz:
> Sorry, die Objekte sind in einer Datenbank gespeichert.

dann kannst Du den Prozess in drei Schritten erledigen:

Als erstes sorgst Du dafür, dass die zu druckenden Objekte temporär auf
der Festplatte gespeichert werden. Dazu kannst Du die Funktion OLEToDisk
von Stephen Lebans verwenden:
http://www.lebans.com/oletodisk.htm
(Link in einer Zeile)

Die so gespeicherte Datei kannst Du dann im zweiten Schritt mittels der
Funktion ShellExecute drucken. Details findest Du hier:
http://www.vbarchiv.net/api/details.php?id=shellexecute
(Link in einer Zeile)

Am Ende löscht Du dann die erstellte Datei wieder.


HTH
--
Thomas

Homepage: www.Team-Moeller.de

Stefan Dase

unread,
Mar 11, 2010, 2:01:37 PM3/11/10
to
Hallo Heinz,

neben der von Thomas beschriebenen Möglichkeiten mit Zwischenspeichern
auf der Festplatte, hast du für MS Office-Objekte (Excel, Word,
PowerPoint) noch die Möglichkeit, diese direkt auszudrucken.

Wenn du aus einem Formular druckst, könnte das z.B. so aussehen:

Private Sub ObjektDrucken()

Dim obj As Object

Set obj = Me!OleFeld.Object

'für Excel
obj.activesheet.PrintOut

'für Word
'obj.activewindow.PrintOut False

'für PowerPoint
'obj.activepresentation.PrintOut False

DoEvents
obj.Close

Set obj = Nothing

End Sub

Viele Grüße aus Bremen,
Stefan

Heinz

unread,
Mar 12, 2010, 6:16:01 AM3/12/10
to
Hallo Stefan
Für " Set obj = Me!OleFeld.Object" erhalte ich die Fehlermeldung
"Unzulässige Verwendung vo ME"
Was mache ich hier falsch?

Gruß und vielen Dank: Heinz


--
Heinz


"Stefan Dase" schrieb:

> .
>

Stefan Dase

unread,
Mar 12, 2010, 6:28:10 AM3/12/10
to
Hallo Heinz!

> Für " Set obj = Me!OleFeld.Object" erhalte ich die Fehlermeldung
> "Unzulässige Verwendung vo ME"
> Was mache ich hier falsch?

Wo steht dein Programmkode? Mein Beispiel war für den Einsatz in einem
Formular ausgelegt, z.B. als Reaktion auf einen Mausklick auf einen
Button. Wenn du die Anweisung in einem allgemeinen Modul verwendest,
musst du den Bezug zum Steuerelement anders herstellen!

Z.B. auf ein aktuell geögffnetes Formular:

Set obj = Forms("Formname")!OleFeld.Object

"Formname" und "OleFeld" musst du unbedingt an die Benennung deiner
Objekte anpassen!

Wenn du damit noch nicht ganz zurrecht kommst, schildere uns bitte
genau, welchen Kode du in welchem Modul stehen hast, und wie er
aufgerufen wird.

Heinz

unread,
Mar 15, 2010, 8:08:01 AM3/15/10
to
Hallo Stefan

Jetzt hat es zumindest bei Excel funktioniert. Beim Versuch ein Powerpoint
auszudrucken erhalte ich die Fehlermeldung " Objekt unterstützt diese Methode
oder Eigenschaft nicht"
Dann hätte ich noch eine Frage: Kann ich diese auch irgendwie zum Drucken
mehrerer Datensätze verwenden. Also ich habe eine gewisse Anzahl an
Powerpoint sheets im Formular und möchte diese mit einen Druckaufruf drucken.

Auf jeden Fall aml vielen Dank, Du hast mir bereits sehr geholfen: Heinz
--
Heinz


"Stefan Dase" schrieb:

> Hallo Heinz!

> .
>

Stefan Dase

unread,
Mar 15, 2010, 8:37:51 AM3/15/10
to
Hallo Heinz!

> Jetzt hat es zumindest bei Excel funktioniert.

Freut mich.

> Beim Versuch ein Powerpoint auszudrucken erhalte ich die Fehlermeldung
> " Objekt unterstützt diese Methode oder Eigenschaft nicht"

Hm, müsstest du mal im PP-Objektmodell prüfen, ob diese Funktion nicht
mehr existiert. Ich hatte das zuletzt unter Office 97 getestet.

> Dann hätte ich noch eine Frage: Kann ich diese auch irgendwie zum Drucken
> mehrerer Datensätze verwenden. Also ich habe eine gewisse Anzahl an
> Powerpoint sheets im Formular und möchte diese mit einen Druckaufruf drucken.

Wenn du mehrere Datensätze mit eingebundenen OLE-Objekten hast, kannst
du auch in einer Schleife durchlaufen und jedes Objekt einzeln
ausdrucken. Ein "Print_All" kenne ich nicht.

Heinz

unread,
Mar 16, 2010, 9:49:01 AM3/16/10
to
Hallo Stefan
Sorry nochmals für meine Fragerei, aber wenn Du mir noch sagen könntest wie
eine solche Schleife zum Ausdrucken aller Datensätze ausehen könnte?

Nichts für ungut und vielen Dank: Heinz
--
Heinz


"Stefan Dase" schrieb:

> Hallo Heinz!

> .
>

Stefan Dase

unread,
Mar 16, 2010, 11:33:56 AM3/16/10
to
Hallo Heinz!

> Sorry nochmals für meine Fragerei, aber wenn Du mir noch sagen könntest wie
> eine solche Schleife zum Ausdrucken aller Datensätze ausehen könnte?

Hier ein Muster. Wie du die Datensätze letztendlich auswählst, weißt du
selber am besten.

Public Sub AnhaengeAusdrucken()

Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim obj As Object

Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("SELECT * FROM Tabelle1", dbOpenDynaset)

Do While Not rst.EOF
Set obj = rst.Fields("DeinOleFeld").Object
'Beispiel für Excel-Dateien
obj.ActiveSheet.PrintOut
rst.MoveNext
Loop

rst.Close

Set obj = Nothing
Set rst = Nothing
Set dbs = Nothing

End Sub

Heinz

unread,
Mar 23, 2010, 4:05:01 AM3/23/10
to
Hallo Stefan

Leider muss ich Dich mit diesem Zeug nochmals belästigen. Ich habe diese
Version mal versucht --> erhalte in der Zeile unten jetzt die Fehlermeldung
"Methode oder Datenbankobjekt nicht gefunden"


Set obj = rst.Fields("OleFeld").Object

Sorry! Gruß und danke: Heinz
--
Heinz


"Stefan Dase" schrieb:

> Hallo Heinz!

> .
>

Stefan Dase

unread,
Mar 23, 2010, 4:25:54 AM3/23/10
to
Hallo Heinz!

> Leider muss ich Dich mit diesem Zeug nochmals belästigen. Ich habe diese
> Version mal versucht --> erhalte in der Zeile unten jetzt die Fehlermeldung
> "Methode oder Datenbankobjekt nicht gefunden"
>
> Set obj = rst.Fields("OleFeld").Object

Da war ich auch etwas zu voreilig, das Tebellenfeld hat keine
Object-Eigenschaft. Diese steht gemäß Hilfe nur in Steuerelementen zur
Verfügung, also in Formularen oder Berichten.

Eine Möglichkeit wäre, ein Formular unsichtbar zu laden und dann in
einer Schleife über die gefundenen Datensätze zu laufen. Bei Interesse
suche ich dir mal so etwas raus, hatte vor Jahren für das automatische
Drucken von Office-Dokumenten solch einen Ansatz verfolgt.

Heinz

unread,
Mar 23, 2010, 5:22:06 AM3/23/10
to
Hallo Stefan

Das wäre super, bevor ich hier total verzweifle.

Gruß: Heinz
--
Heinz


"Stefan Dase" schrieb:

> Hallo Heinz!

> .
>

Stefan Dase

unread,
Mar 23, 2010, 5:02:29 PM3/23/10
to
Hallo Heinz!

Wie versprochen hier mein Code aus einem anderen Projekt.

Ich habe ein Formular "frmSonderformate" mit den Feldern aus der Tabelle
mit dem eingebundenen OLE-Objekt (=Sonderformat).

'Datensätze als Recordset laden
sSql = "SELECT tblSonderformate.* " & _
"FROM tblSchilder INNER JOIN tblSonderformate ON " & _
"tblSchilder.sc_key = tblSonderformate.so_schildkey " & _
"WHERE " & sFilter
Set rst = CurrentDbC.OpenRecordset(sSql, dbOpenSnapshot)

'Schleife über die Datensätze
If rst.RecordCount > 0 Then
'Formular als Instanz laden
Set frm = New Form_frmSonderformate
Do While Not rst.EOF
Select Case rst!AppID
Case APPTYP_EXCEL 'Excel-Objekt
frm.Filter = "so_schildkey = '" & rst!so_schildkey & "'"
frm.FilterOn = True
If Not IsNull(frm!so_schildkey) Then
Set obj = frm![Objekt].Object
obj.activesheet.PrintOut
DoEvents
obj.Close
End If

Case APPTYP_WORD 'Word-Objekt
frm.Filter = "so_schildkey = '" & rst!so_schildkey & "'"
frm.FilterOn = True
If Not IsNull(frm!so_schildkey) Then
Set obj = frm![Objekt].Object
obj.activewindow.PrintOut False
DoEvents
obj.Close
End If

Case APPTYP_PPT 'PowerPoint-Objekt
frm.Filter = "so_schildkey = '" & rst!so_schildkey & "'"
frm.FilterOn = True
If Not IsNull(frm!so_schildkey) Then
Set obj = frm![Objekt].Object
obj.activepresentation.PrintOut False
DoEvents
obj.Close
End If
End Select
rst.MoveNext
Loop
rst.Close
End If

Ich hoffe, dir hilft das weiter?!
Stefan

0 new messages