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
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
Im Voraus schon mal DANKE für deine Mühe : Heinz
--
Heinz
"Thomas Möller" schrieb:
> .
>
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:
Sorry, die Objekte sind in einer Datenbank gespeichert.
Gruß: Heinz
--
Heinz
"Thomas Möller" schrieb:
> 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
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
Gruß und vielen Dank: Heinz
--
Heinz
"Stefan Dase" schrieb:
> .
>
> 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.
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!
> .
>
> 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.
Nichts für ungut und vielen Dank: Heinz
--
Heinz
"Stefan Dase" schrieb:
> 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
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!
> .
>
> 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.
Das wäre super, bevor ich hier total verzweifle.
Gruß: Heinz
--
Heinz
"Stefan Dase" schrieb:
> 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