Hey Friedhelm,
na denn, hier folgt der Code für das Erstellen eines Textdumps einer Tabelle.
Du gehst wie folgt vor: Erezuge ein neues Formular in der Entwurfsansicht, plaziere lediglich einen Button auf das Formular - und benenne ihn wie du willst. Im Formular-Navigator verknüpfst du nun das Formular mit deiner Tabelle.
Nun speichere das Formular, schliesse es und öffne es erneut im Entwurfsmodus (sonst werden die Änderungen nicht übernommen).
Dann erzeugst du ein neues Code-Modul (Basic) im Dokument, kopierst den Code rein, passt ihn evt. an, verknüpfst den Button mit dem Makro, gehst aus dem Entwurfsmodus (wichtig! sonst geht das nicht!) - und testest es
Es sollte eine nette Textdatei mit ";" zwischen den Feldern entstehen. Übernommen wird alles als "Text", weitere Anpassungen kannst du natürlich vornehmen. Aktuell nutze ich als Zeilenseperator Windowstypisch CR+LF - mäöglicherweise musst du das auch anpassen.
Falls du zusätzlich die Spaltennamen benötigst - musst du halt entsprechnde Codeteile einfügen
Code: Alles auswählen
Sub TextDumpErstellen
GlobalScope.BasicLibraries.loadLibrary("Tools")
oDoc = thisComponent
REM Ausgabedatei im gleichen Verzeichnis wie Basedatei
sURL = DirectoryNameoutofPath(oDoc.parent.URL, "/") & "/TestDump.txt"
oForm = oDoc.drawpage.forms.getbyname("Standard") 'das Formular
nSp = oForm.columns.count ' Anzahl der Spalten
REM Ausgabedatei öffnen
oFileAccess = createUnoService("com.sun.star.ucb.SimpleFileAccess")
oDatei = oFileAccess.openFileWrite(sURL)
oTextOutPutStream = createUnoService("com.sun.star.io.TextOutputStream")
oTextOutPutStream.setOutputStream(oDatei)
REM Daten schreiben
iZe = oForm.first()
do while iZe
for i= 1 to nSp
if i > 1 then oTextOutPutStream.writeString(";")
if not (oForm.getString(i) = "") then 'wenn das Feld leer ist, nichts schreiben
oTextOutPutStream.writeString("""" & oForm.getString(i) & """")
end if
next i
oTextOutPutStream.writeString(chr(13) & chr(10))
iZe = oForm.next()
loop
oDatei.closeOutput()
msgbox "Fertig"
End Sub
Viele Grüße
Thomas
PS: Ist ein reiner Code-Sniplett. Funktioniert, sollte aber dringend noch mit entsprechenden Sicherheitsroutinen und Fehlerroutinen versehen werden - für den produktiven Einsatz!