2014-01-06 44 views
-1

我了解如何将工作表另存为新的工作簿,但我该如何动态指定名称? 我试过Save AsSave作为文件名,但我不知道如何成功地将一个变量放入名称。如何将工作表另存为具有动态名称的工作簿?

Sub sheetCopy() 

    Dim wbS As Workbook, wbT As Workbook 
    Dim wsS As Worksheet, wsT As Worksheet 
    Dim title As String 

    title = ThisWorkbook.Worksheets("IR General Info").Range("B2").Text 

    Set wbS = ThisWorkbook 'workbook that holds this code 
    Set wsS = wbS.Worksheets("Bulk Upload") 

    wsS.Copy 
    Set wbT = ActiveWorkbook 'assign reference asap 

    Set wsT = wbT.Worksheets("Bulk Upload") 
    wsT.Name = "Exported_BulkUpload" 'rename sheet 

    wbT.SaveAs wbS.Path & "\" & title & ".xlsx" 

End Sub 

所以,如果我让标题像引用“嘘” - 这个代码的作品。但是,如何根据变量标题进行更改?

+0

你通过使用'F8'代码踩?值是否被分配给'title'? – whytheq

+0

“*所以如果我使用引号使标题变得像”boo“一样 - 这段代码就可以工作,但是我怎样才能根据变量标题来改变它?*”你必须澄清这一点。它在'title'的值是''boo''时起作用,但不是在什么时候......什么? –

回答

0

试试这个:

Sub sheetCopy() 

    Dim wbS As Workbook, wbT As Workbook 
    Dim wsS As Worksheet, wsT As Worksheet 
    Dim title As String 

    title = ThisWorkbook.Worksheets("IR General Info").Range("B2").Text 

    '<<step through the macro and once you have gone past this point do Ctl+G to get the immediate window then type ?title in it and press enter. Or just hover your mouse over title in this script - has a value been assigned to it? 

    '<<the following line is not required - ThisWorkbook object is sufficient: 
    'Set wbS = ThisWorkbook 'workbook that holds this code 

    Set wsS = ThisWorkbook.Worksheets("Bulk Upload") 

    wsS.Copy '<<I've changed below here so it is saved straight away 
    ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & title & ".xlsx" 
    Set wbT = excel.workbooks(title & ".xlsx") 'assign reference 

    Set wsT = wbT.Worksheets("Bulk Upload") 
    wsT.Name = "Exported_BulkUpload" 'rename sheet 


End Sub 
+0

谢谢你,你的代码更加简洁。此外,你帮助我认识到,它没有起作用的原因是因为变量“标题”中有反斜杠(无效的文件名)。那谢谢啦! – user3144644

+0

(好吧 - 如果我的回答有助于回答这个问题,您可以随时将其标记为正确的...或者只是投票,如果您不感到如此慷慨!) – whytheq

1

您是否尝试将title变量分配给Range("B2").Value而不是Range("B2").Text

如果这些文件在同一文件夹,您可能能够使用wbT.SaveAs FileName:=title代替

+0

是的,我试过文字和值无济于事。不幸的是,这些文件可能不在同一个文件夹中。 – user3144644

相关问题