Notifications
Clear all

CÓDIGO VBA PARA QUEBRAR VÍNCULOS

4 Posts
2 Usuários
0 Reactions
1,490 Visualizações
(@fabio81)
Posts: 0
New Member
Topic starter
 

Boa tarde,
tenho uma planilha que busca dados em outra. Algo muito simples (Tipo assim: ='C:Documentos[Planilha.xlsx]Guia'!A1).
Essa planilha tem várias guias e cada uma busca seus dados nas planilhas da base de dados.
Ao finalizar cada guia, gostaria de poder quebrar os vínculos apenas da guia ativa, criando um botão com a macro atribuída, de forma a converter as fórmulas de referência externa nos valores exibidos.

Pesquisando, encontrei esse código

'Converte fórmula em valor
Sub ConverteRange()

Dim cell As Range

'Itera pelo range de dados
For Each cell In Selection
cell.Value = cell.Value
Next cell

End Sub

Porém, esse código depende de que o usuário selecione as células que deseja converter a fórmula no valor exibido.
Como faço para incluir nesse código uma área da guia para ser convertida pela execução da macro?

 
Postado : 18/03/2016 10:18 am
(@mprudencio)
Posts: 0
New Member
 

Tenta este.


Sub TransformaValor()

Application.ScreenUpdating = False

    Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
    Range("A1").Select
    ActiveWorkbook.Save
    
Application.ScreenUpdating = True

End Sub

E so colocar em um modulo e associar a um botao

 
Postado : 18/03/2016 11:20 am
(@fabio81)
Posts: 0
New Member
Topic starter
 

Obrigado, MPrudencio
Vou testar te falo

 
Postado : 22/03/2016 10:57 am
(@fabio81)
Posts: 0
New Member
Topic starter
 

Então, o código que me passou, MPrudencio, necessita que eu selecione manualmente a(s) célula(s) que desejo converter fórmula em conteúdo.
Mas me deu um bom começo.
Pesquisei mais um pouco e tentei o seguinte, que deu certo:

'Converte fórmula em valor
Sub ConverteValor()
Sheets("Nome_da_Guia").Activate
ActiveSheet.Range("A1:B50").Select
Dim cell As Range

'Itera pelo range de dados
For Each cell In Selection
cell.Value = cell.Value
Next cell

End Sub

Veja que foi preciso acrescentar um comando de selecionar um intervalo primeiro.
Resolvido.
Muito obrigado

 
Postado : 22/03/2016 12:12 pm