VBA.FileSystem目录

时间:2016-02-05 14:40:59

标签: vba vb6

在VB6代码中,我使用VBA.FileSystem.Dir从目录路径获取文件名。但它返回空字符串。请找到以下代码

Call getFile.ShowOpen //getFile is CommonDialog Control of VB6

txtFile.Text = getFile.FileTitle //Correct file name is returned
If Dir(getFile.filename) == "" Then
     // Conditions come true..But ideally it should not!!!

但该文件位于某个网络位置。可以有任何许可问题吗?如果是,我如何在getFile.ShowOpen对话框中看到该文件,Dir()返回空字符串?

上述代码中出现问题的任何帮助

1 个答案:

答案 0 :(得分:1)

考虑以下几点:

  1. afaik,vb6不支持双等号(==)

  2. Dir =(无论如何)可以返回“” 如果无论是目录还是隐藏文件

  3. 你可以通过使用来捕获名称   如果Dir(无论如何,vbDirectory或vbHidden或vbArchive或vbNormal)

    但你仍然需要测试每一个以查看它是什么。

    顺便说一句,最好有一个变量来接收Dir并检查它,而不是检查Dir本身。

    dim sTgt$
    sTgt = Dir(whatever)
    

    另外,顺便说一下,每种类型的替代方法是检查FileLen。

    奇怪的是,FileLen不受Hidden / Sys attribs的影响,但如果文件不存在则会出错。

    所以,(这是非常老的黑客攻击,但是方便的代码)。

    如果为FileLen声明变量

    Dim lfLen&
    'and have some error coding
    On Error resume next
    
    'and then just inspect the target
    lfLen = FileLen(stgt)
    
    if lflen > 0 then 
    ... do things
    
    (or if hacking)
    ... binary open
    

    因为,如果文件不存在,   目录将返回0,   但如果file = archive,hidden,sys它将返回字节。

    HTH

    加里