Excel 2010 VBA:使用单元格中的值保存文件以确定路径和文件名
Posted
技术标签:
【中文标题】Excel 2010 VBA:使用单元格中的值保存文件以确定路径和文件名【英文标题】:Excel 2010 VBA: Save file using value from cell to determine path and filename 【发布时间】:2013-06-17 20:27:04 【问题描述】:我正在尝试编写一些代码,将多个选项卡保存为 pdf 文档,保存在 Excel 中的文件指定的文件夹中。我希望文档中的单元格指示此文件的保存位置。我不确定这是否可能,但如果有任何帮助会很好!我目前在保存代码的过程中遇到运行时错误“1004”。
是的,我确实创建了被引用的文件夹。
Sub asdf()
Dim Fname As String
Dim Fpath As String
Dim YrMth As String
Fname = Sheets("Sheet1").Range("A1").Text
YrMth = Sheets("Sheet1").Range("A2").Text & "\" & Sheets("Sheet1").Range("A3").Text
Fpath = "C:\Documents and Settings\My Documents\" & YrMth & "\Group\" & Fname & ".pdf"
ThisWorkbook.Sheets(Array("Sheet1", "Sheet2", "Sheet4")).Select
Application.DisplayAlerts = False
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=Fpath, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
结束子
【问题讨论】:
【参考方案1】:您的代码适用于我,但不适用于您指定的路径。
声明一个新的字符串变量:
dim myDocsPath as String
获取路径使用:
myDocsPath = Environ$("USERPROFILE") & "\My Documents\"
然后将 Fpath 的定义更改为:
Fpath = myDocsPath & YrMth & "\Group\" & Fname & ".pdf"
如果我将 myDocsPath
的结尾更改为 & "\My foo Documents\"
,我会收到与您遇到的相同的 1004 错误。
【讨论】:
感谢您对餐饮主管的见解!【参考方案2】:尝试替换代码中的行
Fpath = "C:\Documents and Settings\My Documents\" & YrMth & "\Group\" & Fname & ".pdf"
与
Dim WshShell As Object
Dim MyDocsFolder As String
Set WshShell = CreateObject("WScript.Shell")
MyDocsFolder = WshShell.SpecialFolders("MyDocuments") & "\"
Fpath = MyDocsFolder & YrMth & "\Group\" & Fname & ".pdf"
编辑: 这个方案的核心是:
MyDocsFolder = WshShell.SpecialFolders("MyDocuments") & "\"
返回“我的文档”的系统路径,与本地系统设置(如语言)或“我的文档”文件夹的非标准位置无关。然后它在末尾添加一个反斜杠。
如果您向系统询问有关特殊文件夹的信息,而不是在脚本中硬编码此类数据,会更优雅(并且代码变得更便携)。
有关 VBA 中 Windows 特殊文件夹的更多信息,您可以找到 https://www.rondebruin.nl/win/s3/win027.htm
【讨论】:
告诉某人更改他们的代码而不解释为什么他们的代码是错误的而你的代码是正确的,对于未来的读者来说不是一个非常有用的答案。 你是对的。在我看来,这似乎是显而易见的并且是自我记录的。所以我添加了一个解释,这应该会有所启发。以上是关于Excel 2010 VBA:使用单元格中的值保存文件以确定路径和文件名的主要内容,如果未能解决你的问题,请参考以下文章