我有一个代码,我想在其中循环浏览文件夹中的文件,检查它们的内置或自定义文档属性(不打开它们),然后打开那些打算打开的文件。
为此,我正在使用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
答案 0 :(得分:2)
变量strSuborNazov应该是变体
Dim strSuborNazov as variant
oShell.Namespace(strSuborNazov)
https://msdn.microsoft.com/en-us/library/windows/desktop/bb774085(v=vs.85).aspx