用像xlsm文件这样的模板创build文件夹和新的* .xlsx文件

我有这个代码创build一个文件夹,并保存其中的实际文件,但我希望它只保存一份副本只有一张表 。 这样,代码文件就像一个模板…

你写你的东西,然后按下button,它会在一个新的文件夹中保存一张.xlsx文件(带有表格的表格)…所以你可以用数百个文件和文件夹来完成。

所以最后它应该像这样工作:

  1. 您打开下面的代码所在的.xlsm文件。
  2. 你必须把一张表格(以后应该“导出”)和一份表格复制到表格中。
  3. 当您填写表单并按下button并将表单保存在新文件夹中作为.xlsx,您可以继续在.xlsm文件中。

如果不清楚,请询问。

我现在的代码

Sub Macro1() Dim strFilename, strDirname, strPathname, strDefpath As String On Error Resume Next ' If directory exist goto next line strDirname = Range("D81").Value ' New directory name strFilename = Range("D8").Value 'New file name strDefpath = Application.ActiveWorkbook.Path 'Default path name If IsEmpty(strDirname) Then Exit Sub If IsEmpty(strFilename) Then Exit Sub MkDir strDefpath & "\" & strDirname strPathname = strDefpath & "\" & strDirname & "\" & strFilename 'create total string ActiveWorkbook.SaveAs Filename:=strPathname & ".xlsm", _ FileFormat:=xlOpenXMLWorkbookMacroEnabled, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False End Sub 

这里的问题是我有像1102,1103这样的forms的名称。 下一步是有文件名称1102_1和1102_2,他们都应该在文件夹1102 …

这是有点出于我的知识,请帮助我的家伙:)招呼

现在我使用下面的代码问题是,它总是closuresxlsm文件真正烦人,当我重新打开它想要更新文件,我需要删除,但我不知道如何:/ …只有它应该导出/保存一张特殊纸张

 Private Sub CommandButton1_Click() Dim strFilename As String, _ strDirname As String, _ strPathname As String, _ strDefpath As String, _ SheetToExport As String, _ WbMaster As Workbook, _ WbCopy As Workbook On Error Resume Next ' If directory exist goto next line strDirname = Range("W12").Value ' New directory name strFilename = Range("D8").Value 'New file name Set WbMaster = Application.ActiveWorkbook SheetToExport = Range("A1").Value 'Or specify UserForm output strDefpath = WbMaster.Path 'Default path name If IsEmpty(strDirname) Then Exit Sub If IsEmpty(strFilename) Then Exit Sub MkDir strDefpath & "\" & strDirname strPathname = strDefpath & "\" & strDirname & "\" & strFilename 'create total string WbMaster.Sheets(SheetToExport).Copy Set WbCopy = Application.ActiveWorkbook WbCopy.SaveAs Filename:=strPathname & ".xlsx", _ FileFormat:=xlOpenXMLWorkbook, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False WbCopy.Close End Sub 

小心你的variables声明!

你在OP中的做法(原文):

strFilenamestrDirnamestrPathname被声明为Variant而不是String

你仍然可以使用它们,但是它会占用更多的内存,如果你使用它们作为参数,可能会出现问题。


看代码:

 Dim strFilename As String, _ strDirname As String, _ strPathname As String, _ strDefpath As String, _ SheetToExport As String, _ WbMaster As Workbook, _ WbCopy As Workbook On Error Resume Next ' If directory exist goto next line strDirname = Range("D81").Value ' New directory name strFilename = Range("D8").Value 'New file name Set WbMaster = Application.ActiveWorkbook SheetToExport = Range("A1").Value 'Or specify UserForm output strDefpath = WbMaster.Path 'Default path name If IsEmpty(strDirname) Then Exit Sub If IsEmpty(strFilename) Then Exit Sub MkDir strDefpath & "\" & strDirname strPathname = strDefpath & "\" & strDirname & "\" & strFilename 'create total string WbMaster.Sheets(SheetToExport).Copy Set WbCopy = Application.ActiveWorkbook WbCopy.SaveAs Filename:=strPathname & ".xlsx", _ FileFormat:=xlOpenXMLWorkbook, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False ClosingWb = MsgBox("Do you wish to close the exported file?",vbYesNo,"Close exported file") If ClosingWb <> vbNo Then WbCopy.Close