Como passar duas variáveis de data como uma string concatenada de destName para copyByName (srcName, destName, index) no LibreOfficeCalc (4.2.8.2) [closed]

1

obrigado antecipadamente. O título resume de forma bastante sucinta, mas para fins ilustrativos, aqui está o que eu estou tentando fazer:

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

Se eu codificar o destName arg, ele será executado limpo. Eu tentei várias abordagens diferentes, mas qualquer variável que eu passar como o destName lança um erro. Mais uma vez obrigado, rapazes e moças.

Alterado: Com alguma ajuda (ver comentários), eu criei esta revisão de trabalho da minha macro, tudo o resto permanece o mesmo. Postando para relevância.

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
    
por SonOfEntropy 25.04.2016 / 11:20

1 resposta

1

O problema é que o nome da planilha resultante contém caracteres proibidos. No OpenOffice.Calc,

  

você só pode usar letras, números, espaços e o caractere sublinhado no nome da planilha.

( FAQ do OO Calc )

O nome da planilha que você criou contém barras / , gerando um nome de planilha inválido.

    
por tohuwawohu 26.04.2016 / 12:29