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 ???