Autor Thema: Drucken eines Excel OLE Objekte  (Gelesen 1366 mal)

Offline MiPa

  • Frischling
  • *
  • Beiträge: 15
Drucken eines Excel OLE Objekte
« am: 16.12.10 - 11:53:43 »
Hallo,

ich möchte per Klick den Inalt eines Excel OLE Objekt das im Body Field liegt aus Notes heraus Drucken. Nun bekomme ich einen Fehler Error 91 Obejct Variable not set. Ich weiß absolut keinen Rat mehr. Woran könnte das liegen?

Michael


Code
Sub Click(Source As Button)
	
	Dim Doc As NotesDocument
	Dim Handle As Variant
	Dim PrintRet As Integer
	Dim Delay As Long
	
	On Error Goto Errhandle
	
	
	Delay = 3
	
	If Doc.HasEmbedded Then
		
		Dim RTItem As Variant
		Set RTItem = Doc.GetFirstItem( "Body" )
		If ( RTItem.Type = RICHTEXT ) Then
			
			If Not Isempty(RTItem.EmbeddedObjects) Then
				Forall Obj In RTItem.EmbeddedObjects
					If ( Obj.Type = EMBED_OBJECT ) Then
						
						If Obj.Class = "Excel.Sheet.5"  Or Obj.Class = "Excel.Sheet.8"  Or Obj.Class = "ExcelWorksheet" Then
							Set Handle = Obj.Activate( True )
							If ( Handle Is Nothing ) Then
								Messagebox "Invalid OLE interface"
								Exit Sub
							Else
								Handle.Application.Assistant.Visible = False	
								'Handle.Application.Visible = False
								Handle.Application.DisplayAlerts = True
								Dim x As Integer
								For x=1 To handle.Application.ActiveWorkbook.Sheets.Count
									Handle.Application.ActiveWorkbook.Sheets(x).PageSetup.PrintGridlines = 1
									Handle.Application.ActiveWorkbook.Sheets(x).PageSetup.Printheadings = 1
									Handle.Application.ActiveWorkbook.Sheets(x).PageSetup.Printnotes = 1
								Next
								PrintRet = 1
								
								PrintRet = Handle.Application.ActiveWorkbook.PrintOut( , , , 0, , , , ) 
								Delay = 3 * Handle.Application.ActiveWorkbook.Sheets.Count ' Zahl nach eigene ermessen anpassen.
								Sleep Delay
								Call Handle.Application.ActiveWorkbook.Close(False)
								Call Handle.Application.Quit()
								If PrintRet = 1 Then
									Messagebox  "Object """ & Obj.Source & """ is not printed"
								End If
							End If
						End If
						
					End If
				End Forall
			End If
		End If
	End If
	Exit Sub
	
Errhandle:
	Messagebox "Error " & Err & " " & Error
	Exit Sub
	
End Sub

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Drucken eines Excel OLE Objekte
« Antwort #1 am: 16.12.10 - 12:05:58 »
Doc wird nicht instantiiert.

Ergänze Deinen ErrorHandler um Erl, dann hast Du auch sofort die Zeile, in der ein Fehler auftritt.

Bernhard

Offline MiPa

  • Frischling
  • *
  • Beiträge: 15
Re: Drucken eines Excel OLE Objekte
« Antwort #2 am: 16.12.10 - 12:24:48 »
OK.
Messagebox "Zeile" & Cstr(Erl) & " " & "Error " & Err & " " & Error

Schmeißt mir einen Fehler in Zeile 13 raus: If Doc.HasEmbedded Then

Wenn ich davor ein Set Doc = Source.Document
kann ich das nicht abspeichern. Was müsste ich stattdessen schreiben?

Michael

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Drucken eines Excel OLE Objekte
« Antwort #3 am: 16.12.10 - 12:40:51 »
Hallo.

Sorce = Button
Button hat kein Document.

Dim uiws As New NotesUIWorkspace   ->  als Mindestanforderung

Set doc = uiws.CurrentDocument.Document


Andreas

Offline MiPa

  • Frischling
  • *
  • Beiträge: 15
Re: Drucken eines Excel OLE Objekte
« Antwort #4 am: 16.12.10 - 13:00:51 »
Hat perfekt geklappt. Danke  :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz