Der Desktop ist im Prinzip nichts anderes als ein Teil der "Eigenen Dateien", sowohl bei XP als auch bei Windows 7.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)
(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