创build目录并通过VBA保存excel文件
我试图在Excel VBA中创build一个目录,然后将xlsm和pdf文件复制到此目录中。
我可以创build目录,但我似乎无法将文件保存到此目录中?
下面的代码。 任何帮助深表感谢。 这真让我抓狂。 我所做的只是连接文件名,并将其保存到c:\ temp文件夹中,但是我想将其保存到c:\ temp中的一个子文件夹中
Sub Macro2() ' ' Macro2 Macro ' Dim FileName As String Dim FileName2 As String 'FileName3 As String FileName = Sheet1.TextBox1.Text FileName2 = ("C:\TEMP\" & FileName) 'CheckDir As String MsgBox (FileName2) MkDir (FileName2) ChDir (FileName2) ActiveWorkbook.SaveAs FileName:=FileName2 & FileName & "2xlsm.xlsm" _ , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _ FileName2 & "FileName" & "_2xlsm.pdf", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ True End Sub
在这里input图像说明
FileName2
的格式应该固定,以在文件创build中正确连接FileName
。 而且, SaveAs
和ExportAsFixedFormat
的FileName
参数应该是相同的,假设您希望将XLSM和PDF文件保存在一个目录中。
请参阅下面的修改后的代码:
Sub Macro2() ' ' Macro2 Macro ' Dim FileName As String Dim FileName2 As String FileName = Sheet1.TextBox1.Text FileName2 = "C:\TEMP\" & FileName & "\" MsgBox (FileName2) MkDir (FileName2) ChDir (FileName2) ActiveWorkbook.SaveAs FileName:=FileName2 & FileName & "2xlsm.xlsm", _ FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _ FileName2 & FileName & "_2xlsm.pdf", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ True End Sub
您在FileName2 & "\" & FileName, _
缺less& "\" &
(反斜杠) FileName2 & "\" & FileName, _
请参阅完整代码
Option Explicit Sub Macro2() ' ' Macro2 Macro ' Dim FileName As String Dim FileName2 As String FileName = Sheet1.TextBox1.Text FileName2 = ("C:\TEMP\" & FileName) MsgBox (FileName2) MkDir (FileName2) ActiveWorkbook.SaveAs FileName:= _ FileName2 & "\" & FileName, _ FileFormat:=xlOpenXMLWorkbookMacroEnabled, _ CreateBackup:=False ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _ FileName2 & "\" & "FileName", _ Quality:=xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False, OpenAfterPublish:=True End Sub
或者干脆这样做
FileName2 = ("C:\TEMP\" & FileName & "\")