Autor Thema: Ole-Objecte entladen  (Gelesen 1443 mal)

Offline Grmpf

  • Frischling
  • *
  • Beiträge: 34
Ole-Objecte entladen
« am: 16.01.07 - 13:47:12 »
hallo,


ich erstelle aus einer maske über eine schaltfläche ein worddokument aus den inhalten des aktuellen dokuments. klappt soweit ganz gut.

folgendes problem :
nach langem googlen hab ich leider nichts gefunden wie ich die word-instanz sinnvoll entladen kann, nachdem der benutzer word herkömmlich schließt...

ich denke ich müsste irgndwie das window.close event der word instanz abfragen und entsprechend etwas wie Set word = Nothing machen... ist das der richtige ansatz/geht das?

mein momentanes script zum erstellen des word-objects :

Sub Click(Source As Button)
   Dim session As NotesSession
   Dim uidoc As NotesUIDocument
   Dim ws As New NotesUIWorkspace
   Dim textsel As Variant
   Dim word As Variant
   

   Set word = CreateObject("Word.Application")
   word.Visible = True   
   word.Documents.Add
   Set textsel =word.Selection   
   textsel.TypeText("Test")
   
   
   
End Sub


... mit diesem script bleiben die word-instanzen als speicherleichen im task-manager.




Freue mich über jeden hinweis ;)


danke im vorraus
matze


Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: Ole-Objecte entladen
« Antwort #1 am: 16.01.07 - 21:16:51 »
Schau dir einmal die WORD-Automationsklasse von Axel Matthies an.

http://www.free.dominoserver.de/computer/noteslibrary.nsf/d2d59a3d7fc73a2bc1256a6900638352/331dd66d2239a1b2c1256dc50038f49e!OpenDocument

Die hilft dir vielleicht bei der Transformation von "klappt schon ganz gut" zu einem echten "funktioniert stabil und immer".

An den ersten Teilen siehst du schon, wie man Word öffnet, schließt und beendet. Deshalb ausschnittsweise ein wenig Code:

'--- Deklaration von API-Funktionen ---
Declare Function SetActiveWindow Lib "user32" Alias "SetActiveWindow" (Byval Hwnd As Long) As Long
Declare Function SetForegroundWindow Lib "user32" (Byval Hwnd As Long) As Long
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (Byval ClassName As String, Byval lpWindowName As Long) As Long

'--- Klasse cWord     Klasse mit Grundfunktionen
Class cWord
   
   objWord As Variant
   
     'Kontruktor - Prozedur
   Sub New       
      Set objWord = Nothing
      
      On Error Resume Next
      Set objWord = GetObject("", "Word.Application")
      If Err = 208 Then  '  Fehler 208 tritt auf wenn Word noch nicht läuft
         Err = 0
         Set objWord = CreateObject("Word.Application")
         objWord.Visible = True  'Word sichtbar machen
      End If  'If Err = 208 Then
   End Sub
   
   
     'Destruktor-Prozedur
   Sub Delete
      Set objWord = Nothing         
   End Sub
   
   
     'Beendet Word
   Sub CloseWord
      objWord.Quit 0
   End Sub
   
   
   'Bringt Word als Vollbild in den Vordergrund
   Sub ActivateWord     
      
      Dim hWnd As Long
      
      objWord.WindowState = 1  ' Application - Fenster auf Vollbild   
      hWnd = FindWindow("OPUSAPP", 0)  'Handle auf Wordfenster
      If hWnd = 0 Then Exit Sub      
      Call SetActiveWindow(hWnd)
      Call SetForegroundWindow(hWnd)
   End Sub
   
   
   'Neues Dokument auf Basis einer Vorlage erstellen. Name wird als Parameter übergeben.
   Sub CreateNewDoc (strVorlage As String)       
      objWord.Documents.Add Rtrim$(strVorlage), False 
   End Sub
   
   
   'Einfügen eines Textbausteins an einer Textmarke
   Sub InsertAutoTextAtBM(strMarke As String, strTextbaustein As String)
      objWord.ActiveDocument.Bookmarks(strMarke).Select   ' Zu Textmarke springen
      objWord.ActiveDocument.AttachedTemplate.AutoTextEntries(Cstr(strTextbaustein)).Insert(objWord.Selection.Range)
   End Sub
   
...

Gruß

Norbert
Situs vilate in isse tabernit.

Offline Grmpf

  • Frischling
  • *
  • Beiträge: 34
Re: Ole-Objecte entladen
« Antwort #2 am: 17.01.07 - 08:22:57 »
vielen dank. genau das was ich gesucht habe ... Daumen hoch!


grüße
matze

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz