Meiner Ansicht nach solltest Du doch zunächst einmal klären wie das konkrete Ausgabe'format' sein soll.
Geht es darum das die Fragen später ausgedruckt werden sollen, ginge das doch am Besten als Writerdokument und dann würde ich die Dinge per Makro zusammenstellen wollen.
In diesem Falle würde ich die Calc Tabelle so anlegen:
Spalte A: die jeweilige Frage
Spalte B: freilassen für Auswahleintrag
Spalte C: evtl. 'Kategorien'eintrag
Spalte D: Reserve für 'technischen' Eintrag z.B. Unterscheidung von nur eine Antwort oder mehrere Antworten möglich
Spalte E und ff.: Die jeweiligen Anworten.
Aus einer so strukturiereten Tabelle wären die Dinge leicht per Makro in ein Textdokument übetragbar, z.B.:
Code: Alles auswählen
Dim textdok
Dim cur
Sub Fragen_zusammenstellen()
tc = ThisComponent
k = 0
With tc.Sheets.getByName("Fragen-Antworten")
i = 2
Do
If LEN(.getCellByPosition(0, i).String) > 0 And .getCellByPosition(1, i).String = "x" Then
If k = 0 Then
neues_Dokument()
k = 1
End If
'neue Zeile mit Frage
If .getCellByPosition(3, i).String = "ja" Then
zusatz = " (mehrere Antworten)"
ElseIf .getCellByPosition(3, i).String = "nein" Then
zusatz = " (eine Antwort)"
Else
zusatz = ""
End If
cur.gotoEnd(False)
cur.CharWeight = com.sun.star.awt.FontWeight.BOLD
cur.String = .getCellByPosition(0, i).String & zusatz & CHR(13)
cur.gotoNextParagraph(False)
'3 Antworten
cur.CharWeight = com.sun.star.awt.FontWeight.NORMAL
cur.String = "[ ]" & .getCellByPosition(4, i).String & CHR(13)
cur.gotoNextParagraph(False)
cur.String = "[ ]" & .getCellByPosition(5, i).String & CHR(13)
cur.gotoNextParagraph(False)
cur.String = "[ ]" & .getCellByPosition(6, i).String & CHR(13) & CHR(13)
End if
i = i + 1
Loop While LEN(.getCellByPosition(0, i).String) > 0
End With
Msgbox "fertig"
End Sub
Sub neues_Dokument()
textdok = StarDesktop.loadComponentFromUrl("private:factory/swriter", "_blank", 0, Array())
cur = textdok.Text.CreateTextCursor
End Sub
siehe anhängende Beispieldatei.
Gruß
Stephan
Meiner Ansicht nach solltest Du doch zunächst einmal klären wie das konkrete Ausgabe'format' sein soll.
Geht es darum das die Fragen später ausgedruckt werden sollen, ginge das doch am Besten als Writerdokument und dann würde ich die Dinge per Makro zusammenstellen wollen.
In diesem Falle würde ich die Calc Tabelle so anlegen:
Spalte A: die jeweilige Frage
Spalte B: freilassen für Auswahleintrag
Spalte C: evtl. 'Kategorien'eintrag
Spalte D: Reserve für 'technischen' Eintrag z.B. Unterscheidung von nur eine Antwort oder mehrere Antworten möglich
Spalte E und ff.: Die jeweiligen Anworten.
Aus einer so strukturiereten Tabelle wären die Dinge leicht per Makro in ein Textdokument übetragbar, z.B.:
[code]Dim textdok
Dim cur
Sub Fragen_zusammenstellen()
tc = ThisComponent
k = 0
With tc.Sheets.getByName("Fragen-Antworten")
i = 2
Do
If LEN(.getCellByPosition(0, i).String) > 0 And .getCellByPosition(1, i).String = "x" Then
If k = 0 Then
neues_Dokument()
k = 1
End If
'neue Zeile mit Frage
If .getCellByPosition(3, i).String = "ja" Then
zusatz = " (mehrere Antworten)"
ElseIf .getCellByPosition(3, i).String = "nein" Then
zusatz = " (eine Antwort)"
Else
zusatz = ""
End If
cur.gotoEnd(False)
cur.CharWeight = com.sun.star.awt.FontWeight.BOLD
cur.String = .getCellByPosition(0, i).String & zusatz & CHR(13)
cur.gotoNextParagraph(False)
'3 Antworten
cur.CharWeight = com.sun.star.awt.FontWeight.NORMAL
cur.String = "[ ]" & .getCellByPosition(4, i).String & CHR(13)
cur.gotoNextParagraph(False)
cur.String = "[ ]" & .getCellByPosition(5, i).String & CHR(13)
cur.gotoNextParagraph(False)
cur.String = "[ ]" & .getCellByPosition(6, i).String & CHR(13) & CHR(13)
End if
i = i + 1
Loop While LEN(.getCellByPosition(0, i).String) > 0
End With
Msgbox "fertig"
End Sub
Sub neues_Dokument()
textdok = StarDesktop.loadComponentFromUrl("private:factory/swriter", "_blank", 0, Array())
cur = textdok.Text.CreateTextCursor
End Sub
[/code]
siehe anhängende Beispieldatei.
Gruß
Stephan