none
Retorno True or False sobre possibilidade de abrir um arquivo RRS feed

  • Pergunta

  • Bom dia !

    Não encontrei pergunta semelhante no fórum,

    Fica abaixo minha dúvida:

    Estou tentando obter o retorno "true" ou "false" se for possível abrir um arquivo..

    Exemplo:

    Private Sub UserForm_Initialize()
    On Error GoTo msg
    fname = WbDES.Path & Application.PathSeparator & "FOTOS" & Application.PathSeparator & WbDES.Sheets("ambiente").Range("Q" & LocDES.Row)
    Image1.Picture = LoadPicture(fname)
    Exit Sub
    msg:
    MsgBox "A imagem não condiz com o nome do arquivo!", vbCritical, "Aviso"
    Unload Me
    End Sub

    Esta form abre quando eu clico em um botão para ver uma imagem (que só aparece se houver realmente algum valor no "Range("Q" & LocDES.Row)")..

    Porém, às vezes, ocorre erro porque existe um valor mas este não condiz com o nome da imagem que está na pasta "FOTOS"..

    E então, quero fazer um boolean para que nem apareça este botão caso não for encontrado um arquivo na pasta "FOTOS" com o valor do "Range("Q" & LocDES.Row)"..

    Alguém tem alguma idéia? Fui claro o suficiente? :)

    Thx!

    quinta-feira, 14 de junho de 2012 13:18

Respostas

  • Para saber se determinado arquivo existe usa o comando Dir.

    No teu caso podes usar o evento Change da folha 'ambiente' para mostar ou esconder o botão conforme o valor da célula, tipo:

    Private Sub Worksheet_Change(ByVal Target As Range)
        fname = Me.Parent.Path & "\FOTOS\" & Me.Range("Q" & LocDES.Row)
        If Dir(fname) = "" Or Me.Range("Q" & LocDES.Row) = "" Then
            Me.Shapes("Botão").Visible = False
        Else
            Me.Shapes("Botão").Visible = True
        End If
    End Sub
    
    Não garanto que funcione como pretendes porque não sei que variável é LocDES nem qual é o seu valor.
    sexta-feira, 15 de junho de 2012 08:30
  • Obrigado Nando, 

    LocDes é um range dentro do Workbook WbDes.. :)

    Vou testar este código, 

    Pela lógica deve dar certo sim!

    Mas ontem consegui outro que também resolveu meu problema, segue para os demais:

    Function testefile(t As String) As Boolean
        testefile = False
        If Dir(t, vbDirectory) <> "" Then testefile = True
    End Function
    
    Sub teste()
        If testefile("Célula c/ o diretório do arquivo") Then 
            Debug.Print "Tem o arquivo"
        Else
            Debug.Print "não tem o arquivo"
        End If
    End Sub

    aí é só referenciar a "célula c/ o diretório" com uma variável as Range..

    e ao invés do debug.print o que eu desejo fazer caso tenha o arquivo ou não..

    Abraço,

    sexta-feira, 15 de junho de 2012 10:42

Todas as Respostas

  • Para saber se determinado arquivo existe usa o comando Dir.

    No teu caso podes usar o evento Change da folha 'ambiente' para mostar ou esconder o botão conforme o valor da célula, tipo:

    Private Sub Worksheet_Change(ByVal Target As Range)
        fname = Me.Parent.Path & "\FOTOS\" & Me.Range("Q" & LocDES.Row)
        If Dir(fname) = "" Or Me.Range("Q" & LocDES.Row) = "" Then
            Me.Shapes("Botão").Visible = False
        Else
            Me.Shapes("Botão").Visible = True
        End If
    End Sub
    
    Não garanto que funcione como pretendes porque não sei que variável é LocDES nem qual é o seu valor.
    sexta-feira, 15 de junho de 2012 08:30
  • Obrigado Nando, 

    LocDes é um range dentro do Workbook WbDes.. :)

    Vou testar este código, 

    Pela lógica deve dar certo sim!

    Mas ontem consegui outro que também resolveu meu problema, segue para os demais:

    Function testefile(t As String) As Boolean
        testefile = False
        If Dir(t, vbDirectory) <> "" Then testefile = True
    End Function
    
    Sub teste()
        If testefile("Célula c/ o diretório do arquivo") Then 
            Debug.Print "Tem o arquivo"
        Else
            Debug.Print "não tem o arquivo"
        End If
    End Sub

    aí é só referenciar a "célula c/ o diretório" com uma variável as Range..

    e ao invés do debug.print o que eu desejo fazer caso tenha o arquivo ou não..

    Abraço,

    sexta-feira, 15 de junho de 2012 10:42