我正在尝试编写一些代码,这些代码会将几个标签保存为由excell中的文件指定的文件夹中的pdf文档。我希望文档中的单元格指示保存此文件的位置。我不确定这是否可能,但如果有任何帮助会很好!我目前在代码保存过程中遇到运行时错误“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
End Sub
答案 0 :(得分:1)
您的代码适合我,但不适用于您指定的路径。
声明一个新的字符串变量:
dim myDocsPath as String
使用以下途径获取路径:
myDocsPath = Environ$("USERPROFILE") & "\My Documents\"
然后将Fpath的定义更改为:
Fpath = myDocsPath & YrMth & "\Group\" & Fname & ".pdf"
如果我将myDocsPath
的结尾更改为& "\My foo Documents\"
,我会收到相同的1004错误。
答案 1 :(得分:1)
尝试代码中的替换行
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