Domino 9 und frühere Versionen > ND8: Entwicklung

Zugriff auf Excel Tabelle

(1/2) > >>

Hedwig14:
Ich greife auf eine Excel-Tabelle zu um Werte auszulesen.
In der einen Tabelle habe ich verschiedene Reiter, die ich beim Auslesen berücksichtigen muss.
Mit diesem Script greift er nur auf den aktuellen Reiter zu. Wie kann ich den Sheet fest bestimmen ?

Set xl = CreateObject( "Excel.Application")
xl.Workbooks.Open xlFilename ' Open the Excel file
Set xlWorkbook = xl.ActiveWorkbook
Set xlSheet = xlWorkbook.ActiveSheet

Peter Klett:
xl.Sheets ("Name des Sheets").Select

Du kommst darauf, indem Du in Excel ein Macro aufzeichnest und dann die Tabelle wechselst. Danach schaust Du Dir das generierte VBA-Script an und kannst das sinngemäß übernehmen.

Hedwig14:
super,  Danke das habe ich hinbekommen !

Jetzt habe ich ein neues Problem.

Wenn ich die Excel -Datei im geöffneten Notes-Dokument bearbeite und speicher muss ich im Anschluss das Notes-Dokument einmal schließen damit die geänderten Werte in der Excel-Tabelle im Notes-Dokument auch richtig übernommen werden werden.

Gibt es dafür auch einen Trick ohne das Dokument schließen zu müssen ?

Thomas Schulte:
Frage zu deiner Frage.
Was heist bei dir "im geöffneten Dokument"?

Ist das Excel Sheet im Notes Document enthalten? Als Object?
Oder als Attachment und du öffnest es beim öffnen des Notes documents?
Oder hast du einen eigenen Mechanismus eingebaut?
Oder holst du "nur" Werte aus einem Excel Sheet, das ganz woanders im File System gespeichert wurde?

Dein "greife zu" lässt eigentlich darauf schließen, das du es von irgendwo anders her holst. Dazu passt aber dein "neues Problem" nicht.

Der Rest ist Glaskugel.
Schau mal in die Dokumentation des Richtext Items. Da steht so was drin "Modifications made to rich text items on the back-end document do not appear on the current document until it is closed and reopened." Das bedeutet, eigentlich, das du auch programmtechnisch einen UIDocClose und Reopen machen musst um Backend Änderungen am Richtext Feld ins Frontend zu bekommen.
Hier http://searchdomino.techtarget.com/tip/Modify-a-rich-text-field-in-the-UI-without-having-to-save-and-re-open gibt es eine Anleitung wie das auch ohne Save gehen soll, aber das Dokument muss vorher mindestens einmal gespeichert worden sein.

Hedwig14:
Hallo Thomas,

Vielen Dank für Deine Antwort !

In einem geöffneten Notesdokument bearbeite ich eine bestehende Exceltabelle, die ich im Anschluß speichere.
Anschließend sollen per Button im gleichen immer noch offenen Notes-Dokument einige Werte aus der Excel-Tabelle ausgelesen werden und im Notes-Dokument gespeichert werden.Das funktioniert auch. Aber ich muss nach dem Bearbeiten der Excel-Datei das Notes-Dok vorher einmal schließen.

Deinen o.a. Code habe ich mal getestet. Die geänderten Daten in der Exceltabelle werden über diesen Weg aber nicht übernommen:

Sub Click(Source As Button)
   Dim s As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim thisdb As NotesDatabase
   Dim thisdoc As NotesDocument
   
   Dim rtitem As NotesRichTextItem
   Dim nitem As Variant
   
   Dim olduidoc As NotesUIDocument
   Dim newuidoc As NotesUIDocument
   
   Set thisdb = s.CurrentDatabase
   
   Set olduidoc = ws.CurrentDocument
   Set thisdoc = olduidoc.Document
   
   If thisdoc.IsNewNote Then
      Set nitem = thisdoc.CreateRichTextItem( "tabelle" )
   End If
   
   Set nitem =    thisdoc.GetFirstItem( "tabelle" )
   
   If ( nitem.Type = RICHTEXT ) Then
      Set rtitem = nitem
      Call rtitem.Appendtext("TESTLAUF")
      Call rtitem.Update
   End If
   
   thisdoc.SaveOptions = "0"
   Call olduidoc.Close(True)
   Set newuidoc = ws.EditDocument(True, thisdoc)
   Delete olduidoc
   Set thisdoc = newuidoc.Document
   Call thisdoc.RemoveItem( "SaveOptions" )
   
End Sub



Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln