VBA.Dir文件系统

VBA.Dir文件系统,vba,vb6,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 t

在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()返回空字符串

关于上述代码中的错误的任何帮助,请考虑以下几点:

  • 另外,vb6中不支持双等号(=)

  • Dir=(无论什么)可以返回“” 如果什么是目录或隐藏文件

  • 您可以使用 If Dir(无论什么,vbDirectory或vbHidden或vbArchive或vbNormal)

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

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

    dim sTgt$
    sTgt = Dir(whatever)
    
    另外,顺便说一句,检查每种类型的替代方法是检查文件

    奇怪的是,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,则返回字节


    Gary

    cdFile.FileName的实际值是多少?(提示:使用调试器查找。)文件系统中该位置是否存在文件?(提示:使用资源管理器查找。)是。。。该文件已存在。我可以在getFile.ShowOpen对话框中选择该文件。但该文件存在于其他网络驱动器中。我怀疑VB6是否会使用VBA类型库。VBA是VB的一个子集,而不是相反。VB6应该有自己的文件系统函数(),但是看看您提供的代码片段,我确实想知道cdFile.filename来自哪里?您确定这会返回您期望的值吗?如果改用Dir(txtFile.Text)怎么办?Cindy,我想我们可以在VB6中使用VBA.FileSystem库,因为上面的代码适用于其他文件。很抱歉,它应该是getFile而不是cdFile,并且它正在返回正确的文件路径。无法使用Dir(txtFile.Text),因为它只有文件名而没有文件路径,但文件位于某个网络位置。是否存在任何权限问题?如果是,我如何在getFile.ShowOpen对话框中看到该文件您可以共享getFile.filename的值吗?这是真正的代码吗?文件名的大小写不正确。不要忘记
    vbReadOnly
    标志。是的,鲍勃,非常正确。我有点空编码,想‘我知道还有另一个参数’,但我相信有些人会注意到。;-)