Shell.namespace不接受字符串变量,但接受字符串本身

时间:2015-11-23 10:04:39

标签: excel vba excel-vba

我有一个代码,我想在其中循环浏览文件夹中的文件,检查它们的内置或自定义文档属性(不打开它们),然后打开那些打算打开的文件。 为此,我正在使用Shell并设置我正在使用的文件夹Shell.Namespace

问题Namespace一致,我想。当我使用变量 strSuborCesta作为路径时,它不起作用。当我将变量strSuborCesta打印到即时窗口并使用Shell.Namespace("....") 中打印的字符串时,它可以正常工作

它不起作用我是说我得到了:

  

运行时错误:91对象变量或未设置块

当我尝试遍历文件夹中的文件时(在这种情况下没有设置,所以我理解为什么会发生错误,但是不明白为什么它不接受字符串变量)

路径在两个方面都是正确的。但我需要它是变量,而不是硬编码字符串。

我在哪里出错?

有没有更好的方法,在不打开Excel文件的情况下检查文档属性(如评论,标题,作者等)?

以下是给我带来困难的部分(目前正处于测试阶段)。

str[name of variable]变量是字符串数据类型。 sFile, oShell, oDir are as Variants

 '--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'get a root path
strPriecinokCesta = ThisWorkbook.Path 'path to this file
strPriecinokCesta = Left(strPriecinokCesta, Len(strPriecinokCesta) - (Len(strPriecinokCesta) - InStrRev(strPriecinokCesta, "\"))) 'root path is one level above this file
'--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'input files are in a subfolder
strSuborCesta = strPriecinokCesta & "Zdroje\"
strSuborPripona = "Formular_BD_kotolna*.xls" 'name of a file with extension
strSuborNazov = Dir(strSuborCesta & strSuborPripona) 'actual file name
'--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'get access to the file system
Set oShell = CreateObject("Shell.Application")
Set oDir = oShell.Namespace(strSuborCesta) '<----this will produce an error. In contrast to using a hard coded string. Why?

For Each sFile In oDir.Items '<---- run time error 91 occurs on this line
    Debug.Print test & " : " & oDir.GetDetailsOf(sFile, 24) 'comments
Next

1 个答案:

答案 0 :(得分:2)

变量strSuborNazov应该是变体

Dim strSuborNazov as variant 

oShell.Namespace(strSuborNazov) 

https://msdn.microsoft.com/en-us/library/windows/desktop/bb774085(v=vs.85).aspx