In BASIC this is written a little longer:
Sub DivideSpreadsgeets()
Dim filePicker As Object, oDoc As Object, oArgs As Variant
Dim fileName As String, fileURL As String, sheetName As String, fileFilter As String
Dim i As Integer
Dim oSheets As Object, sheet As Object, aSheetsNames As Variant
Dim aOpenParams(0) as New com.sun.star.beans.PropertyValue
aOpenParams(0).Name = "Hidden" : aOpenParams(0).Value = TRUE
GlobalScope.BasicLibraries.LoadLibrary("Tools")
filePicker = createUnoService("com.sun.star.ui.dialogs.FilePicker")
filePicker.setMultiSelectionMode(True)
filePicker.setTitle("Select Source Files")
filePicker.appendFilter("All Files", "*.ods;*.xls;*.xlsx;*.xlsm")
If filePicker.execute() Then
For Each fileURL In filePicker.getSelectedFiles()
fileName = GetFileNameWithoutExtension(ConvertFromURL(fileURL))
oDoc = OpenDocument(fileURL, aOpenParams)
oSheets = oDoc.getSheets()
aSheetsNames = oSheets.getElementNames()
fileFilter = "calc8"
For Each oArgs In oDoc.getArgs()
If oArgs.Name = "FilterName" Then
fileFilter = oArgs.Value
Exit For
EndIf
Next oArgs
oDoc.close(True)
For Each sheetName In aSheetsNames
oDoc = OpenDocument("private:factory/scalc", aOpenParams)
oSheets = oDoc.getSheets()
For i = oSheets.getCount()-1 To 1 Step -1
oSheets.RemoveByName(oSheets.getByIndex(i).getName())
Next i
sheet = oSheets.getByIndex(0)
sheet.setName(sheetName)
sheet.link(fileURL, sheetName, fileFilter, "", com.sun.star.sheet.SheetLinkMode.VALUE) 'NORMAL) '
sheet.setLinkMode(com.sun.star.sheet.SheetLinkMode.NONE)
oDoc.storeToURL(ConvertToURL(fileName & "." & sheetName & ".ods"), Array())
oDoc.close(True)
Next sheetName
Next fileURL
MsgBox "Splitted " & (UBound(filePicker.getSelectedFiles()) + 1) & " files", 16, "Done"
End If
End Sub