[gelöst] Writer-Tabelle abfragen und mit Textbaustein bes.

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [gelöst] Writer-Tabelle abfragen und mit Textbaustein bes.

Re: Writer-Tabelle abfragen und mit Textbaustein besetzen?

von wega » Fr, 24.07.2009 22:45

Hallo zusammen,

also nach langem hin und her habe ich für mich folgende Lösung erarbeitet.

Code: Alles auswählen

REM  *****  BASIC  *****
' automatisches Ausfüllen
' der Kommentarspalten bei 
' ausgefülltem Merkmal
' Werner Gatzweiler, Juli 2009

Private oDocument as Object
Private oTable as Object
Private oCell as Object
Private oViewCursor as Object
Private oAutoTextContainer as Object
Private oAutoGroup as Object
Private sATKategorie as Object
Private sBaustein as Object
Private oAutoGroupIndex as Integer
Private i, m, n as Integer
Private oAntwort as String
Private oName as String

sub tabelle_anspringen
	oDocument = ThisComponent
	oTable = oDocument.getTextTables().getByName( "Tabelle2" )
	oAntwort = "Textbausteine zur Kompetenzbeurteilung liegen noch nicht vor!!"
	
	'Prüfen, ob die Textbausteine vorhanden sind
	oAutoTextContainer = CreateUnoService("com.sun.star.text.AutoTextContainer")
	for i= 0 to oAutoTextContainer.count-1
		If oAutoTextContainer.GetByIndex(i).Title ="Kompetenz-Beurteilung" then
			oAntwort = ""
			oAutoGroupIndex = i
		end if
	next i
	'Wenn die oben gestzte Programmantwort nicht gelöscht worden ist,
	'dann liegt die <Textbausteindatei.bau> nicht vor und das Programm wird
	'beendet.
	if oAntwort <> "" then
		msgbox oAntwort
		exit sub
	end if

	'Bausteingruppe definieren und nachschauen, wieviele Bausteine es in der Gruppe gibt
	oAutoGroup = oAutoTextContainer.GetByIndex(oAutoGroupIndex)
	'msgbox oAutoGroup.count
	
	for i = 0 to oAutoGroup.count-1
		'Textbausteinname auslesen
		oName = oAutoGroup.Titles(i)
		'Der Textbausteinname ist bewußt nach der Tabellenzelle benannt, in der das Merkmal
		'gesucht wird. Z.B. B3 oder C11 usw.
		oCell = oTable.getCellByName(oName)
		'Nachschauen, ob Merkmal gestzt ist
		if uCase(oCell.String) = "X" then
			'Der Kommentar, also der Textbaustein selber, soll immer in der Spalte "F" stehen.
			'Die Zeile wird aus der Zellenbeschreibung ermittelt.
			oTable.getCellByName("F" & right(trim(oName),len(oName)-1)).String = oAutoGroup.GetByIndex(i).String
		end if
	next i

end sub
Freuen würde ich mich, wenn irgendwer seinen Kommentar dazu abgeben würde in Bezug auf:

a) Vereinfachung
b) besserer Programmierung
c) und was sonst noch so an Kritik möglich ist.

mit Gruß
Werner

Re: Writer-Tabelle abfragen und mit Textbaustein besetzen?

von wega » Do, 23.07.2009 14:44

Hallo zusammen,

mit einem Codeschnipsel von Turtle47 aus dem englischen Forum

Code: Alles auswählen

Sub Rotate_Text1
   odoc=thiscomponent
   oTables = oDoc.getTextTables
   oTable = oTables.getByIndex(0)
   oCell=oTable.getCellByPosition(0,0)
   myViewCursor=oDoc.GetCurrentController.ViewCursor
   myViewCursor.gotoRange(oCell,false)
   myViewCursor.CharRotation = 900
End Sub
bin ich nun schon mal auf die Zelle der Tabelle gekommen.
Jetzt geht geht es noch darum, Je nach Inhalt der Zelle einen dazugehörigen Textbaustein auszulesen.

mit Gruß
Werner

Re: Writer-Tabelle abfragen und mit Textbaustein besetzen?

von wega » Do, 23.07.2009 11:31

Ich noch mal,

Ja gut, die Tabelle wird erkannt, da ich von da jetzt keine Fehlermeldung mehr bekomme.
Auch die Spalte und Zeile wir wohl richtig sein, auch von dort keine Fehlermeldung.

Aber wieso steht der Cursor denn nicht in der angegebenen Zelle?
Und wie lese ich den Inhalt einer solchen Zelle aus?
Und wie schreibe ich in diese Zelle einen neuen Ihalt rein?

Ich weiß, eine Reihe dummer Fragen, aber irgendwie scheine ich ein Brett vor dem Kopf zu haben.

Bedanke mich schon jetzt für eure Hilfe
mit Gruß
Werner

Re: Writer-Tabelle abfragen und mit Textbaustein besetzen?

von wega » Sa, 18.07.2009 21:19

Hallo Winfried,

Danke für Deine schneller Reaktion.

Diese Zeilen bringen mich ein gutes Stück weiter, DANKE.

Nein, X-Ray habe ich nicht im Einsatz, da ich bei einem vorherigen Installationsversuch enorme Schwiergkeiten hatte.

Nochmals Dank und freundlichen Gruß
Werner

Re: Writer-Tabelle abfragen und mit Textbaustein besetzen?

von komma4 » Sa, 18.07.2009 20:43

Alles im Beispiel drinne...

Code: Alles auswählen

' Tabelle 
oTT = ThisComponent.getTextTables().getByName( "Tabelle1" )
'  Zelle ( Spalte, Zeile )
oTT_Zelle = oTT.getCellByPosition( 1 , 2 )
Du hast -natürlich- auch X-Ray im Einsatz?


Hilft Dir das weiter?

Re: Writer-Tabelle abfragen und mit Textbaustein besetzen?

von wega » Sa, 18.07.2009 19:29

Hallo Winfried,

recht vielen Dank für Deine Antwort.

Damit ich das ganze verstehe frage ich einmal zuerst so:

In meinem Textdokument habe ich 3 Tabellen. Im Navigator werden diese auch mit Tabelle1 bis Tabelle3 angezeigt.
Mit Klick des Cursors auf eine der drei Tabellen wird auch die entsprechende Tabelle angesprungen, d.h., der Cursor steht dann in der entsprechenden Tabelle in der ersten Zelle.

Wie spreche ich eine der Tabellen inklusive Sprung zu einer beliebiegen Zelle mit Basic her?

mit freundlichem Gruß
Werner

Re: Writer-Tabelle abfragen und mit Textbaustein besetzen?

von komma4 » Sa, 18.07.2009 12:32

Hallo Werner,

Code zum Zugriff auf Autotext-Einträge findest Du in meiner Extension OOoATL2 - AutoTextListe2 - eine Erweiterung des mitgelieferten Standard-Makros AutoText aus der Bibliothek Gimmicks.

Hilft Dir das weiter?

[gelöst] Writer-Tabelle abfragen und mit Textbaustein bes.

von wega » Fr, 17.07.2009 21:47

Hallo zusamen,

in einem Wirterdokument habe ich eine Tabelle und je nach Inhalt der Tabellenzelle soll in der Nachbarzelle ein Textbaustein eingefügt werden, den ich aus einer Autotextvorlage einlesen möchte.
Ich habe schon mal im Forum gesucht, aber nichts dergleichen gefunden.
Kann mir da jemand weiterhelfen?

Diese gleiche Frage hatte ich auch schon ins Writer-Forum gestellt. Vielleicht war das der falsche Ort.

mit freundlichem Gruß
Werner

Nach oben