заранее спасибо. Заголовок резюмирует это довольно кратко, но для наглядности вот то, что я пытаюсь сделать:
Sub Main
dim doc as Object, sheet as Object
doc=ThisComponent
numSheets=doc.Sheets.count()
sheet=doc.Sheets(numSheets-1)
sheetName=sheet.Name
currentDay=Date()
lastDay=sheet.getCellRangeByName("B1").value
mon=Month(lastDay)
Select case mon:
case 1:
monMod=31
case 2:
monMod=28
case 3:
monMod=31
case 4:
monMod=30
case 5:
monMod=31
case 6:
monMod=30
case 7:
monMod=31
case 8:
monMod=31
case 9:
monMod=30
case 10:
monMod=31
case 11:
monMod=30
case 12:
monMod=31
End Select
nextMonEnd=CDate(lastDay+monMod)
If currentDay > lastDay Then
newName$=CDate(lastDay+1) & "-" & CDate(nextMonEnd)
doc.Sheets.copyByName(sheetName, newName$, numSheets) '<--
newSheet=doc.sheets(numSheets) 'this part here is the
newPrevious=newSheet.getCellRangeByName("A1")'snag.Throws a Runtime
newPrevious.string=CDate(lastDay+1) 'Exception, Message: .
newEnd=newSheet.getCellRangeByName("B1") 'I think it's passing a
newEnd.string=CDate(nextMonEnd) 'null, but I don't know
End If 'why. Any help would be
End Sub 'greatly appreciated
Если я жестко запрограммирую аргумент destName, он работает чисто. Я пробовал несколько разных подходов, но любая переменная, которую я передаю в качестве destName, выдает ошибку. Еще раз спасибо, ребята и девчонки.
Изменено: С некоторой помощью (см. Комментарии) я придумал эту рабочую версию своего макроса, все остальное осталось прежним. Публикуем его для актуальности.
nextMonEnd=CDate(lastDay+monMod)
newFirst=CDate(lastDay+1)
newName=CStr(Format(newFirst, "mm-dd-yyyy")) & " " & _
CStr(Format(nextMonEnd, "mm-dd-yyyy"))
If currentDay > lastDay Then
doc.Sheets.copyByName(sheetName, newName, numSheets)
newSheet=doc.sheets(numSheets)
newCurrent=newSheet.getCellRangeByName("A1")
newCurrent.value=lastDay+1
newEnd=newSheet.getCellRangeByName("B1")
newEnd.value=nextMonEnd
print "New Monthly sheet added."
End If
Проблема состоит в том, что получающееся имя листа содержит запрещенные символы. В OpenOffice. Calc,
можно только использовать буквы, числа, пробелы и символ подчеркивания на имя листа.
( OO Calc FAQ)
имя листа, которое Вы создали, содержит наклонные черты /
, приводя к недопустимому имени листа.