Speichern als xls
Verfasst: So, 27.02.2011 21:58
Hallo,
ich habe von komma4 ein Makro auf meine Bedürfnisse angepasst. Dabei geht es, aus Zelleninhalten einen Dateinamen zu kreieren und zu speichern; als odf.
Nun versuche ich dieses Dokument auch im xls-format zu speichern, doh meine Versuche enden immer in einem Fehler, das eine Objektvariable nicht belegt ist.
Wo liegt mein Fehler und wie kann man es umsetzen ???
ich habe von komma4 ein Makro auf meine Bedürfnisse angepasst. Dabei geht es, aus Zelleninhalten einen Dateinamen zu kreieren und zu speichern; als odf.
Nun versuche ich dieses Dokument auch im xls-format zu speichern, doh meine Versuche enden immer in einem Fehler, das eine Objektvariable nicht belegt ist.
Code: Alles auswählen
Sub AuftragAbschliessen_xls
CONST cVerzeichnis = "h:/Aufträge/A-Abgeschlossen"
CONST sBlattBehalten = "Auftragsannahme"
CONST sMakroName = "AuftragAbschliessen"
CONST sMakroVersion = " v1.0.0"
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
' Zusammensetzen des Dateinamens
sBlattName = document.Controller.ActiveSheet.Name
Kunde = _
ThisComponent.Sheets().getByName( sBlattName ).getCellRangeByName( "B6" ).String 'Kunde
rem ----------------------------------------------------------------------
sBlattName1 = document.Controller.ActiveSheet.Name
AuftrNr = _
ThisComponent.Sheets().getByName( sBlattName1 ).getCellRangeByName( "Q8" ).String 'Auftr.Nr.
rem ----------------------------------------------------------------------
sBlattName2 = document.Controller.ActiveSheet.Name
Hersteller = _
ThisComponent.Sheets().getByName( sBlattName2 ).getCellRangeByName( "A22" ).String 'Hersteller
rem ----------------------------------------------------------------------
sBlattName3 = document.Controller.ActiveSheet.Name
Typ = _
ThisComponent.Sheets().getByName( sBlattName3 ).getCellRangeByName( "C22" ).String 'Typ
rem ----------------------------------------------------------------------
sBlattName4 = document.Controller.ActiveSheet.Name
FabrNr = _
ThisComponent.Sheets().getByName( sBlattName4 ).getCellRangeByName( "E22" ).String 'Fabr.Nr.
rem ----------------------------------------------------------------------
sBlattName5 = document.Controller.ActiveSheet.Name
ID = _
ThisComponent.Sheets().getByName( sBlattName5 ).getCellRangeByName( "H22" ).String 'ID
' SpeichernAls:
sNeuDatei = _
"file:///" & cVerzeichnis & "/" & Kunde & "/" & Hersteller & "_" & Typ & "_" & FabrNr & "_" & "ID_" & ID & "_" & AuftrNr & ".xls"
If FileExists( sNeuDatei ) Then
If MsgBox( "Die Datei existiert bereits!" & CHR(10) & _
sNeuDatei & CHR(10) & _
"Überschreiben?" , 36, _
sMakroName & sMakroVersion ) = 7 THEN
Exit Sub
End If
End If
dim Filter(0) As New com.sun.star.beans.PropertyValue
Filter(0).Name = "FilterName"
Filter(0).Value = "MS Excel 97"
Url = sNeuDatei
Url = ConvertToUrl(Url)
dim args3(1) as new com.sun.star.beans.PropertyValue
args3(0).Name = "URL"
' args3(0).Value = "MS Excel 97"
args3(0).Value = sNeuDatei
dispatcher.executeDispatch( document, ".uno:SaveAs", "", 0, Url, Filter(), args3())
' automatisches Speichern
' ThisComponent.store()
End Sub
Wo liegt mein Fehler und wie kann man es umsetzen ???