vba fso文件存在与映射的驱动器号一起使用但不适用于unc路径

时间:2015-06-16 20:38:32

标签: vba access-vba unc filesystemobject

之前我曾多次使用BOOST_ERROR_CODE_HEADER_ONLY,但始终使用映射的驱动器号。我引用了Microsoft Scripting Runtime。

在我的新情况下,很多人将相同的驱动器号映射到不同的路径,所以我想使用UNC路径。

当我使用UNC路径时,我不断得到fso.FileExists(fullfilepath)评估为false。

如果我使用我个人使用的映射驱动器号,它的计算结果为true - 文件在那里,并且路径名没有改变。

我发现人们发布了一些帖子,说明当路径中的文件夹名称中有空格时,他们遇到了问题,而解决方案就是将fullfilepath变量用双引号括起来,比如

fso.FileExists(fullfilepath)

但这也不起作用。

我甚至粘贴了路径,而不是使用变量。

这有效:

fullfilepath = Chr(34) & fullfilepath & Chr(34) 

这不起作用:

fso.FileExists("S:\pathpart\file.csv")

我尝试添加Microsoft Visual Basic for Applications Extensibility 5.3参考,它没有什么区别。

该文件不是隐藏的或只读的。

我完全被难倒了。

为清晰起见,编辑添加路径 fso.FileExists("\\\networklocation\pathpart\file.csv")

2 个答案:

答案 0 :(得分:1)

好的,这是我自己的错误。我错过了路径的一部分,因为无论何时我在Windows资源管理器中导航它,路径都显示使用我的映射驱动器 - 我错过了复制路径时映射到的文件夹。

我发现它的方式是,我想我必须轮询用户的机器以查看它们至少与目标路径的起始部分对应的映射 - 因为顺序要使用该程序,他们需要访问要导入的文件...

所以我试着弄清楚如何将映射的驱动器号转换为UNC路径,然后我将想办法如何遍历其机器的所有映射驱动器并将其与目标路径进行比较......

如果您需要这样做,我找到的最佳解释和代码在这里: VBA to convert a mapped drive to a UNC path

当我向我的映射驱动器提供该功能时,我得到了\\corp\sites\abc2001\loc1shared\的结果,这显然是我遇到问题的原因。

答案 1 :(得分:0)

我无法为UNC路径重现该特定错误,但如果fileexists方法不适合您,则Dir方法可能适合您。

Dir("\\Path\to\File.txt") <> ""