Notifications
Clear all

Caminho inexistente para salvamento

12 Posts
1 Usuários
0 Reactions
1,698 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Tenho um código que manda salvar um arquivo no disco Z em determinada pasta.
Caminho = "z:Controle de Inspeção_ Execução de Faixa"
Como faço para se este disco ou esta pasta não existirem que ao inves de dar erro de uma mensagem avisando que o "Caminho" nao existe?

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 01/05/2013 6:49 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite!!

Tente

Dim fso As New FileSystemObject
    
    If fso.FileExists("C:AleVBAFICHTEST.txt") Then
        MsgBox "Esse arquivo existe"


    Else
        MsgBox "Não existe"
    End If

    Set fso = Nothing

Veja mais em:
http://www.excelguru.ca/content.php?157 ... ry-(Folder)-Exists
http://www.vbaexpress.com/kb/getarticle.php?kb_id=559
http://www.mrexcel.com/archive/VBA/15543.html
Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 01/05/2013 6:59 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Valeu Alexandre,
Deu erro de compilação ;
O tipo definido pelo usuario nao foi definido.

Ah ele não precisa ver se o arquivo existe, e sim se o disco z: ou a pasta Controle de Inspeção_ Execução de Faixa existe ou não

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 01/05/2013 7:06 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite!!

Veja os links, especialmente o primeiro deve lhe ajudar.
Faça um esforço, caso não dê certo poste sua replica!
Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 01/05/2013 7:09 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Então alexandre , até estava olhando eles já , mas é tudo em ingles ; e ai fica mais dificil ainda ; sem entender quase nada de vba e nada de ingles ; ai até por dedução fica foda ; mais vou tentando aqui

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 01/05/2013 7:28 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite!!

OK, enquanto isso me mande o código, onde quer que seja posto a verificação do arquivo existente, ou mande seu arquivo modelo compactado (só com a parte principal da dúvida)!!

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 01/05/2013 7:36 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Alguem já me deu este código que uso na planilha ; acho que seria só questão de adapta-lo ; porem não consegui.
Neste caso ele verifica se existe uma pasta polo dentro da pasta Controle de Inspeção_ Execução de Faixa se não existir ele cria a pasta polo para salvar o arquivo ;
mas se a pasta Controle de Inspeção_ Execução de Faixa não existir ele enxerga como erro. ou se o disco Z: não existir dá erro tambem

Polo = Range("D71").Value
    
    'Determina qual o local a ser salvo o novo arquivo
    Caminho = "z:Controle de Inspeção_ Execução de Faixa" & Polo & ""

'Verifica se o diretorio existe, se não existir, cria
        If (Dir(Caminho, vbDirectory) = "") Then
            MkDir (Caminho)
        End If
    'Verifica se o arquivo já existe, se existir, deleta
        If (Dir(Caminho & NomeCopia & ".xlsx") <> "") Then
            Existe = MsgBox("  Arquivo Existente" & Chr(13) & _
            "Deseja Substitui-lo?", vbExclamation + vbYesNo, "Atenção")
            
            If Existe = vbYes Then
            
                Kill Caminho & NomeCopia & ".xlsx"
            Else
               ' GoTo Aberto
               GoTo Fechado
            End If
        End If
        
        'Salva o novo arquivo no caminho especificado
    ActiveWorkbook.SaveAs Caminho & NomeCopia

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 01/05/2013 7:40 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Tente a rotina abaixo, só ajuste os caminhos :

Private Sub VerificaArquivo()
        Dim FileName As String, Path As String, meuArqu

        Path = "C:Documents and Settingsmauro.coutinhoMeus documentos"
        meuArqu = "NomeMeuArquivo.xls"
       
       'VERIFICA SE O CAMINHO EXISTE
        If Not Dir(Path, vbDirectory) = vbNullString Then
             'SE EXISTIR
             'adiciona a barra, se não houver
             If Right(Path, 1) <> "" Then Path = Path & ""
                'monta o caminho completo do arquivo
                FileName = Dir(Path & meuArqu)

            Else

                MsgBox "O CAMINHO :" & Chr(13) & Path & Chr(13) & "NÃO EXISTE"
                Exit Sub
        End If
         
        'VERIFICA SE O ARQUIVO EXISTE
        If FileName = "NomeMeuArquivo.xls" Then
           'SE EXISTIR, Coloque aqui sua chamada para abrir o arquivo
            MsgBox "OK, Arquivo encontrado"
           Exit Sub
        Else
                MsgBox "O Arquivo:" & Chr(13) & meuArqu & Chr(13) & "NÃO existe !!!"
        End If
           
    End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 02/05/2013 5:45 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Quase a mesma solução do colega Mauro.
A linha If (Dir(Caminho, vbDirectory) = ""), verifica se z:Controle de Inspeção_ Execução de Faixa" & Polo & " existe.
Se deseja verificar antes se : z:Controle de Inspeção_ Execução de Faixa existe, faça um if:
if (dir(" z:Controle de Inspeção_ Execução de Faixa", vbDirectory)="" then msgbox "Caminho ou pasta inicial não existente"
Tambem aqui o colega benzadeus "demonstra" praticamente a mesma solução, porem utilizando uma função :
http://www.ambienteoffice.com.br/office ... ho_existe/
ou aqui , tambem utilizando de uma função (é vb mas funciona no vba): http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=362843

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 02/05/2013 5:56 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Infelismente não consegui "encaixar" o código.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 02/05/2013 6:53 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Veja assim:

Polo = Range("D71").Value
       
'Determina qual o local a ser salvo o novo arquivo
Caminho = "z:Controle de Inspeção_ Execução de Faixa" & Polo & ""

'Verifica se existe z
If (Dir("Z:", vbDirectory) = "") Then
    MsgBox "Disco Z, não encontrado"
Exit Sub
ElseIf (Dir("Z:Controle de Inspeção_ Execução de Faixa", vbDirectory) = "") Then
    MsgBox "Pasta " & " Controle de Inspeção_ Execução de Faixa " & " Não encontrada"
Exit Sub
End If
'Verifica se o diretorio existe, se não existir, cria
    If (Dir(Caminho, vbDirectory) = "") Then
        MkDir (Caminho)
    End If
'Verifica se o arquivo já existe, se existir, deleta
    If (Dir(Caminho & NomeCopia & ".xlsx") <> "") Then
        Existe = MsgBox("  Arquivo Existente" & Chr(13) & _
        "Deseja Substitui-lo?", vbExclamation + vbYesNo, "Atenção")
               
        If Existe = vbYes Then
            Kill Caminho & NomeCopia & ".xlsx"
        Else
            GoTo fechado
        End If
    End If
           
'Salva o novo arquivo no caminho especificado
ActiveWorkbook.SaveAs Caminho & NomeCopia

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/05/2013 6:02 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

a primeira resposta do AlexandreVBA funciona. No seu caso, só não funcionou, Claudinei, pois você precisa ativar referência ao Microsoft Scripting Runtime.

Passos:
1- Entre no Excel e abra seu XLSM
2- Entre no VBE (Alt+F11)
3- vá em ferramentas / Referencias
4- encontre Microsoft Scripting Runtime
5- deixe este item selecionado e clique ok

uma vez ativado o scripting runtime, vc terá disponível em código alguns controles e métodos relacionados a disco rígido, pastas, arquivos, etc.

Somente depois que vc criar a referencia, o erro de tipo não definido pelo usuário sumirá.

abaixo, um exemplo bem simples do código:

Sub Testes()
Dim fso As FileSystemObject
    If fso.DriveExists("C") Then
        MsgBox "Drive C existe"
    End If
    If fso.FolderExists("C:Diretório") Then
        MsgBox "pasta Diretório existe existe"
    End If
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/05/2013 9:09 pm