Notifications
Clear all

Verificar célula vazia de outro arquivo

8 Posts
3 Usuários
0 Reactions
1,636 Visualizações
(@vonzuben)
Posts: 549
Prominent Member
Topic starter
 

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 !

 
Postado : 05/08/2018 7:01 am
(@mprudencio)
Posts: 0
New Member
 

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.

 
Postado : 05/08/2018 8:16 am
(@vonzuben)
Posts: 549
Prominent Member
Topic starter
 

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
 
Postado : 06/08/2018 7:40 pm
(@vonzuben)
Posts: 549
Prominent Member
Topic starter
 

A planilha Jan 2018.xlsm quando não estiver aberta vai aparecer o seguinte erro conforme a imagem

Caso não esteja aberto executar código para abrir ou tratar o erro com uma mensagem mandando abrir o arquivo ?

Obrigado !

 
Postado : 06/08/2018 9:07 pm
(@xlarruda)
Posts: 0
New Member
 
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
 
Postado : 07/08/2018 6:24 am
(@vonzuben)
Posts: 549
Prominent Member
Topic starter
 

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

 
Postado : 07/08/2018 6:03 pm
(@vonzuben)
Posts: 549
Prominent Member
Topic starter
 

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
 
Postado : 07/08/2018 7:03 pm
(@xlarruda)
Posts: 0
New Member
 

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
 
Postado : 08/08/2018 5:59 am