Macro para remover vínculos de dados externos.

perguntadas 2019-06-26 18:16:51 +0200

imagem do gravatar de Júnio Vieira

updated 2019-06-27 17:20:23 +0200

Pessoal estou precisando de uma macro que remova todos os vínculos de uma planilha.

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

Comentários

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"

imagem do gravatar de ConradoConrado ( 2019-06-26 19:41:40 +0200 )editar

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:

  1. Abre a planilha ocultamente
  2. Remove os vínculos (exatamente isso que preciso via macro)
  3. Salva como nos formatos ods e xls sem vínculos
  4. 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!

imagem do gravatar de Júnio VieiraJúnio Vieira ( 2019-06-26 20:31:43 +0200 )editar

Ola @Júnio Vieira e @Conrado, 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"

fonte: https://www.funcaoexcel.com.br/remove...

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2019-06-26 21:43:55 +0200 )editar

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
imagem do gravatar de ConradoConrado ( 2019-06-27 13:49:35 +0200 )editar
imagem do gravatar de ConradoConrado ( 2019-06-27 14:27:24 +0200 )editar

Ola @Júnio Vieira, 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
imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2019-06-27 17:18:38 +0200 )editar

@ 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!

imagem do gravatar de Júnio VieiraJúnio Vieira ( 2019-06-27 17:49:00 +0200 )editar