3

我有一个位于“C:\Users\kris_r\Application Data\PovX.ini”中的文件。只是预测问题 - 这条路径在 Watch 框架中正确显示..

下面的功能在我的 Windows XP 和 MS Word 2010 上运行没有任何问题:

Public Function FileExists(filename As String) As Boolean
     If (Dir(filename, vbNormal Or vbReadOnly Or vbHidden Or vbSystem Or vbArchive OR vbAlias) = "") Then
        FileExists = False
     Else:
        FileExists = True
     End If
End Function

但是在 Windows 7 上,此目录是“C:\Users\kris_r\AppData\Roaming\”的别名。如果我运行上面的代码,它会生成以下错误:运行时错误'52':错误的文件或编号

我编写了基于FileSystemObject的程序,该程序有效:

Public Function FileExists(filename As String) As Boolean
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.FileExists(filename) Then FileExists = True Else FileExists = False
End Function

这样编程问题就解决了。但是我不明白为什么,即使使用选项vbAlias, DIR() 方法也不起作用。

4

1 回答 1

2

因为vbAlias仅适用于 Macintosh。

请看这个链接

Constant    Value   Description
---------------------------------------------------------------------------------
vbNormal    0       Normal (default for Dir and SetAttr)
vbReadOnly  1       Read-only
vbHidden    2       Hidden
vbSystem    4       System file
vbVolume    8       Volume label
vbDirectory 16      Directory or folder
vbArchive   32      File has changed since last backup
vbAlias     64      On the Macintosh, identifier is an alias.
于 2013-04-26T21:46:20.083 回答