使用VBA的工作表工作簿

时间:2016-10-20 14:04:01

标签: excel vba excel-vba macros

我找到了以下代码来保存工作表作为新工作簿,但我想知道是否可以更改存储名称 每次宏运行到单元格B2中的工作表1上的值和特定文件位置。

我尝试过以下方式,它只是使用文件位置的名称保存文件,而不是将其保存在指定的文件位置。

Sub sb_Copy_Save_Worksheet_As_Workbook() 
    Dim wb As Workbook 
    Set wb = Workbooks.Add 
    ThisWorkbook.Sheets("Sheet2").Copy Before:=wb.Sheets(1) 
    wb.SaveAs "C:\temp\test1.xlsx" 
End Sub

非常感谢任何帮助

非常感谢

杰基

2 个答案:

答案 0 :(得分:1)

假设“Sheet1”在单元格 B2 中有值“test1”(文件名),那么您可以使用以下内容:

Sub sb_Copy_Save_Worksheet_As_Workbook()
    Dim wb As Workbook
    Dim myPath As String
    Dim myFilename As String
    Dim myFileExtension As String
    myPath = "C:\temp\" 'you can change this
    myFileExtension = ".xlsx"
    myFilename = ThisWorkbook.Sheets("Sheet1").Range("B2").Value
    Set wb = Workbooks.Add
    ThisWorkbook.Sheets("Sheet2").Copy Before:=wb.Sheets(1)
    wb.SaveAs myPath & myFilename & myFileExtension
    wb.Close False
End Sub

如果您的手机 B2 已包含文件扩展名(因此在B2中为“test1.xlsx”),只需从代码中删除myFileExtension部分即可。

您要保存文件的文件夹必须存在。如果您需要帮助检查或在宏中创建文件夹,请发表评论。

答案 1 :(得分:0)

尝试将单元格值添加到路径字符串,如下所示:

Sub sb_Copy_Save_Worksheet_As_Workbook()
    Dim wb As Workbook
    Set wb = Workbooks.Add
    ThisWorkbook.Sheets("Sheet2").Copy Before:=wb.Sheets(1)
    wb.SaveAs "C:\temp\" & ThisWorkbook.Sheets("Sheet2").Range("B2").Value
End Sub

即使原始文件为.xlsx,文件扩展名也会默认为.xlsm,因此您无需将其添加到路径字符串中。