none
Função não retorna valor esperado RRS feed

  • Pergunta

  • Amigos,

    Estou utilizando a função FileLen e a mesma não está retornando o valor esperado:

    ....

    If FileExists(fullpath) then

        Dim oFS

        Set oFS = CreateObject ("Scripting.FileSystemObject")

        If oFS.getFileLength(fullpath) = "" Then

              getFileLength = "No Length Available"

        Else

              getFileLength = FileLen(fullpath)

        End If

        Set oFS = Nothing

    Else

       getFileLength = ""

    End If

    ...

       Mesmo que a variável oFS.getFileLength(fullpath) tenha valor, sempre está retornando brancos como resultado, poderiam por favor me ajudar a identificar o problema?

    Att,

    Rafael

    quarta-feira, 19 de fevereiro de 2014 11:07

Respostas

  • Sub pMain()
      Debug.Print pGetFileLen("c:\temp\demos.ds")
    End Sub
    
    Private Function pGetFileLen(strFilePath As String) As String
      Static oFS As Object 'Scripting.FileSystemObject
      Dim ret As String
    
      If oFS Is Nothing Then
        Set oFS = CreateObject("Scripting.FileSystemObject")
      End If
      
      If oFS.FileExists(strFilePath) Then
        ret = oFS.GetFile(strFilePath).Size
      Else
        ret = "Arquivo não existe."
      End If
      
      pGetFileLen = ret
    End Function


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    domingo, 23 de fevereiro de 2014 15:54
    Moderador

Todas as Respostas

  • Não conheço direito esse script, mas creio que o vba está entendo o getFileLength com uma varável e não como uma função. Penso eu que você deva colocar o nome da variável oFS antes do getFileLength, assim como fez no If. (oFS.getFileLength = "No Length Available") e (oFS.getFileLength = FileLen(fullpath)). Se você usa getFileLength como uma variável, aí precisaria de todo o código para poder depurar.
    quarta-feira, 19 de fevereiro de 2014 11:23
  • Sub pMain()
      Debug.Print pGetFileLen("c:\temp\demos.ds")
    End Sub
    
    Private Function pGetFileLen(strFilePath As String) As String
      Static oFS As Object 'Scripting.FileSystemObject
      Dim ret As String
    
      If oFS Is Nothing Then
        Set oFS = CreateObject("Scripting.FileSystemObject")
      End If
      
      If oFS.FileExists(strFilePath) Then
        ret = oFS.GetFile(strFilePath).Size
      Else
        ret = "Arquivo não existe."
      End If
      
      pGetFileLen = ret
    End Function


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    domingo, 23 de fevereiro de 2014 15:54
    Moderador
  • o que esse If procura?

      If oFS.FileExists(strFilePath) Then
        ret = oFS.GetFile(strFilePath).Size
      Else
        ret = "Arquivo não existe."
      End If

    segunda-feira, 24 de fevereiro de 2014 18:07
  • Essa instrução do If verifica se um determinado arquivo existe ou não, através do método FileExists do objeto FileSystemObject.

    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    segunda-feira, 24 de fevereiro de 2014 21:18
    Moderador