Kommentare aus Zelle auslesen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Kommentare aus Zelle auslesen

Beitrag von F3K Total »

Moin,
dieses Thema gehört eigentlich in das Unterforum OOo Basic und Java
Dieser Code schreibt den Kommentar aus Zelle A1 in Zelle B1

Code: Alles auswählen

Sub Main
    oSheet = thiscomponent.sheets.getbyname("Tabelle1")
    ocellSource = osheet.getcellbyposition(0,0)'A1
    ocellTarget = osheet.getcellbyposition(1,0)'B1
    sAnnotation = ocellSource.Annotation.String
    ocellTarget.String = sAnnotation
End Sub
Zitat aus dem englischen Forum:
There are several macro languages in OOo, but none of them is called Visual Basic or VB(A)! Please call it OOo Basic, Star Basic or simply Basic.
Gruß R
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Kommentare aus Zelle auslesen

Beitrag von F3K Total »

Moin,
brandonson hat geschrieben:Es sollte ja eigentlich ohne irgendwelche Aufrufe einfach den Kommentar aus A1 in B1 schreiben, wenn ich das richtig verstanden habe.
Nee, tut es nicht, man muss es schon starten.
brandonson hat geschrieben:Und wenn es dann funktioniert, wie mache ich daraus eine Funktion, sodass ich diese in jeder Zelle aufrufen kann?
Da solltest du dir erstmal Gedanken machen, was du willst!
Wohin soll denn der Inhalt des Kommentares, also in welche Zelle, bezogen auf die Kommentarzelle, überhaupt hingeschrieben werden?
In die rechts neben der Quellzelle?
Das ginge etwa so

Code: Alles auswählen

Sub S_transfer_comment
    ocellSource = thiscomponent.currentselection
    if ocellSource.supportsservice("com.sun.star.sheet.SheetCell") then
        if ocellSource.Annotation.string = "" then
            msgbox ("Es ist kein Kommentartext vorhanden",16,"Kommentare auslesen")
            exit sub
        else
            ocelladdress = ocellSource.celladdress
            oSheet = thiscomponent.sheets(ocelladdress.Sheet)
            ocellTarget = osheet.getcellbyposition(ocelladdress.column + 1,ocelladdress.row)'+ 1 d.h. eine Zelle neben der Quellzelle
            sAnnotation = ocellSource.Annotation.String
            ocellTarget.String = sAnnotation
        endif        
    else
        msgbox ("Bitte eine einzelne Zelle selektieren",16,"Kommentare auslesen")
        exit sub
    endif
End Sub
Starten kannst Du so ein Makro mit verschiedenen Methoden z.B.
  • Schaltfläche wie im Beispiel
  • eigenes Menü
  • eigene Symbolleiste
  • Tastenkombination
  • Tabellenereignis
  • usw.
Damit du ein Makro ausführen kannst, stellst du unter Extras/Optionen/Openoffice oder LibreOffice/Sicherheit/Makrosicherheit mindestens die Stufe "Mittel" ein, dann wirst du beim Öffnen von Dokumenten gefragt ob du Makros ausführen möchtest.
Gruß R

Gruß R
Dateianhänge
Kommentar_auslesen.ods
(9.71 KiB) 142-mal heruntergeladen
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Kommentare aus Zelle auslesen

Beitrag von F3K Total »

Hi,

Code: Alles auswählen

function Kommentar(scell)
    osheet = thiscomponent.sheets.getbyname("Tabelle1")
    ocell = osheet.getcellrangebyname(scell)
    Kommentar = ocell.annotation.string
end function
funktioniert auf Tabelle1, wenn du die Zelladresse in doublequotes einrahmst:

Code: Alles auswählen

=KOMMENTAR("A6")
Aktualisiert sich bei Kommentaränderungen durch Öffnen des Dokumentes.
R
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Kommentare aus Zelle auslesen

Beitrag von F3K Total »

Probier' es aus, und forsche selbst weiter ...
Ich für meinen Teil bin raus, zumal ich den tieferen Sinn hinter deinem Anliegen nicht wirklich verstehe.
Scheint mir eher ein Forschungskonstrukt zu sein.
Wenn du Kommentare immer sehen willst, kannst Du sie auch direkt in eine Zelle schreiben.
Gruß R
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Kommentare aus Zelle auslesen

Beitrag von F3K Total »

Nun,
du könntest alle Anmerkungen einmalig, mit einem Makro, mit Hilfe einer Schleife, in eine neue Spalte auslesen.
Die ließe sich, der Übersichtlichkeit wegen, auch einfach ausblenden.
Ihre Zellen könnten mit Probandenblättern, selbst in andere Dateien, verknüpft werden.
Ich denke, so wäre es viel einfacher und variabler... natürlich nicht, wenn man keine Ahnung von Psychologie hat :)
R
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Kommentare aus Zelle auslesen

Beitrag von F3K Total »

Nun,
ein letzter Versuch.
  • Überlege in welche Spalte die Kommentare geschrieben werden sollen. Füge ggf. eine leere Spalte ein.
  • Selektiere den Spaltenkopf der Spalte, in der die Kommentare stehen.
  • Führe folgendes Makro aus.

Code: Alles auswählen

Sub S_transfer_comment
    osheet = Thiscomponent.currentcontroller.activeSheet
    oRowSource = thiscomponent.currentselection
    if right(oRowSource.AbsoluteName,7) <> "1048576" or oRowSource.columns.count <> 1 then
        msgbox ("Bitte Spaltenkopf EINER Spalte mit den Kommentaren selektieren",16,"Kommentare auslesen")
        exit sub
    else
        nSourceColumn = oRowSource.rangeaddress.Startcolumn
        ocursor = osheet.createCursor
        ocursor.gotoendofusedarea(false)
        nEndRow = oCursor.rangeaddress.Endrow
        sTargetcolumn = inputbox ( "Bitte LEERE Zielspalte angeben","Zielspalte","A") 
        nTargetColumn = osheet.getcellrangebyname(sTargetcolumn+"1").celladdress.column
        for i = 0 to nEndRow
            ocellSource = osheet.getcellbyposition(nSourceColumn,i)
            if ocellSource.Annotation.string = "" then
            else
                ocellTarget = osheet.getcellbyposition(nTargetColumn,i)
                sAnnotation = ocellSource.Annotation.String
                ocellTarget.String = sAnnotation
            endif   
        next i
    endif
End Sub
Viel Erfolg
Gruß R
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Kommentare aus Zelle auslesen

Beitrag von F3K Total »

Hi,
brandonson hat geschrieben:... nicht unter OpenOffice?
Ich habe die Datei gerade unter OOo 3.3.0, AOO 3.4.1 und AOO 4.0 probiert, funktioniert einwandfrei.
Übrigens habe ich sie unter AOO 3.4.1 erstellt.
Entweder hast Du eine sehr alte Version, oder an Deiner Installation stimmt was nicht.
Welches Betriebssystem hast Du?
Gruß R
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Kommentare aus Zelle auslesen

Beitrag von F3K Total »

Hi,
hast du zum Anlegen von neuen Kontrollelementen in den Entwurfsmodus gewechselt?
Gruß R
Antworten