Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何将工作表另存为具有动态名称的工作簿?_Excel_Vba - Fatal编程技术网

Excel 如何将工作表另存为具有动态名称的工作簿?

Excel 如何将工作表另存为具有动态名称的工作簿?,excel,vba,Excel,Vba,我知道如何将工作表另存为新工作簿,但如何动态指定名称? 我尝试了另存为和另存为文件名,但我不知道如何成功地将变量放入名称中 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")

我知道如何将工作表另存为新工作簿,但如何动态指定名称? 我尝试了
另存为
另存为
文件名,但我不知道如何成功地将变量放入名称中

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

所以,如果我用引号把标题做成类似“boo”的东西,这段代码就行了。但是如何根据变量标题进行更改?

您是否尝试将
标题
变量指定给
范围(“B2”)。值
而不是
范围(“B2”)。文本

如果文件位于同一文件夹中,您可能可以使用
wbT.SaveAs FileName:=title

尝试以下操作:

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
Sub-sheetCopy()
将wbS设置为工作簿,将wbT设置为工作簿
将wsS作为工作表,wsT作为工作表
将标题设置为字符串
标题=此工作簿。工作表(“IR常规信息”)。范围(“B2”)。文本

是的,我试过文本和值,但都没有用。很遗憾,这些文件可能不在同一文件夹中。您是否使用
F8
逐步浏览了代码?是否为
title
指定了一个值?“因此,如果我用引号将title设置为类似于“boo”的值,则此代码有效。但如何根据变量title进行更改?”您必须澄清这一点。当
title
的值为
“boo”
时,它工作,但当。。。什么?谢谢你,你的代码更简洁。此外,您帮助我认识到它不起作用的原因是因为变量“title”中有反斜杠(无效的文件名)。谢谢!(好吧,如果我的回答有助于回答这个问题,你可以随时给它打上正确的分数……或者,如果你觉得不够慷慨,就直接投票吧!)