Aloha
clipnotic hat geschrieben:(ich find den Desktop die beste Wahl da die Pfadstrukuren bei beiden OS ja unterschiedlich sind und Win 7 ja keine "Eigene Dateien" im alten XP-Stil bietet)
Der Desktop ist im Prinzip nichts anderes als ein Teil der "Eigenen Dateien", sowohl bei XP als auch bei Windows 7.
(Anders wären ja auch keine benutzerdefinierten Desktops für jeden Benutzer möglich).
Unter XP ist der Standardpfad für den Desktop z.B.
C:\Dokumente und Einstellungen\Mustermann\Desktop\
bei Windows 7
C:\Benutzer\Mustermann\Desktop
Du wirst Dir also einen allgemeingültigen Pfad ausdenken müssen.
Davon abgesehen hier mal der Beispielcode (ausgeführt aus einem Formular in einer Datenbank).
Viel Spass damit und frohe Weihnachten.
Code: Alles auswählen
Sub ExportData
REM Speicherpfad
sPath = "C:"
REM Dateiname
sTitle = "Datenexport vom " & Date & ".ods"
REM Name der Abfrage, Tabelle oder SQL-Statement
'sQueryName = "meineTabelle"
'sQueryName = "meineAbfrage"
sQueryName = "SELECT * FROM ""meineTabelle"""
sURL = ConvertToURL(sPath & "/" & sTitle)
If FileExists(sURL) Then
i = MsgBox(">" & sTitle & "<" & Chr(13) & "Datei existiert bereits." & _
Chr(13) & Chr(13) & "Überschreiben?",52,"Hinweis")
If i <> 6 Then
Exit Sub
End If
End If
oCon = thisComponent.Parent.CurrentController.ActiveConnection
If oCon.Tables.hasByName(sQueryName) Then
oPrepStatement = oCon.prepareCommand(sQueryName,0)
ElseIf oCon.Queries.hasByName(sQueryName) Then
oPrepStatement = oCon.prepareCommand(sQueryName,1)
Else
oPrepStatement = oCon.prepareCommand(sQueryName,2)
End If
oResult = oPrepStatement.executeQuery
aColumns = oPrepStatement.Columns.ElementNames
oDoc = StarDesktop.loadComponentFromURL("private:factory/scalc","_blank", 0, Array())
oSheet = oDoc.Sheets(0)
nColumnCount = UBound(aColumns)
Dim aLine(nColumnCount)
Dim aData(0)
aData(0) = aColumns
nUpperBoundary = 0
Do While oResult.Next
nUpperBoundary = UBound(aData)+1
ReDim Preserve aData(nUpperBoundary)
ReDim aLine(nColumnCount)
For i = 0 To nColumnCount
aLine(i) = oResult.getString(i+1)
Next i
aData(nUpperBoundary) = aLine
Loop
oRange = oSheet.getCellRangeByPosition(0,0,nColumnCount,nUpperBoundary)
oRange.setDataArray(aData)
Dim args(0) as New com.sun.star.beans.PropertyValue
args(0).Name = "Overwrite"
args(0).Value = True
oDoc.StoreAsURL(sURL,args)
oDoc.close(False)
End Sub