Excel 2010 VBA:使用单元格中的值保存文件以确定path和文件名

我想写一些代码,将保存多个选项卡作为Excel文件指定的文件夹中的PDF文档。 我想要文档中的单元格来决定保存这个文件的位置。 我不知道这是否可能,但如果有任何帮助将是好的! 我目前在我的代码的保存过程中得到运行时错误“1004”。

是的,我有创build被引用的文件夹。

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 

结束小组

你的代码适用于我,但不适用于你指定的path。

声明一个新的stringvariables:

 dim myDocsPath as String 

使用以下path获取path

 myDocsPath = Environ$("USERPROFILE") & "\My Documents\" 

然后将您的Fpath的定义更改为:

 Fpath = myDocsPath & YrMth & "\Group\" & Fname & ".pdf" 

如果我将myDocsPath的结尾myDocsPath& "\My foo Documents\"我将得到相同的1004错误。

尝试在代码中replace行

 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" 

编辑:这个解决scheme的核心是行:

 MyDocsFolder = WshShell.SpecialFolders("MyDocuments") & "\" 

它将系统path返​​回到“我的文档”,而不考虑本地系统设置,如“我的文档”文件夹的语言或非标准位置。 然后在最后加上一个反斜杠。

如果你询问系统有关特殊文件夹而不是硬编码脚本中的这些数据,它会更优雅(代码变得更加便携)。

有关Windows中的特殊文件夹的更多信息, 请访问https://www.rondebruin.nl/win/s3/win027.htm