@lucasalves
Segue procedimento alterado conforme pediu. Marque como Reposta correta para ajudar outros que procurarem o mesmo tipo de conteúdo.
Atualizado em 19/03/2020
Sub CopySheet
Dim oCurrentController As Object
Dim oActiveSheet As Object
Dim oSheets As Object
Dim sText as String
oCurrentController = ThisComponent.getCurrentController()
oActiveSheet = oCurrentController.getActiveSheet()
oSheets = ThisComponent.getSheets()
sText = InputBox("Please enter a phrase:", "Dear User")
If sText = "" Then
Exit Sub
End if
If MsgBox("A planilha," & Chr(10) & Chr(10) & "'" & sText & "'" & Chr(10) & Chr(10) & "será criada. Continuar?", 1 + 32, "Confirmar Nome!") = 2 then
Exit Sub
End If
If oSheets.hasByName( sText) Then 'oActiveSheet.Name
MsgBox ("Nome de Planilha," & Chr(10) & Chr(10) & "'" & oActiveSheet.Name & "'" & Chr(10) & Chr(10)& "já existente." & Chr(10) & Chr(10) & "Escolha outro nome.", 45, "Cópia não realizada!")
Else
oSheets.copyByName(oActiveSheet.Name, sText, oSheets.Count + 1)
End If
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:Save", "", 0, Array())
End Sub
Copie e cole este procedimento como uma nova macro, e associe ela ao seu botão de comando.
Criado em 18/03/2020
Sub CopySheet
Dim oCurrentController As Object
Dim oActiveSheet As Object
Dim oSheets As Object
Dim sText as String
oCurrentController = ThisComponent.getCurrentController()
oActiveSheet = oCurrentController.getActiveSheet()
oSheets = ThisComponent.getSheets()
sText = InputBox("Please enter a phrase:", "Dear User")
If MsgBox("A planilha," & Chr(10) & Chr(10) & "'" & sText & "'" & Chr(10) & Chr(10) & "será criada. Continuar?", 1 + 32, "Confirmar Nome!") = 2 then
Exit Sub
End If
If oSheets.hasByName( sText) Then
MsgBox ("Nome de Planilha," & Chr(10) & Chr(10) & "'" & oActiveSheet.Name & "'" & Chr(10) & Chr(10)& "já existente." & Chr(10) & Chr(10) & "Escolha outro nome.", 45, "Cópia não realizada!")
Else
oSheets.copyByName(oActiveSheet.Name, sText, oActiveSheet.RangeAddress.Sheet + 1)
End If
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:Save", "", 0, Array())
End Sub
- sText = vai armazenar o nome da aba que deseja colocar mencionado no ImputBox.
- MsgBox1 = Vai questionar se deseja seguir com o nome mencionado. Caso “Cancela”, ele finaliza o procedimento sem alteração em sua planilha.
- MsgBox2 = Informa se o nome mencionado já é utilizado em seu arquivo. Se sim, ele finaliza o procedimento sem alteração em sua planilha.
- Se tudo estiver conforme, ele adiciona uma cópia da planilha ativa, na sequência da mesma, com o nome colocado no ImputBox.
- Por fim, salva o arquivo.
Caso precise que a nova aba seja limpa de certas informações, utilize o comando:
ThisComponent.Sheets.getbyName(sText).getCellRangebyName("A1:B2").ClearContents(7)
OBS.: Lembrando que: “A1:B2” será a range que precisa ser limpa. Altere e coloque quantas linhas dessas for necessário para seu uso.