У меня есть приложение EXCEL VBA «экспорт в PDF», которое использует DIR для проверки существования файла EXP_PDF.dll.Функция возвращает файл, но файл фактически находится в каталоге, отличном от того, на что (я думаю) указывает путь DIR.Я построил следующую простую подпрограмму для проверки:
Sub RetrieveFile()
Dim Shex As Object
Set Shex = CreateObject("Shell.Application")
file = Dir(Environ("commonprogramfiles") & "\Microsoft Shared\OFFICE" & Format(Val(Application.Version), "00") & "\EXp_PDF.DLL")
Path = Environ("commonprogramfiles") & "\Microsoft Shared\OFFICE" & Format(Val(Application.Version), "00")
targetFile = Path & "\EXp_PDF.DLL"
If Len(file) > 0 Then
MsgBox (targetFile & " Exists")
Debug.Print targetFile
FileCopy targetFile, "C:\Temp\exp_pdf.dll"
tgtfile = targetFile
Shex.Open (tgtfile)
Else
MsgBox ("File Doesn't Exist")
End If
End Sub
- Функция DIR возвращает имя файла с длиной больше 0
- . Msgbox отображает путь.(но в каталоге нет файлов. Окна поиска находят файл в другом каталоге.)
- код "file copy" копирует файл во временный каталог
- Файл "file"код open »запускается, но сообщает, что файл не может быть найден
Справочная информация: у нас есть инженерный журнал, встроенный в Excel, который использует приложение VBA для экспорта в PDF и электронную почту.Похоже, что код, созданный на MSDN и, вероятно, был создан для Office 2007. Недавно компьютеры с WIN 10 Office 16 обновили Windows, и теперь код не работает.Я восстановил функцию, закомментировав поиск файла EXP_PDF.dll, но я хотел бы знать, почему функция DIR, похоже, находит dll в другом месте, и да, скрытые файлы Windows установлены на показ.Спасибо.