Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Diana82 am 10.02.06 - 14:53:12

Titel: Excel Datei nicht speichern
Beitrag von: Diana82 am 10.02.06 - 14:53:12
Hallo,
habe da ein Problem. Ist wahrscheinlich ganz einfach, aber kann nichts finden.
Also ich exportiere von einer Maske Zahlen in eine bestimmte Excel-Datei, dort wird dann was gerechnet und anschließend importiere ich dann wieder Zahlen. Am Ende möchte ich das Excel-Dokument schließen und nicht speichern.
Das ganze soll dann unsichtbar im Hintergrund laufen.
Also mein Problem ist jetzt wie ich NICHT speichere beim schließen.  ??? Kann mir da jemand helfen?
Danke
Gruß
Diana
Titel: Re: Excel Datei nicht speichern
Beitrag von: Glombi am 10.02.06 - 14:56:33
Ich nehme an, dass Du mit den COM Klassen arbeitest?

Falls ja, dann sieh mal hier:
http://www.excel-vba.com/vba-workbooks.htm

If you want to close the active workbook without saving it:
ActiveWorkbook.Saved = True
ActiveWorkbook.Close

und hier die Doku aus MSDN
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_wrcore/html/wrgrfexcelworkbookobject.asp


Andreas
Titel: Re: Excel Datei nicht speichern
Beitrag von: Diana82 am 10.02.06 - 14:59:07
ähm...keine Ahnung. Mache das ganze mit LotusScript.
Titel: Re: Excel Datei nicht speichern
Beitrag von: Glombi am 10.02.06 - 15:01:06
Poste mal den Code.
Titel: Re: Excel Datei nicht speichern
Beitrag von: Diana82 am 10.02.06 - 15:03:32
Sub Click(Source As Button)
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim xlApp As Variant
   Dim xlsheet As Variant
   Dim rows As Integer
   Dim cols As Integer
   Dim roi As String
   Dim kap As String
   
   Set uidoc = ws.CurrentDocument
   Set xlApp = CreateObject("Excel.Application")
   xlApp.Workbooks.Open "J:\DCF.xls"   
   xlApp.Visible = True
   Set xlsheet = xlApp.Workbooks(1).Worksheets(1)
   
   rows=12         'Nutzungsdauer
   cols = 4
   nutz=uidoc.FieldGetText( "k_re_j_52" )
   xlsheet.Cells(rows,cols).Value = nutz
   
   (...)
   
   roi   = xlsheet.cells( 24 ,4 ).value    'ROI aus Excel
   Call uidoc.FieldSetText( "k_roi", roi )
   
   kap   = xlsheet.cells( 225 ,16 ).value    'Kapitalrückfluss aus Excel
   Call uidoc.FieldSetText("k_kap_rück", kap)
   
   
   xlApp.Workbooks.close
   
   
End Sub
Titel: Re: Excel Datei nicht speichern
Beitrag von: Glombi am 10.02.06 - 15:05:46
Am Ende muss es so lauten:

xlApp.Workbooks.Saved = True
xlApp.Workbooks.close


Du verwendest die COM Klassen  ;)

Ausserdem würde ich anstelle von
  xlApp.Visible = True
ein
  xlApp.Visible = False

verwenden, denn Du willst ja nix sehen, oder?


Andreas

Titel: Re: Excel Datei nicht speichern
Beitrag von: Diana82 am 10.02.06 - 15:09:03
geht nicht!  >:(
Folgende Fehlermeldung kommt:
"Instance member SAVED does not exist"

Das mit dem visible ist klar, ist nur jetzt, damit ich seh obs funktioniert.  :)
Titel: Save( ohne d)
Beitrag von: jkunze am 10.02.06 - 15:14:49
 müßte gehen, Gruß
Titel: Re: Excel Datei nicht speichern
Beitrag von: koehlerbv am 10.02.06 - 15:16:07
Save ist eine Methode und etwas ganz anderes!

Welche Excel-Version verwendest Du denn? Aber die Property Saved müsste schon seit Urzeiten dabei sein ...

Bernhard
Titel: Re: Excel Datei nicht speichern
Beitrag von: Diana82 am 10.02.06 - 15:18:05
Excel 2003
In dem Dokument befinden sich auch Makros, aber die dürften ja eigentlich dabei nicht stören oder?
Titel: Re: Excel Datei nicht speichern
Beitrag von: Glombi am 10.02.06 - 15:28:35
Ok, Diana hat Recht. LotusScript zickt mal wieder rum.

Es muss so heissen:

(...)
   
   roi   = xlsheet.cells( 24 ,4 ).value    'ROI aus Excel
   Call uidoc.FieldSetText( "k_roi", roi )
   
   kap   = xlsheet.cells( 225 ,16 ).value    'Kapitalrückfluss aus Excel
   Call uidoc.FieldSetText("k_kap_rück", kap)
   
   
Call xlApp.ActiveWorkbook.Close(0)



Also KEIN Saved. Und es muss vor dem Close ActiveWorkbook stehen,


Andreas
Titel: Re: Excel Datei nicht speichern
Beitrag von: Glombi am 10.02.06 - 15:31:07
Hier ein netter Artikel dazu:

http://www.dominopower.com/issuesprint/issue199909/oleauto.html

Andreas
Titel: Re: Excel Datei nicht speichern
Beitrag von: Diana82 am 10.02.06 - 15:31:33
 ;D funktioniert! Vielen Dank
Titel: Re: Excel Datei nicht speichern
Beitrag von: koehlerbv am 10.02.06 - 15:33:36
Ist das wirklich LotusScript? Das reicht die Property doch nur durch an Excel. Unterstützt COM das Saved nicht?

Bernhard
Titel: Re: Excel Datei nicht speichern
Beitrag von: Glombi am 10.02.06 - 15:36:01
Ich habe es ausprobiert. Es wird die Fehlermeldung, die Diana gepostet hat, generiert. Den Grund habei ich aber bis jetzt nicht ermittelt.

Andreas
Titel: Re: Excel Datei nicht speichern
Beitrag von: Axel am 10.02.06 - 16:33:49
Ich hab's mal probiert. Bei mir funktioniert es einwandfrei. Notes Client 6.5.3 dt und Excel 2003

Code
	Dim objExcel As Variant
	Dim objSheet As Variant    
	
	Set objExcel = CreateObject("Excel.Application")
	objExcel.Visible = True
	
	Call objExcel.Workbooks.Add
	Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)
	
	objSheet.Range("A1").Value = 123
	
	objExcel.ActiveWorkbook.Saved = True

Axel
Titel: Re: Excel Datei nicht speichern
Beitrag von: Glombi am 10.02.06 - 16:42:16
Bei mir gehts nun auch  :)

Wichtig ist ActiveWoorkbook !

Andreas
Titel: Re: Excel Datei nicht speichern
Beitrag von: koehlerbv am 10.02.06 - 16:46:21
Bei mir mit einer betagteren Version (6.5.4, Excel 2000): Völlig problemlos.

Ich kann mir nach wie vor nicht vorstellen, dass LotusScript damit irgendetwas zu haben sollte - Notes hat ja Null Ahnung von Excel und ist darauf angewiesen, was der OLE-Server zurückliefert.

Bernhard