Notifications
Clear all

Vincular planilhas

2 Posts
2 Usuários
0 Reactions
886 Visualizações
(@kalaricco)
Posts: 0
New Member
Topic starter
 

Bom dia.
Estou iniciando a programar com VBA, e estou com um grande problema.

No arquivo anexo, contém 5 planilhas, sendo que a principal com a macro seria a BASE DE CARGA GERAL - CONSOLIDACAO.xlsm.
Porém utiliza as outras por existir vínculos para pegar algumas informações.

Ao executar (botão) da planilha BASE DE CARGA GERAL - CONSOLIDACAO.xlsm, ele executa um preenchimento automático das linhas e gera uns arquivos TXT. Este preenchimento é dados através da planilha BASE DE CARGA Moeda 17 vs BlocoG.xlsx.

Acontece que mesmo ao selecionar essa planilha, e se caso venha alterar seu nome (ex. BASE DE CARGA Moeda 17 vs BlocoG_V2.xlsx), dá erro no primeiro e nas demais linhas, logo que as formulas estão vinculas a planilha BASE DE CARGA Moeda 17 vs BlocoG.xlsx.

Como posso alterar isso nas regras da primeira linha, ou seja, direcionar ao nome do arquivo quando seleciono na caixa de seleção ?
Alterando para todas as células e abas da planilha BASE DE CARGA Moeda 17 vs BlocoG.xlsx?

Teste para emular o meu problema (altere o nome do BASE DE CARGA Moeda 17 vs BlocoG.xlsx para BASE DE CARGA Moeda 17 vs BlocoG_V2.xlsx e abra o arquivo BASE DE CARGA GERAL - CONSOLIDACAO.xlsm, o excel vai pedir o vinculo da planilha, pois perdeu a referencia. Porém ao selecionar o arquivo na caixa de seleção, deverá receber o nome da planilha no vinculo da aba GERAL)

Obrigado.

 
Postado : 06/02/2018 9:37 am
(@klarc28)
Posts: 0
New Member
 

1ª Alternativa) Sugiro acabar com vínculos. Isso é um desastre. Faça uma macro para pegar (ou levar) os dados, assim como você faz naquela macro que copia os dados no outro tópico que você abriu neste fórum.

2ª Alternativa)

Mas, se deseja continuar com os vínculos,
Grave uma macro criando os vínculos e substitua na macro,
Em todas as linhas que aparecer o nome do arquivo por nomearquivo.

Option Explicit

Private Sub Workbook_Open()
'Já testei e não deu erro
'Espero que você possa adaptar
Dim NOMEARQUIVO As String
Dim intervalo As Range

Application.ScreenUpdating = False
'Prevenção de erro
On Error Resume Next

NOMEARQUIVO = InputBox("DIGITE O NOME DO ARQUIVO")

'Defino o intervalo que conterá vínculo
Set intervalo = Plan1.Range("A1:B50")

'Abro a pasta de trabalho vinculada

Workbooks.Open (ThisWorkbook.Path & "" & NOMEARQUIVO & ".xlsm")
'Ativo esta pasta de trabalho
ThisWorkbook.Activate

'Ativo a planilha que vai ser conter o vínculo
Plan1.Select
Dim cl As Object
'percorro as células que vou vincular

For Each cl In intervalo.Cells
cl.Select

'Crio o vínculo
    ActiveCell.FormulaR1C1 = "='[" & NOMEARQUIVO & ".xlsm]Plan1'!R1C1"
Next cl
Application.ScreenUpdating = True
'Fecho a outra pasta
Workbooks(NOMEARQUIVO & ".xlsm").Close SaveChanges:=False
End Sub

 
Postado : 06/02/2018 10:42 am