Pessoal estou precisando de uma macro que remova todos os vínculos de uma planilha.
Vínculos de dados externos? Como está sendo colocado este vínculo? <Ctrl+C> e <Ctrl+V>? Se sim, faz <Ctrl+Shift+V> / Valores ou “Texto sem formatação”
Não, os dados são vinculados como fórmula (coloco o sinal de igual e clico no outro documento), não dá para atualizar com o ctrl+shift+v, pois a macro executa o procedimento abaixo:
- Abre a planilha ocultamente
- Remove os vínculos (exatamente isso que preciso via macro)
- Salva como nos formatos ods e xls sem vínculos
- Anexa-os no e-mail e envia para os endereços de e-mails pré-cadastrados.
Na verdade qualquer macro que eu consiga trabalhar com vínculos externos já irá me ajudar bastante, como por exemplo atualizar vínculos, modificar vínculos e/ou remover vínculos.
Enquanto consigo essa macro, estou utilizando a macro abaixo como quebra galho:
Sub ConverterFormulaParaValor()
Dim dispatcher as object
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(ThisComponent.CurrentController.Frame, ".uno:ConvertFormulaToValue", "", 0, Array())
End Sub
Para remover os vínculos que foram inseridos como fórmulas.
Mesmo assim obrigado!
Ola @JúnioVieira e @Conras, encontrei esta em VBA mas não funciona no Basic. para quem souber converter:
' Attribute VBA_ModuleType=VBADocumentModule
Option VBASupport 1
Option Explicit
Sub QuebrarVínculos()
'Define uma variável do para ser interpretada como os vínculos do arquivo
Dim myLinks As Variant
myLinks = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)
'Para cada vínculo existente, executa um código que os quebra
On Error GoTo Mensagem
For i = 1 To UBound(myLinks)
ActiveWorkbook.BreakLink Name:=myLinks(i), Type:=xlLinkTypeExcelLinks
Next i
Msgbox "Vínculos quebrados com sucesso"
Exit Sub
Mensagem:
Msgbox "Não há vínculos a serem quebrados"
End Sub
"Erro de execução do BASIC. ‘423’ LinkSources"
ClearContents(Formulas) não resolve?
Sub ClearRangeContents()
Dim oDoc As Object
Dim oSheet As Object
Dim oCell As Object
Dim oRange As Object
oDoc = ThisComponent
oSheet = oDoc.Sheets(0) ' Refers to Sheet1 as in 0, 1, 2 etc
oRange = oSheet.getCellRangeByName("A1:A9")
oRange.clearContents(16)
End Sub
@JúnioVieira e @Gilberto Schiavinatto, deem uma olhada neste link tbm
https://forum.openoffice.org/en/forum/viewtopic.php?f=20&t=96169
Ola @JúnioVieira, disse: “Salva como nos formatos ods e xls sem vínculos”, é necessário manter as fórmulas ?
Se NÃO, selecione toda a planilha e use a macro abaixo:
'================================================|
sub ConverterFormulaParaValor
'================================================|
Dim document, dispatcher As Object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:ConvertFormulaToValue", "", 0, Array())
end Sub
@ Gilberto Realmente não preciso manter as fórmulas. Quanto ao clearcontents, ele remove o conteudo da célula também, ou seja, os vínculos, mas preciso deixar os números por isso não dá certo. A macro que vc me indicou é exatamente a mesma que estou utilizando conforme meu primeiro comentário, essa macro está funcionando, porém gostaria de poder acessar as opções de vínculos porque remove da planilha inteira de uma vez assim a macro fica bem mais rápida. De qualquer forma fico grato pela atenção!