Freitag, 6. April 2018

LibreOffice Kommentar einer Zelle auslesen

Zum Erstellen eines Serienbriefs benötige ich nicht nur die Inhalte der Zellen, sondern auch die Kommentare der Zellen. Leider habe ich bisher keine Möglichkeit gefunden, wie dies automatisch geht. Deshalb habe ich mir ein halbaufwändiges Workaround ausgedacht. Neben die Spalte mit den Kommentarzellen erstelle ich eine weitere Spalte, in die ich als Text den Namen der Kommentarzelle schreibe. Daneben kommt eine weitere Spalte, in der ich in jeder entsprechenden Zelle meine Funktion aufrufe. In der eigentlichen Tabelle sind diese beiden Spalten dann auf unsichtbar eingestellt, um die Übersicht zu behalten.

'Die Funktion kann mit 2 Möglichkeiten aufgerufen werden:
'1. indem in einer Zelle =getcomment("A1") geschrieben wrid. Es wird der Kommentar der Zelle A1 ausgegeben.
'2. indem in einer Zelle =getComment(A1) gerschrieben wird, wobei in A1 als Strig die Zelle mit dem Kommentar steht
Function getComment(incell As String) As String 'incell - aus welcher Zelle der Kommentar genommen werden soll, kann auch auf eine Zelle mit Stringinhalt (B5) zeigen
 Dim oSheets As Variant 'aktuelles Tabellenblatt
 Dim oCellRangesByName As Variant 'Arrayindizes für incell
 Dim oCell As Variant 'Kommentarzelle als Objekt
 Dim oAnnotation As Variant 'Kommentarobjekt
     
 On Error Resume Next 'Falls ein Fehler auftritt soll mit der nächsten ANweisung weiter gemacht werden
 oSheets = thisComponent.getCurrentController.activesheet 'ermittelt aktuelles Tabellenblatt

 oCellRangeByName = oSheets.getCellRangeByName(incell) 'liefert Arraywerte der des Stringinhalts von incell z.B. B2 => 1,1
 oCell = oCellRangeByName(0).getCellByPosition(0,0) 'ermittelt Zelle für incell
 getComment = oCell.getAnnotation().getString() 'liest den Kommentar aus und gibt ihn als Rückgabewert der Funktion zurück
End Function

(Quellcode-Highlighter)

Keine Kommentare:

Kommentar veröffentlichen