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