Я использую VBA в Excel, чтобы просмотреть серию файлов и решить, какие из них импортировать. Я хотел бы решить, какие файлы импортировать, используя что-то вроде тегов файла, чтобы мне не нужно было открывать каждый файл. Я пытаюсь использовать метод GetDetailsOf
чтобы получить их, но он терпит неудачу всякий раз, когда я пытаюсь использовать переменную для имени файла.
Этот код, использующий константу для имени файла, работает правильно:
Sub TestTags()
Dim strPath As String
Dim strFile As String
strPath = "C:\Users\XXXX\Documents\Safe Space\MacroTest\"
strFile = Dir(strPath & "*.xls*")
Do While strFile <> ""
Debug.Print GetTags()
strFile = Dir()
Loop
End Sub
Function GetTags()
Const csFile As String = "MyTestFile.xlsx"
With CreateObject("Shell.Application").Namespace("C:\Users\XXXX\Documents\Safe Space\MacroTest\")
GetTags = .GetDetailsOf(.Items.Item(csFile), 18)
End With
End Function
Однако, когда я пытаюсь заменить константу переменной, переданной вызывающей подпрограммой, я получаю ошибку. Вот код ошибки:
Sub TestTags()
Dim strPath As String
Dim strFile As String
strPath = "C:\Users\XXXX\Documents\Safe Space\MacroTest\"
strFile = Dir(strPath & "*.xls*")
Do While strFile <> ""
Debug.Print GetTags(strFile)
strFile = Dir()
Loop
End Sub
Function GetTags(ByVal strFile As String)
Const csFile As String = "MyTestFile.xlsx"
Dim i As Integer
With CreateObject("Shell.Application").Namespace("C:\Users\XXXX\Documents\Safe Space\MacroTest\")
GetTags = .GetDetailsOf(.Items.Item(strFile), 18)
End With
End Function
Единственное, что я изменяю, это аргумент в .GetDetailsOf
, переключающийся с постоянной на переменную. Всякий раз, когда он запускается, он останавливается на этой строке с «Ошибка 445: объект не поддерживает это действие»
Что я делаю неправильно?