【发布时间】:2014-01-21 23:01:28
【问题描述】:
我一直在使用以下代码在 Excel 中指定文件夹路径:
Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker)
diaFolder.AllowMultiSelect = False
diaFolder.Show
我会将 pdf 文件(通过 VBA 代码)导出到该路径。当我在 Windows XP 上运行 Excel 2007 时,这段代码可以完美运行。我最近升级了我的操作系统和 Office 版本,现在我在 Windows 7 上运行了 Excel 2010。代码不再像以前那样工作,问题是每次运行代码时路径都会不断上移一级。
例如,假设我选择以下路径:
\users\AK\Desktop\Projects\ProjectM
实际的pdf保存在\users\AK\Desktop\Projects\
如果我选择:\users\AK\Desktop\Projects\
pdf保存在\users\AK\Desktop\
如果我继续运行代码,它总是会向上跳一级,所以假设我按顺序运行它 3 次(每次不选择我的路径),我的 pdf 文件将存储在:\users\AK\
我不知道是 Excel 2010 问题还是 Windows 7 问题。有人遇到过吗?
编辑:包含完整代码:
Private Sub CODERUN()
' Define values
FN_A = Cells(2, 2).Value
' Print PDF version
Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker)
diaFolder.AllowMultiSelect = False
diaFolder.Show
' Print PDF version
Sheets("Part A").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:=FN_A & "_A", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End Sub
【问题讨论】:
-
您应该显示代码的其他相关部分。您列出的内容不足以诊断问题。
-
如果每次都运行上面的,每次都要选择路径;我同意@TimWilliams 的观点,即您需要展示一段完整的代码——如何使用返回的路径,以及如何循环?有了这两条信息,我们或许能够重现问题并提供帮助。
-
同意上述两个 cmets。无论如何,您也可以尝试
GetSaveAsFilename以任何格式保存文件,尽管我没有尝试使用 PDF,因为上面有点复杂。 -
FULL CODE: Private Sub CODERUN() ' 定义值 FN_A = Cells(2, 2).Value ' 打印 PDF 版本 Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker) diaFolder.AllowMultiSelect = False diaFolder.Show ' 打印 PDF 版本表(“A 部分”)。选择 ActiveSheet.ExportAsFixedFormat 类型:=xlTypePDF,文件名:=FN_A 和“_A”,质量:=xlQualityStandard,IncludeDocProperties:=True,IgnorePrintAreas:=False,OpenAfterPublish:=False End子