【发布时间】:2018-10-29 10:53:31
【问题描述】:
我有一个 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 显示路径。 (但目录中没有文件。搜索 windows 会在不同的目录中找到该文件。)
- “文件复制”代码是将文件复制到临时目录
- “文件打开”代码启动,但报告找不到文件
背景:我们有内置在 excel 中的工程日志,它使用 VBA 应用程序导出为 pdf 和电子邮件。看起来代码起源于 MSDN,可能是为 Office 2007 构建的。最近 WIN 10 Office 16 计算机进行了 Windows 更新,现在代码失败了。我通过注释掉 EXP_PDF.dll 的搜索来恢复功能,但我想知道为什么 DIR 功能似乎在其他位置找到 dll,是的,隐藏文件和 windows 文件设置为显示。谢谢。
【问题讨论】:
标签: excel vba active-directory directory