Tem como verificar se a célula A1 de outro arquivo está vazia ?
Ex: Através do arquivo Dez 2017.xlsm, verificar se a célula da Jan (Plan1) A1 do arquivo Jan 2018.xlsm está vazia
Obrigado !
Sim se vc abrir o arquivo
Vc abre o arquivo e faz a verificação da celula.
Usa o gravador de macros para saber o codigo que abre o arquivo.
Marcelo Prudencio
"Começar já é a metade do caminho."
Autor Desconhecido
Simplifica que simples fica.
Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.
Fiz do seguinte modo :
Sub ImportarDados() Application.EnableEvents = False Application.ScreenUpdating = False Dim wsOrigem As Worksheet Dim wsDestino As Worksheet Set wsOrigem = Workbooks("Dez 2017.xlsm").Worksheets("Plan1") Set wsDestino = Workbooks("Jan 2018.xlsm").Worksheets("Plan1") If wsDestino.Range("A1") <> "" Then MsgBox "A célula A1 não está vazia" Exit Sub Else wsOrigem.Range("A1").Copy: wsDestino.Range("A1").PasteSpecial Paste:=xlPasteValues MsgBox "Importação de Dados Concluída" End If Application.CutCopyMode = False Application.ScreenUpdating = True Application.EnableEvents = True End Sub
Sub ImportarDados() On Error GoTo abrir_arquivo inicio_do_codigo: Application.EnableEvents = False Application.ScreenUpdating = False Dim wsOrigem As Worksheet Dim wsDestino As Worksheet Set wsOrigem = Workbooks("Dez 2017.xlsm").Worksheets("Plan1") Set wsDestino = Workbooks("Jan 2018.xlsm").Worksheets("Plan1") If wsDestino.Range("A1") <> "" Then MsgBox "A célula A1 não está vazia" Exit Sub Else wsOrigem.Range("A1").Copy: wsDestino.Range("A1").PasteSpecial Paste:=xlPasteValues MsgBox "Importação de Dados Concluída" End If Application.CutCopyMode = False Application.ScreenUpdating = True Application.EnableEvents = True Exit Sub abrir_arquivo: Workbooks.Open Filename:="C:Usersandre.arrudaDesktopexemplo.xlsm" ' MUDE AQUI PARA O CAMINHO DO SEU ARQUIVO Goto inicio_do_codigo End Sub
___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como [Resolvido].
Att.
André Arruda
xlarruda tem um problema
Vou passar a planilha para frente, vai saber que pasta o usuário vai colocar, sem falar que o caminho user dele será diferente.
Acho melhor de vez de aparecer a mensagem de erro, aparecer uma mensagem pedido para ele abrir o outro arquivo
Assim deu certo !
Sub ImportarDados() Application.EnableEvents = False Application.ScreenUpdating = False Dim wsOrigem As Worksheet Dim wsDestino As Worksheet Dim Aviso As String On Error GoTo Aviso 'tendo erros, pula para aviso Set wsOrigem = Workbooks("Dez 2017.xlsm").Worksheets("Plan1") Set wsDestino = Workbooks("Jan 2018.xlsm").Worksheets("Plan1") If wsDestino.Range("A1") <> "" Then MsgBox "A célula A1 não está vazia" Exit Sub Else wsOrigem.Range("A1").Copy: wsDestino.Range("A1").PasteSpecial Paste:=xlPasteValues MsgBox "Importação de Dados Concluída" Application.CutCopyMode = False Exit Sub End If Aviso: MsgBox "Abra a planilha Jan 2018.xlsm para fazer a transferência !" Application.CutCopyMode = False Application.ScreenUpdating = True Application.EnableEvents = True End Sub
Legal. Boa idéia.
Poderia fazer de forma que, se o arquivo não estiver aberto o Excel abre uma janela de seleção pedindo para que o usuário selecione o arquivo para abri-lo. (economiza tempo do usuário)
Dessa forma:
Sub ImportarDados() On Error GoTo abrir_arquivo inicio_do_codigo: Application.EnableEvents = False Application.ScreenUpdating = False Dim wsOrigem As Worksheet Dim wsDestino As Worksheet Set wsOrigem = Workbooks("Dez 2017.xlsm").Worksheets("Plan1") Set wsDestino = Workbooks("Jan 2018.xlsm").Worksheets("Plan1") If wsDestino.Range("A1") <> "" Then MsgBox "A célula A1 não está vazia" Exit Sub Else wsOrigem.Range("A1").Copy: wsDestino.Range("A1").PasteSpecial Paste:=xlPasteValues MsgBox "Importação de Dados Concluída" End If Application.CutCopyMode = False Application.ScreenUpdating = True Application.EnableEvents = True Exit Sub abrir_arquivo: MsgBox "Por favor, abra o arquivo primeiramente...", vbExclamation, "Abrir Arquivo" With Application.FileDialog(msoFileDialogOpen) .Show .Execute End With GoTo inicio_do_codigo End Sub
___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como [Resolvido].
Att.
André Arruda